一个 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 创建镜像的功能。以下的因素可以进一步增加镜像中的数据可用性:
- 数据的副本数量:
3 个副本数量的可用性肯定会高于 2 个副本的。
- 副本的存放位置:
尽量将 LP 的副本存放在不同的 PV 上,这样可以增加数据的可用性,不至于在物理磁盘出现问题事,整个镜像都不可用。
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 p_w_picpath 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 命令的使用可以查看一下地址:http://publib.boulder.ibm.com/infocenter/pseries/v5r3/topic/com.ibm.aix.cmds/doc/aixcmds3/mount.htm?resultof=%22%6d%6f%75%6e%74%22%20
在 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 名称。