Volume groups

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


表 3. 不同 VG 的不同参数

VG 类型最大的 PV 个数最大的 LV 个数每个 LV 拥有的最大 PP 个数单个 PP 的最大容量
Normal VG32256325121Gb
Big VG1285121300481Gb
Scalable VG102440962097152128Gb

 

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


表 4.VG 相关命令

命令smit 快速命令功能
lsvgsmit lsvg显示 VG 的信息。
mkvgsmit mkvg创建 VG。
chvgsmit chvg设置 VG 特性。
extendvgsmit extendvg向 VG 中增加新的磁盘。
reducevgsmit reducevg删除 VG 中的磁盘。
varyonvgsmit varyonvg激活 VG。
varyoffvgsmit varyoffvg让 VG 处于非激活状态。
exportvgsmit exportvg导出 VG 的定义。
importvgsmit 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 快速路径功能
lslvsmit lslv列出 LV 的相关信息。
mklvsmit mklv创建 LV。
chlvsmit chlv修改 LV 的属性。
rmlvsmit rmlv删除 LV。
extendlvsmit 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 快速路径功能
mklvcopysmit mklvcopy为 LV 创建副本
rmlvcopysmit rmlvcopy为 LV 去除副本
mirrorvgsmit mirrorvg为 VG 上的已存在的 LV 创建副本
unmirrorvgsmit unmirrorvg去除指定 VG 或磁盘上的副本
syncvgsmit 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 p_w_picpath is 25166 512 byte blocks. 
 bootlist -m normal hdisk0 hdisk1 

 

 

磁盘空间

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

  • 自动跟踪并清除不需要的文件
  • 限制用户对于特定目录的访问
  • 添加新的磁盘以增加系统空间

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

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

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

使用以下的命令:

skulker – p

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

  • /tmp 目录下的所有文件
  • 超过特定日期的文件
  • out 文件
  • core 文件
  • ed.hup 文件

要想了解更多的 skulker 使用方法,请访问以下地址:

http://publib.boulder.ibm.com/infocenter/pseries/v5r3/topic/com.ibm.aix.cmds/doc/aixcmds5/skulker.htm

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

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

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

    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 设置为无 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 名称。