WEB开发网
开发学院操作系统Linux/Unix AIX FAQ 第 5 期 阅读

AIX FAQ 第 5 期

 2009-09-06 00:00:00 来源:WEB开发网   
核心提示:磁盘识别在 AIX 上进行磁盘管理的首要任务就是要识别出系统上的磁盘,包括个数、大小、配置情况等信息,AIX FAQ 第 5 期,同时在 AIX 识别磁盘一般是不需要重新启动服务器的,新设备可以在线地进行添加,也就是取消Disk quorum,当然想恢复这个功能的话可以使用 –Qy ,以下提供一些命令来实现

磁盘识别

在 AIX 上进行磁盘管理的首要任务就是要识别出系统上的磁盘,包括个数、大小、配置情况等信息。同时在 AIX 识别磁盘一般是不需要重新启动服务器的,新设备可以在线地进行添加。以下提供一些命令来实现磁盘的发现和信息的查看。

表 1. 磁盘管理命令

功能 命令
磁盘识别 ledev – Cc disk
厂商信息 lscfg -vl
磁盘分析 diag

清单 1 演示了在运行 cfgmnr 命令以后执行磁盘识别的结果。

清单 1. 磁盘识别

    
 # lsdev -Cc disk 
 hdisk0 Available Virtual SCSI Disk Drive 
 # cfgmgr 
 # lsdev -Cc disk 
 hdisk0 Available Virtual SCSI Disk Drive 
 hdisk1 Available Virtual SCSI Disk Drive 

清单 2. 相同环境下单独执行 lsdev 的输出

    
 #lsdev -Cc disk 
 hdisk0 Available 3b-08-00-8,0 16 Bit LVD SCSI Disk Drive 
 hdisk1 Available 3b-08-00-10,0 16 Bit LVD SCSI Disk Drive 

Logical Volume Manager 基本概念和术语

AIX 系统上的磁盘系统是由 Logical Volume Manager (LVM)来进行统一管理的。这个系统和 Windows 以及一些 Linux 的磁盘管理系统存在着不少差别,要想了解 AIX 的磁盘管理系统,就必须先要了解 LVM 相关的知识。

LVM 的基础概念包括 physical volumes(PV),volume groups(VG),physical partitions(PP),logical volumes(LV),logical partitions(LP),文件系统和裸设备(raw devices)。

图 1. 大致描述了一下 LVM 里各个概念之间的关系

AIX FAQ 第 5 期

每个单独的硬盘驱动器称为一个 PV(physical volume,PV),并具有一个名称(例如:hdisk0、hdisk1 或 hdisk2)。

所有 PV 属于一个名为 rootvg 的卷组(volume group,VG)。

一个卷组中的所有 PV 划分为相同大小的 PP(physical partition,PP)。

每个卷组中定义了一个或多个逻辑卷(logical volume,LV)。

具体的各个概念的解释和相互关系将在后面详细描述。

LVM 配置数据

所谓的 LVM 配置数据就是能够描述当前系统 LVM 情况的信息,属于系统十分重要的系统,系统管理员应当经常关注。这些数据的配置不当可能导致系统的宕机,以及服务的无法访问。

Object Data Manager 数据库

Object Data Manager (ODM)数据库保存着 AIX 系统大部分的配置数据,其中也包括磁盘的 PV ,VG ,LV 信息。ODM 数据库中的数据是和 Volume Group Descriptor Area (VGDA) 中信息的景象,同时它还同步了 Logical Volume Control Block (LVCB) 的信息,这两个重要的磁盘配置数据会在下面介绍到。

Volume Group Descriptor Area

VGDA 位于每个 PV 的最开始位置,它包含着 PV 所属的 vg 中所有 PV 和 lv 的描述信息。VGDA 可以被所有的 LVM 命令修改。操作系统可以通过它知道 vg 中包括那些 PV 和 lv。

每一个磁盘都至少包括一份 VGDA 数据。这在做 vary on 操作时候十分重要。VGDA 的时间戳用来决定哪个 VGDA 正在影响整个 vg 的属性。当然 vg 中的一个磁盘损坏后,VGDA 将无法更新,只有当替换了新的磁盘并执行 vary on 操作后,才能对新磁盘进行 VGDA 的同步。

VGDA 在磁盘被分配为 PV 时候生成,当 PV 被分配当一个 vg 以后,真正的群组数据才被分配给 VGDA 中,当 PV 被从 vg 中删除以后,相应的群组信息也会被清楚掉。

Volume Group Status Area

VGSA 包含着 PP 和 PV 的信息,多用于监视和维护数据的同步复制操作。VGSA 和 VGDA 都拥有重要的起始和结束时间戳,这个时间戳可以让 LVM 在执行 vary on 操作时知道哪些 VGSA 和 VGDA 是最新更新的。LVM 还需要所选的 VGSA 的时间戳与 VGDA 是一致的。

Logical Volume Control Block

LVCB 包含这 LV 的重要信息,如 LP 的数量或者磁盘分配策略。LVCB 的架构和放置的位置受所属的 VG 的类型决定。标准的 VG 中, LVCB 位于 LV 的用户数据第一个块。对于大型的 VG,还有一些 LVCB 会位于磁盘的 VGDA 中。在可伸缩的 VG 中,所有 LV 相关的数据都会作为 LVCB 的一部分存放在 VGDA 中。

下面的例子会使用 getlvcb 命令来查看逻辑卷 hd2 上的 LVCB 信息:

清单 3. getlvcb 命令

    
 # getlvcb -TA hd2 
 AIX LVCB 
 intrapolicy = c 
 copies = 1 
 interpolicy = m 
 lvid = 00c4790e00004c0000000005491642c0.5 
 lvname = hd2 
 label = /usr 
 machine id = 4790E4C00 
 number lps = 33 
 relocatable = y 
 strict = y 
 stripe width = 0 
 stripe size in exponent = 0 
 type = jfs2 
 upperbound = 32 
 fs = 
 time created = Sun Sep 20 17:50:40 1970 
 time modified = Sun Sep 20 18:41:17 1970 

Disk quorum(磁盘定额)

每个 VG 中的磁盘都至少有一个 VGDA 或 VGSA 。磁盘中 VGDA 的数量是由 VG 中包含的磁盘数量决定的,如下表所示。

表 2. VGDA 数量

条件 VGDA 数量
VG 中只有 1 个磁盘 磁盘上有 2 个 VGDA。
VG 中有 2 个磁盘 第一个磁盘上有 2 个 VGDA,第二个磁盘有 1 个 VGDA。
VG 中有 3 个以上磁盘 每个磁盘上有各有一个 VGDA。

定额是一种状态,即卷组中 51% 或更多的 PV 可访问。定额是对活动的卷组描述符区域和卷组状态区域 (VGDA/VGSA) 数量的表决。

定额确保在发生磁盘故障时的数据完整性。

当在单个磁盘之上创建一个卷组时,该卷组最初有两个 VGDA/VGSA 区域驻留在该磁盘上。如果某个卷组由两个磁盘组成,则一个磁盘仍然具有两个 VGDA/VGSA 区域,但是另一个磁盘只有一个 VGDA/VGSA。当卷组由三个或更多个磁盘组成时,则每个磁盘仅分配一个 VGDA/VGSA。

图 2 显示了由于过多的磁盘及其 VGDA/VGSA 不可访问而致使 51% 的大多数 VGDA/VGSA 不再存在时丧失定额的情况。

图 2. 磁盘定额

AIX FAQ 第 5 期

当定额丧失时,卷组将自身 vary off,逻辑卷管理器 (LVM) 不再能够访问其中的磁盘。这样可以防止对该卷组进行进一步的磁盘 I/O,从而防止数据丢失或假设在发生物理问题时已将数据写入。此外,由于卷组已 vary off,用户会在错误日志中得到通知,从而获悉发生了硬件错误并且必须执行维修。

当您希望使用磁盘镜像来确保高可用性时,这具有一些影响。在一个两磁盘镜像的系统中,如果第一个磁盘发生故障,则会丧失 VGDA 的 66%,并且整个 PV 将变得不可用。

Physical volumes

PV 具有以下的一些特性:

每一个单独的磁盘驱动器就是一个 PV,它们都有自己单独的名字,如 hdisk0 ,hdisk1。

一个或多个 PV 可以组成一个 VG,一个 PV 只能属于唯一一个 VG。

不能将 PV 的一部分分配给一个 VG。

PV 可以分配给一个不属于同一类型的 VG,例如 SCCI 的 PV 分配到一个 SSA 的 VG。

PV 中的存储空间有 PP 组成。

VG 中的 PV 拥有相同的 PP 值。

PV 的常用命令:

lspv (smit lspv):  列出 PV 的详细信息。

chpv (smit chpv):改变 PV 的属性。

清单 4 演示了 lspv 命令的使用方法。

清单 4. lspv 命令

    
 # lspv 
 hdisk0 00c4790ea0a455f0 rootvg 
 active 
 hdisk1 00c4790ecc77fd19 rootvg 
 active 
 
 # lspv hdisk0 
 PHYSICAL VOLUME: hdisk0 VOLUME GROUP: rootvg 
 PV IDENTIFIER: 00c4790ea0a455f0 VG IDENTIFIER 
 00c4790e00004c0000000005491642c0 
 PV STATE: active 
 STALE PARTITIONS: 0 ALLOCATABLE: yes 
 PP SIZE: 32 megabyte(s) LOGICAL VOLUMES: 10 
 TOTAL PPs: 639 (20448 megabytes) VG DESCRIPTORS: 2 
 FREE PPs: 572 (18304 megabytes) HOT SPARE: no 
 USED PPs: 67 (2144 megabytes) MAX REQUEST: 128 
 kilobytes 
 FREE DISTRIBUTION: 127..128..61..128..128 
 USED DISTRIBUTION: 01..00..66..00..00 

下面是上述示例中的各个字段的含义。

PHYSICAL VOLUME 指定的 PV 的名称。

PV IDENTIFIER PV 标识符(在系统中是唯一的)。

PV STATE 该 PV 的状态。此状态定义了该 PV 是否可用于逻辑输入 / 输出操作。使用 chpv 命令可以更改此状态。

STALE PARTITIONS 过时分区的数量。

PP SIZE PP 的大小。这是卷组的一个特征,并且仅在创建卷组时作为 mkvg 命令的一个参数来进行设置。缺省大小为 4 MB。

TOTAL PPs 该 PV 上可用的 PP 总数,同时包括空闲和已使用的分区。

FREE PPs 该 PV 上可用的空闲分区数量。

USED PPs 该 PV 上已使用的分区的数量。

FREE DISTRIBUTION 此字段按照空闲 PP 所在的 PV 上的各个部分,总结了空闲 PP 在整个 PV 中的分布。

USED DISTRIBUTION 与 FREE DISTRIBUTION 相同,只不过是显示已使用的 PP 的分布。

VOLUME GROUP 该 PV 所分配到的卷组的名称。

VG IDENTIFIER 该 PV 所分配到的卷组的数字标识符。

ALLOCATABLE 是否允许系统分配该 PV 上的新 PP。

LOGICAL VOLUMES 该卷组中的逻辑卷的数量。

VG DESCRIPTORS 驻留在该特定 PV 上的该卷组的 VGDA 数量。

Volume groups

一个 VG 中可以拥有多个不同大小和类型的 PV。VG 可以分为三种类型,它们拥有不同的容量,如表 3 所示。

表 3. 不同 VG 的不同参数

VG 类型 最大的 PV 个数 最大的 LV 个数 每个 LV 拥有的最大 PP 个数 单个 PP 的最大容量
Normal VG 32 256 32512 1Gb
Big VG 128 512 130048 1Gb
Scalable VG 1024 4096 2097152 128Gb

VG 的相关命令如下表所示。

表 4.VG 相关命令

命令 smit 快速命令 功能
lsvg smit lsvg 显示 VG 的信息。
mkvg smit mkvg 创建 VG。
chvg smit chvg 设置 VG 特性。
extendvg smit extendvg 向 VG 中增加新的磁盘。
reducevg smit reducevg 删除 VG 中的磁盘。
varyonvg smit varyonvg 激活 VG。
varyoffvg smit varyoffvg 让 VG 处于非激活状态。
exportvg smit exportvg 导出 VG 的定义。
importvg smit importvg 导入 VG 的定义。

下面的示例简单演示了 VG 命令的用法。

清单 5. VG 命令演示

    
显示 VG 
 # lsvg 
 rootvg 
 altinst_rootvg 
 
 # lsvg rootvg 
 VOLUME GROUP: rootvg       VG IDENTIFIER: 
 00c4790e00004c0000000005491642c0 
 VG STATE: active         PP SIZE: 32 
 megabyte(s) 
 VG PERMISSION: read/write    TOTAL PPs: 1278 
 (40896 megabytes) 
 MAX LVs: 256           FREE PPs: 1202 
 (38464 megabytes) 
 LVs: 13              USED PPs: 76 (2432 
 megabytes) 
 OPEN LVs: 10           QUORUM: 2 
 TOTAL PVs: 2           VG DESCRIPTORS: 3 
 STALE PVs: 0           STALE PPs: 0 
 ACTIVE PVs: 2           AUTO ON: yes 
 MAX PPs per VG: 32512 
 MAX PPs per PV: 1016        MAX PVs: 32 
 LTG size (Dynamic): 128 kilobyte(s) AUTO SYNC: no 
 HOT SPARE: no            BB POLICY: 
 Relocatable 
 
创建 VG: 
 # mkvg -y new_vg hdisk1 
 new_vg 
 
将 VG 变为 Big VG: 
 
 /usr/sbin/chvg -a y -Q y -B itso 
 
扩展 VG 的命令: 
 # extendvg -f new_vg hdisk2 
 0516-1254 extendvg: Changing the PVID in the ODM. 
 
当您把 VG 中的最后一块磁盘删除以后,VG 也自动的被删除。 
 # reducevg -df new_vg hdisk1 
 ldeletepv: Volume Group deleted since it contains no physical volumes. 
 
导出(exporting)和导入(importing)VG 
 
 # lsvg 
 rootvg 
 itsovg 
 # varyoffvg itsovg 
 Chapter 4. Disks and file systems 105 
 # exportvg itsovg 
 # lsvg 
 rootvg 
 # importvg -y itsovg -f hdisk1 
 itsovg 
 # varyonvg itsovg 
 # lsvg 
 rootvg 
 itsovg 

Logical volumes

LV 由一个或多个 LP 组成,每一个 LP 中必须至少包含一个 PP。一般情况下 LP 的大小和 PP 相同,但是 LP 也可以同时在多个 PP 上保留副本,达到冗余的目的。LV 上的数据以文件的形式分别存放在不同的目录中,这就是所谓的“文件系统”。当然,LV 的数据也可以裸 LV 的形式存在,当然,只有能够正确地使用它们的程序才支持这种格式。

PV 和 VG 是不能被用户和程序直接使用的,从而无法提供给它们相应的磁盘空间。只有 LV 才能让程序和用户来进行相应的存储,下面的表列出了常用的 LV 命令。

表 5. LV 相关命令

命令 smit 快速路径 功能
lslv smit lslv 列出 LV 的相关信息。
mklv smit mklv 创建 LV。
chlv smit chlv 修改 LV 的属性。
rmlv smit rmlv 删除 LV。
extendlv smit extendlv 扩展 LV。

清单 6. LV 命令演示

    
创建 LV: 
 # mklv -t jfs2 itsovg 1G 
 fslv00 
 
 -t:指定 文件系统的格式 
 itsovg:VG 的名称 
 1G:LV 的大小 
 fslv00:生成的 LV 的名称 
 
 
查看 LV 的信息: 
 # lslv fslv00 
 LOGICAL VOLUME: fslv00       VOLUME GROUP: itsovg 
 LV IDENTIFIER: 00c4790e00004c000000010acd6f6546.1 PERMISSION: 
 read/write 
 VG STATE:    active/complete  LV STATE: closed/syncd 
 TYPE: jfs2               WRITE VERIFY: off 
 MAX LPs: 512              PP SIZE: 32 
 megabyte(s) 
 COPIES: 1                SCHED POLICY: parallel 
 LPs: 32                 PPs: 32 
 STALE PPs: 0              BB POLICY: relocatable 
 INTER-POLICY: minimum         RELOCATABLE: yes 
 INTRA-POLICY: middle         UPPER BOUND: 32 
 MOUNT POINT: N/A LABEL: None 
 MIRROR WRITE CONSISTENCY: on/ACTIVE 
 EACH LP COPY ON A SEPARATE PV ?: yes 
 Serialize IO ?: NO 

磁盘镜像

磁盘镜像就是对一个 LV 中的 LP 的多个 PP 进行同步操作,让它们保持数据的一致。这可以增加数据的可用性。

AIX 和 LVM 提供了 LV 级别的磁盘镜像功能,可以让 LV 在创建时就已经实现了镜像。

mklv 命令可以让您为 1 个 LV 选择 1 个或 2 个其它的 LV 来构建镜像。同时也可以通过 mklvcopy 命令来实现对已存在的 LV 创建镜像的功能。以下的因素可以进一步增加镜像中的数据可用性:

数据的副本数量:

3 个副本数量的可用性肯定会高于 2 个副本的。

副本的存放位置:

尽量将 LP 的副本存放在不同的 PV 上,这样可以增加数据的可用性,不至于在物理磁盘出现问题事,整个镜像都不可用。

mirrorvg 命令可以实现一个 VG 中所有 LV 的镜像。当然,这也可以通过对 VG 中所有的 LV 一一使用 mklvcopy 来实现,但首先必须保证目标 LV(被镜像的 LV)也是这个 VG 中的成员。

表 6 列出了常用的镜像命令。

表 6. 镜像命令

命令 smit 快速路径 功能
mklvcopy smit mklvcopy 为 LV 创建副本
rmlvcopy smit rmlvcopy 为 LV 去除副本
mirrorvg smit mirrorvg 为 VG 上的已存在的 LV 创建副本
unmirrorvg smit unmirrorvg 去除指定 VG 或磁盘上的副本
syncvg smit syncvg 同步新添加的 LV 副本

清单 7 演示了以上一些镜像命令的使用方法。

清单 7. 镜像命令演示

    
查看系统的 PV。 
 # lspv 
 hdisk0 00c4790ea0a455f0 rootvg 
 active 
 hdisk1 00c4790ecc77fd19 None 
 hdisk2 00c4790ecd611578 altinst_rootvg 
 hdisk3 00c4790ecd54055d itso 
 active 
 # 
为 rootvg 扩展,增加 hdisk1 
 # extendvg -f rootvg hdisk1 
重新查看系统的 PV 
 # lspv 
 hdisk0 00c4790ea0a455f0 rootvg 
 active 
 hdisk1 00c4790ecc77fd19 rootvg 
 active 
 hdisk2 00c4790ecd611578 altinst_rootvg 
 hdisk3 00c4790ecd54055d itso 
 active 
 # 
为 rootvg 中的 2 个 PV 进行镜像操作,因为 rootvg 为启动 VG,所以镜像后各个 PV 都可以作为启动的 PV。 
 # /usr/sbin/mirrorvg rootvg hdisk0 hdisk1 
 0516-1124 mirrorvg: Quorum requirement turned off, reboot system for 
 this 
 to take effect for rootvg. 
 0516-1126 mirrorvg: rootvg successfully mirrored, user should perform 
 bosboot of system to initialize boot records. Then, user must 
 modify 
 bootlist to include: hdisk0 hdisk1. 
 # bosboot -ad /dev/hdisk1 
 bosboot: Boot image is 25166 512 byte blocks. 
 bootlist -m normal hdisk0 hdisk1 

磁盘空间

如果您系统的磁盘空间接近耗尽的话,您可以采用以下几种方法来进行修补。

自动跟踪并清除不需要的文件

限制用户对于特定目录的访问

添加新的磁盘以增加系统空间

要执行以上的命令,需要具有 root 权限。

自动跟踪并清除不需要的文件

使用 skulker 命令可以实现对文件系统中不重要文件的清理。

使用以下的命令:

skulker – p

可以实现清除的功能。清楚的对象会包括:

/tmp 目录下的所有文件

超过特定日期的文件

out 文件

core 文件

ed.hup 文件

限制用户对于特定目录的访问

您还可以通过限制用户对于特定目录的访问以及监视磁盘的使用量来释放更多的磁盘空间。

通过以下命令可以限制用户对于特定目录的访问:

chmod 655 目录名称

这个命令设置了只有目录的属主才能进行读写操作,其他用户只有读的权限。“目录名称”为所要限制的目录的完整路径。

对于某一个用户的磁盘使用量的监视可以通过在 /var/spool/cron/crontabs/adm 文件中增加以下条目来实现:

0 2 * * 4 /usr/sbin/acct/dodisk

这个条目的意思是:在每周四的凌晨 2 点执行 dodisk 命令。dodisk 命令可以实现磁盘使用量的统计。缺省地,dodisk 命令会对 /etc/filesystems 文件中指定的文件系统进行统计,当然,这些文件系统的定义条目中必须增加“account=true”的标识,例如下面的示例:

/scratch: 
     dev    = /dev/fslv02 
     vfs    = jfs2 
     log    = INLINE 
     mount   = true 
    account  = true 
  

添加新的磁盘以增加系统空间

您可以通过挂载其他磁盘驱动器的空间来扩展系统磁盘容量。主要是通过 mount 命令来实现的,如下示例所示:

mount -n nodeA -vnfs /usr/spool /usr/myspool 
 

将 VG 设置为无 quorum

在 VG 中只有两个 PV 时,如果其中一个磁盘不可用,而这个磁盘又恰好是拥有 2 个 VGDA 的那块,则整个 VG 就将不可用,这都是 Disk quorum 策略的限制。当然,您可以通过取消 Disk quorum 策略来避免这种情况的发生。

这种操作一般适用于以下情况:

拥有 2 块磁盘的 VG,并做了 LV 镜像。

拥有 3 块磁盘的 VG,并做了 1 次或 2 次 LV 镜像。

这样就可以保证在 VG 中的一块磁盘不可用的时候,整个 VG 还能够继续工作。

具体使用的命令是 chvg:

 chvg -Qn vgname 

这里 -Qn 是指将 quorum 设置为 n,也就是取消Disk quorum,当然想恢复这个功能的话可以使用 –Qy 。 vgname 指的就是目标 VG 名称。

Tags:AIX FAQ

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接