级别: 初级
developerWorks 中国, 编辑团队, IBM
2009 年 8 月 18 日
磁盘管理是 AIX 系统管理的基础。由于 AIX 磁盘的管理是不同于其他主流系统的,所以对于很多初学者来说还是需要一定的时间来好好研究的。在本期 AIX FAQ 中,我们着重向您介绍一些和 AIX 磁盘管理相关的基础知识,主要目的是让您对这方面的内容有一个基础的认识,并消除一些经常会出现的误解。当然,如果您想跟深入地了解磁盘管理方面的内容,请参考我们推荐的资源以及相关的 IBM 红皮书。
|
您可以通过访问"AIX FAQ”来了解更多和 AIX 相关的基础知识:
| |
在 AIX 上进行磁盘管理的首要任务就是要识别出系统上的磁盘,包括个数、大小、配置情况等信息。同时在 AIX 识别磁盘一般是不需要重新启动服务器的,新设备可以在线地进行添加。以下提供一些命令来实现磁盘的发现和信息的查看。
功能 |
命令 |
磁盘识别 |
ledev – Cc disk |
厂商信息 |
lscfg -vl |
磁盘分析 |
diag |
清单 1 演示了在运行 cfgmnr 命令以后执行磁盘识别的结果。
# 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
|
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)。
- 每个单独的硬盘驱动器称为一个 PV(physical volume,PV),并具有一个名称(例如:hdisk0、hdisk1 或 hdisk2)。
- 所有 PV 属于一个名为 rootvg 的卷组(volume group,VG)。
- 一个卷组中的所有 PV 划分为相同大小的 PP(physical partition,PP)。
- 每个卷组中定义了一个或多个逻辑卷(logical volume,LV)。
具体的各个概念的解释和相互关系将在后面详细描述。
所谓的 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 信息:
# 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 中包含的磁盘数量决定的,如下表所示。
条件 |
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 不再存在时丧失定额的情况。
当定额丧失时,卷组将自身 vary off,逻辑卷管理器 (LVM) 不再能够访问其中的磁盘。这样可以防止对该卷组进行进一步的磁盘 I/O,从而防止数据丢失或假设在发生物理问题时已将数据写入。此外,由于卷组已 vary off,用户会在错误日志中得到通知,从而获悉发生了硬件错误并且必须执行维修。
当您希望使用磁盘镜像来确保高可用性时,这具有一些影响。在一个两磁盘镜像的系统中,如果第一个磁盘发生故障,则会丧失 VGDA 的 66%,并且整个 PV 将变得不可用。
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 命令的使用方法。
# 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 数量。
一个 VG 中可以拥有多个不同大小和类型的 PV。VG 可以分为三种类型,它们拥有不同的容量,如表 3 所示。
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 的相关命令如下表所示。
命令 |
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 命令的用法。
显示 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
|
|
|
LV 由一个或多个 LP 组成,每一个 LP 中必须至少包含一个 PP。一般情况下 LP 的大小和 PP 相同,但是 LP 也可以同时在多个 PP 上保留副本,达到冗余的目的。LV 上的数据以文件的形式分别存放在不同的目录中,这就是所谓的“文件系统”。当然,LV 的数据也可以裸 LV 的形式存在,当然,只有能够正确地使用它们的程序才支持这种格式。
PV 和 VG 是不能被用户和程序直接使用的,从而无法提供给它们相应的磁盘空间。只有 LV 才能让程序和用户来进行相应的存储,下面的表列出了常用的 LV 命令。
命令 |
smit 快速路径 |
功能 |
lslv |
smit lslv |
列出 LV 的相关信息。 |
mklv |
smit mklv |
创建 LV。 |
chlv |
smit chlv |
修改 LV 的属性。 |
rmlv |
smit rmlv |
删除 LV。 |
extendlv |
smit extendlv |
扩展 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 创建镜像的功能。以下的因素可以进一步增加镜像中的数据可用性:
mirrorvg 命令可以实现一个 VG 中所有 LV 的镜像。当然,这也可以通过对 VG 中所有的 LV 一一使用 mklvcopy 来实现,但首先必须保证目标 LV(被镜像的 LV)也是这个 VG 中的成员。
表 6 列出了常用的镜像命令。
命令 |
smit 快速路径 |
功能 |
mklvcopy |
smit mklvcopy |
为 LV 创建副本 |
rmlvcopy |
smit rmlvcopy |
为 LV 去除副本 |
mirrorvg |
smit mirrorvg |
为 VG 上的已存在的 LV 创建副本 |
unmirrorvg |
smit unmirrorvg |
去除指定 VG 或磁盘上的副本 |
syncvg |
smit syncvg |
同步新添加的 LV 副本 |
清单 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 文件
要想了解更多的 skulker 使用方法,请访问以下地址:
您还可以通过限制用户对于特定目录的访问以及监视磁盘的使用量来释放更多的磁盘空间。
- 通过以下命令可以限制用户对于特定目录的访问:
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
|
具体 mount 命令的使用可以查看一下地址:
在 VG 中只有两个 PV 时,如果其中一个磁盘不可用,而这个磁盘又恰好是拥有 2 个 VGDA 的那块,则整个 VG 就将不可用,这都是 Disk quorum 策略的限制。当然,您可以通过取消 Disk quorum 策略来避免这种情况的发生。
这种操作一般适用于以下情况:
- 拥有 2 块磁盘的 VG,并做了 LV 镜像。
- 拥有 3 块磁盘的 VG,并做了 1 次或 2 次 LV 镜像。
这样就可以保证在 VG 中的一块磁盘不可用的时候,整个 VG 还能够继续工作。
具体使用的命令是 chvg:
这里 -Qn 是指将 quorum 设置为 n,也就是取消 Disk quorum,当然想恢复这个功能的话可以使用 –Qy 。 vgname 指的就是目标 VG 名称。
学习
- 本 FAQ 的部分内容是参考了 IBM 红皮书“”,它整体地介绍了 AIX 在网络通信方面的各项内容,如网络基本概念,网络基本管理,网络服务等,是一个很好的学习 AIX 网络管理的资料。
- AIX FAQ 第 1 期:作为第 1 期,主要涉及的内容还是一些比较基础的问题,如基础概念,基本操作等。
- AIX FAQ 第 2 期:本期我们将向您介绍一些 AIX 网络概念和管理方面的常见问题及其解决方法。例如在 AIX 上对网络适配器的定义和操作、AIX 的各种网络接口定义、如何进行域名解析等操作。
- AIX FAQ 第 3 期:本期继续向您介绍一些和网络管理相关的技巧,其中包括 r 命令的介绍、网络启动以及相关的配置文件等。
- AIX FAQ 第 4 期:本期的 AIX FAQ 我们为您准备了一些和 PowerHA 相关的常见问题和解答,希望您通过这些内容可以快速地了解这个产品。
- AIX 5L 磁盘性能优化,第 1 部分:磁盘 I/O 概述和长期监视工具(sar、nmon 和 topas):本文介绍了更多关于直接 I/O、并发 I/O、异步 I/O 的内容,以及每种 I/O 实现方法的最佳实践。本系列文章共有三篇,介绍了关于 AIX® 磁盘和 I/O 子系统的内容,重点关注于在优化磁盘 I/O 性能时的各种挑战。
- AIX 5L 磁盘性能优化,第 2 部分:监视逻辑卷并分析结果:本文介绍了如何在创建您的逻辑卷之前使用合适的磁盘布置以提高磁盘性能。是本系列文章的第 2 部分(请参见参考资料)关注于监视逻辑卷,以及用于分析结果的命令和实用工具(iostat、lvmstat、lslv、lspv 和 lsvg)。
- AIX 5L 磁盘性能优化 : 第 3 部分:本系列文章的第 3 部分将介绍如何提高整体文件系统性能,如何使用 ioo 命令优化您的系统,以及如何使用 filemon 和 fileplace 实用工具。
- AIX 认证专题:在这里,我们会陆续推出一系列的认证文章和教程,帮助您能够更好地准备认证考试。当然,这些内容也是很好的学习 AIX 的资料,可以让您更加系统地了解这个操作系统,从而一步步成为一个合格的管理员。
- AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为你把本专区的所有专题进行汇总,让您更方便的找到你需要的内容。
- 系统管理员工具包:“系统管理员工具包”系列文章主要专注于一些方法和技术,可以帮助您最大限度地利用各种 UNIX 环境中可用的工具,简化异构环境下的系统管理任务。
- AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
- AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
- AIX 5L Wiki:发现 AIX 相关技术信息的协作环境。
- 按主题搜索“AIX and UNIX”库:
- Safari 书店:访问此电子参考资料库可查找特定的技术资源。
- developerWorks 技术活动 和 网络广播:随时关注 developerWorks 技术活动和网络广播。
获得产品和技术
- IBM 试用软件:从 developerWorks 可直接下载这些试用软件,您可以利用它们开发您的下一个项目。
讨论
|