UNIX.AIX.文件系统.存储管理.逻辑卷管理.PV.VG.PP.LV.LP

一.逻辑卷管理概念

5个概念: 物理卷 physical volumes PV
每个独立的硬盘称作物理卷(PV),并有一个名字(如hdisk0);
卷组 logical volume group VG 所有的物理卷属于一个称作rootvg的卷组(VG);
物理分区 physical Partitions PP
所有在一个VG中的PV被分为相同大小的物理分区(PP);

逻辑卷 logical volumes LV 每个VG中可以定义一个或多个逻辑卷(LV),LV是位于PV上的信息的组合,在LV上的数据可以连续或者不连续地出现在PV

逻辑分区 LP
每个LV包含一个或多个逻辑分区(LP),每个LV相当至少一个PP,如果对LV指定了镜象,就要有双倍的PP被分配用来存储每个LP的备份.
LV可以提供许多系统需要的服务(如页面空间),但是每个存储了一般系统/用户数据或程序的LV都包含一个单独的日志式的文件系统(JFS),每个JFS包含一群页面大小(4K)的块.AIX4.1以后,一个给出的文件系统可以被定义为拥有小于4k的片断.系统安装完毕后,有一个VG(rootvg),包含一套系统启动的基本的LV和其它在安装脚本中指定的VG.

二.逻辑卷管理器

操作系统命令/库子程序/其它工具允许建立和控制LV存储,成为逻辑卷管理器(LVM).LVM通过简单而灵活地在存储空间的逻辑视图和实际物理盘之间映射来管理磁盘资源.
1.LVM配置数据
描述LMV的组件的数据存放在好几个地方.理解这些关于VG/LV/PV的描述性的数据放在几个地方是很重要的.
1)ODM 数据库
ODM数据库包含了所有PV,VG,LV的配置信息.这些信息与VGDA中的信息互为镜象.ODM数据也和LV控制块中的信息相互镜象;
2)VG描述区(VGDescriptorArea)
VGDA位于每个物理卷的开头,它包含所有属于本VG的LV和PV的信息.VGDA被几乎所有的LVM命令更新.VGDA产生每个VG的自述.AIX可以读取每个磁盘的VGDA,从VGDA中,可以获知哪些PV和LV属于这个卷组.每个盘至少包含一个VGDA,时间的变化很重要,VGDA中的时间戳用于确定哪个VGDA正确地反映了VG的状态.如果VG中一个盘出错,VGDA可能无法同步磁盘,这样磁盘上的VGDA就无法在磁盘不运行的时候更新.所以需要一种方法来更新VGDA刚在线的磁盘,这就是处理进程要做的.
当磁盘被创建为一个PV(以mkdev命令)的时候,VGDA也被创建,这时会在盘开始保留一段空间给VGDA.当PV被分派到一个VG(用mkvg或extendvg)的时候实际的VG信息就被写到VGDA中去.当一个PV从VG中删除的时候(用reducevg),VG信息也从VGDA中删除.
3)VG状态区(VGSA)
VGSA包含了PP和PV的状态信息.如VGSA知道一个VG中的PV是否不可用.VGDA和VGSA都有非常重要的开始和结束时间戳.时间戳可以让LVM了解最近的VGDA和VGSA的拷贝在时间上的变化.
LVM要求选择VGDA的时间戳和选择VGSA的时间戳是相同的.
4)LV控制块(LVCB)
LVCB位于每个LV的开头.它包含了LV的一些信息,占用几百个字节.可以使用getlvcb命令获取某个LV的LVCB信息并显示出来.如:getlvcb -TA hd2显示了hd2 LV的LVCB信息.
2.磁盘quorum
每个VG中的物理盘至少有一个VGDA/VGSA.一个盘中VGDA的数量根据VG中的盘的总数而变化.变化规律如下:
VG中有一个PV两个VGDA在一个盘上
VG中有两个PV两个VGDA在一个盘上,一个在另外一个盘上
VG中有两个以上的PV每个盘上有一个VGDA
quorum是一种状态,这种状态确保一个VG中一半以上的PV是可以访问的,是活动的VGDA/VGSA的数量决策,它可以确保在发生磁盘出错的时候的数据完整性.
如果quorum失败,VG会关闭自身,使磁盘不再可以由LVM访问,防止磁盘进一步读写而导致的数据丢失.另外错误日志中也会记录该错误.这也暗示了磁盘镜象的某些注意的地方,在一个双盘镜象的系统中,如果第一个盘出错那么就丢失了66%的VGDA,整个VG就变得不可用.这就失去了镜象的目的.由于这种原因,两个以上的盘(通常是奇数)提供了更高的可用性,特别是想使用镜象的时候.
也可以关闭任何VG的quorum保护.关闭quorum保护可以使一个VG在出现前面的情况的时候仍然在线.这种能力提供了相对廉价的镜象方案,但是有数据丢失的危险.磁盘出错后,数据可以访问,但是不再被镜象了.
3.磁盘镜象
磁盘镜象是两个或三个PP的联合与每个LV中的LP的联合.当数据被写到LV中的时候,也被写入与该LV的LP关联的PP中,所以镜象数据提高了数据的可用性.AIX和LVM提供了在LV级别上的镜象工具.如果镜象建立,当LV创建的时候就可以实现.
mklv命令允许为每个LV选择一到两个额外副本.镜象也可以被加入到一个已经存在的LV中,需要使用mklvcopy命令.采用以下镜象选项可以进一步提高数据可用性:三个数据副本比两个数据副本更可靠;把LP副本分布在不同的PV上比分配在一个PV上可靠.进一步地,可以把数据副本存放在不同适配器上的不同PV中.
mirrorvg命令镜象一个VG中所有的LV.相同的功能也可以对VG中的每个LV用mklvcopy命令人工完成.使用mklvcopy时,要被镜象的目标物理驱动器必须是该VG的成员.使用语法:
mirrorvg [ -S | -s ] [ -Q ] [ -c Copies] [ -m ] VolumeGroup [ PhysicalVolume .. ]
默认情况下,mirrorvg试图镜象LV到VG中的任何盘上.mirrorvg命令使用LV被镜象时的默认设置镜象LV.如果想改变镜象创建策略,必须用mklvcopy手工去创建所有的镜象.
也可以使用smitty mirrorvg完成VG镜象:
三重镜象一个VG:mirrorvg workvg -c 3 workvg,在workvg中的LV中的LP就有三个副本.
默认镜象rootvg:mirrorvg rootvg rootvg就有两个数据副本
在镜象VG中替换失败盘:unmirrorvg workvg hdisk7>>reducevg workvg hdiak7>>rmdev -l hdisk7 -d.替换失败的磁盘,然后命名为hdisk7:extendvg workvg hdisk7>>mirror workvg.默认情况下,mirrorvg将试图为workvg中的LV创建两个副本,试图创建新的镜象到被替换的磁盘.但是,如果原系统是三重镜象的,可能就没有新的镜象创建到hdisk7上,因为该LV中的其它副本可能已经存在.
同步新创建的镜象:mirrorvg -S -c 3 workvgc参数指出mirrorvg后每个LV必须有的副本数.而-S参数指出立即返回mirrorvg命令并完成VG的后台同步.当镜象同步的时候不会显示出来,但是一旦准备好,可以立即被系统使用.
创建一个原样的镜象VG: mirrorvg -m datavg hdisk2 hdisk3-m参数允许在PP层次镜象一个LV,该LV的PP可以组织已经在源副本上组织好的数据.
rootvg镜象:rootvg镜象完成,要完成以下任务:
1.bosboot命令从RAM文件系统和核心创建一个引导镜象.该命令在自定义新的镜象盘上的引导记录时是被要求使用的.
2.bosboot命令总是为硬盘保存设备配置数据,不更新NVRAM中的引导设备列表,要修改列表,使用bootlist.
3.最后,mirrorvg命令关闭quorum功能.要关闭rootvg的该功能系统必须重启.注意:如果bosboot命令没有成功创建引导盘,不要重启.这个问题应该被解决并且bosboot命令成功完成运行.bosboot要求一些/tmp和目标保存的文件系统中的空间(如果该镜象存在).
非rootvg镜象:如果一个非rootvg被镜象,quorum状态是去活的.要使所有quorum去活,所有开放的LV必须被关闭.然后VG varyoff再vary on使quorum改变生效.如果VG的vary on没有完成,尽管镜象正常运行,但quorum的改变没有生效.
rootvg和非rootvg镜象:系统dump设备(主:/dev/hd6次:/dev/sysdumpnull)不应被镜象,在某些系统中,页面设备和dump设备是相同的,而用户想对页面设备做镜象.当mirrorvg探测到一个dump设备和页面设备相同时,该LV就会自动被镜象.如果mirrorvg发现dump设备和页面设备在不同的LV,页面设备自动镜象,而dumpLV不会.dump设备可以用sysdumpdev命令来查询和修改.

三.物理卷管理
讨论:加入新磁盘/改变PV属性/监控PV
6.3.1PV配置:三种方法
a)该方法用于可以在连接磁盘前关机的情况.当系统在加入一个磁盘后引导,cfgmgr命令在系统引导时运行,它可以自动配置磁盘.引导完成,以root用户登录,运行lspv,查看新盘.显示如下
hdisk1nonenone
或者hdisk100005264d21adb2enone
其中第二行中的16位号码是PV的ID.如果输出以PVID显示新的磁盘,他可以用于LVM的配置.如果新盘没有PVID,要使用3.2节说明的方法把一个盘创建为一个PV,然后该盘才可以被LVM使用.
b)这种方法适用于不能在连接磁盘前关机的情况.运行lspv列出已经配置的物理盘,显示如下:
hdisk0000005265ac63976rootvg
然后运行cfgmgr配置所有新发现的设备.再次运行lspv查看新盘条目,例如:
hdisk1nonenone
或者hdisk100005264d21adb2enone
一旦确认了新配置的盘名,使用6.3.2描述的创建PV方法来使该盘可以被LVM使用.
c)该方法适用于不能在连接磁盘前关机的情况.该方法要求知道以下信息:盘如何连接的(subclass)/磁盘类型(type)/盘连接到哪个系统接口(parent name)/盘的逻辑地址(连接到哪里).如果知道以上信息,使用以下方法配置该盘,通过pv=yes属性来确保该盘是一个可用的PV:
mkdev -c disk -s subclass -t type -p parentname -w whereconnected -a pv=yes
pv=yes属性使磁盘成为一个PV并以独特的PVID写入引导记录.
6.3.2把一个磁盘变为一个PV
一个新盘必须被配置为PV才可使用.可以通过指派一个PVID使一个磁盘变为一个PV:chdev -l hdisk1 -a pv=yes.这个命令对于已经是PV的磁盘没有影响.
6.3.3修改PV属性
讨论两个可以被chpv命令修改的PV属性:
为一个PV设置分配许可:一个PV的分配许可决定了该PV上的未指派到LV中的PP是否可以被分配使用.设置分配许可要定义PV中一个新PP的分配是否被允许.以下的命令用于关闭hdisk1的分配许可:chpv -a n hdisk1,要打开,把n该为y即可.
设置一个PV的可用性:一个PV的可用性定义了该PV是否可以完成任何逻辑输入输出操作.当一个PV被从系统删除或失败时应该被设为不可用.以下命令用于设置PV的状态为不可用:chpv -v r pvname,这将去活PV中所有的VGDA和VGSA副本,该PV也不会参与未来的quorum检查上的vary.关于该卷的信息也会从其它在一个VG中的PV的VGDA中删除.要设为可用,把以上命令的r改为a即可.注意:chpv命令在运行时使用/tmp目录的空间存储信息,如果失败,可能是由于/tmp空间太少.
6.3.4删除PV
如果一个PV可以从系统删除,那么它必须是没有配置的.使用rmdev命令把hdisk1的状态从available改变到defined状态:rmdev -l hdisk1.此后,该PV的定义将仍然保留在ODM中,如果加上-d参数,则从ODM中删除.
6.3.5列出PV信息
一个正确地配置在系统中的PV可以被指派到VG中并随后用于建立LV和文件系统.自由的PP的信息和磁盘上的扇区可用性非常有用.使用lspv命令可以获得这些信息.
a)列出系统中的PV:不带参数运行,结果如下:
# lspv
hdisk0 00615147ce54a7ee rootvg
hdisk1 00615147a877976a rootvg
如果带-C和-c class参数也会连同每个PV的状态列出系统中的PV,结果如下:
# lsdev -C -c disk
hdisk0 Available 40-58-00-0,0 16 Bit SCSI Disk Drive
hdisk1 Available 40-58-00-1,0 16 Bit SCSI Disk Drive
hdisk2 Available 20-68-L SSA Logical Disk Drive
hdisk3 Available 20-68-L SSA Logical Disk Drive
hdisk4 Available 20-68-L SSA Logical Disk Drive
hdisk5 Available 20-68-L SSA Logical Disk Drive
hdisk6 Available 20-68-L SSA Logical Disk Drive
b)列出PV属性:下面是用lspv命令找到更多信息的例子:
# lspv hdisk1
PHYSICAL VOLUME: hdisk1 VOLUME GROUP: rootvg
PV IDENTIFIER: 00615147a877976a VG IDENTIFIER 00615147b27f2b40
PV STATE: active//VG STATE可以用varyonvg命令来修改,其取值有三个:active/complete(所有PV是活动的),active/partial(一些PV没有激活),ina- ctive(VG没有活动).
STALE PARTITIONS: 0 ALLOCATABLE: yes//STALE PP是失效PP,ALLOCATABLE的值表示系统是否允许分配新的在该PV上的PP
PP SIZE: 4 megabyte(s) LOGICAL VOLUMES: 13//PP SIZE是VG属性是在用mkvg命令建立VG的时候定义的VG的最小片断大小
TOTAL PPs: 238 (952 megabytes) VG DESCRIPTORS: 1//VGDESCRIPTORS描述了包含该PV的VG中VGDA的个数
FREE PPs: 71 (284 megabytes)
USED PPs: 167 (668 megabytes)
FREE DISTRIBUTION: 48..02..00..00..21//概括了自由PP依据它们所在的PV的位置的分布状况.
USED DISTRIBUTION: 00..46..47..47..27
每栏的左边列出了PV本身的信息,右边是该PV所属的VG的信息.

c)列出PV上的LV分配信息:以-l参数列出hdisk1上的LV信息:lspv -l hdisk1.显示结果:

d)列出PV上的PP分配:用lspv -p hdisk1找出更多关于PP分配到LV中的范围和这些PP使用的磁盘区域的详细信息.显示信息如下:

一些注释:
PP RANGE当前行分区申请的PP的范围
STATE分区是否被分配了,取值为:used或free
REGION该分区在磁盘区域上的位置
LV NAME该分区所属的LV名
TYPE在LV中文件系统的类型
MOUNTPOINT文件系统的mount点

e)列出PP分配表:可以用lspv -M命令对一个LV进行磁盘整理,提高磁盘I/O性能.可以经过分析输出决定是否整理系统,显示如下:

第一列为命令指定的盘指出了PP(如果一组相邻分区都是自由的,将会显示分区范围),第二列指出了哪个LV的哪个LP被分配到该PP.
f)迁移PV中的内容:属于一个或多个指定的LV的PPs可以从一个PV移动到一个或多个其它在VG中的PV.这要使用migratepv命令.注意:该命令不能在不同VG之间移动数据.6.5.5讲述了如何在VG之间移动数据.要在VG内移动一个失败的盘中的数据有以下步骤:
1)确定哪些盘在VG中,确认目的和源PV在一个VG中.执行lsvg -p rootvg可以确认.然后进行第三步;
2)如果计划迁移到一个新盘,又需要完成以下步骤:(1)用lsdev -Cc disk确认磁盘为PV;(2)如果磁盘被显示可用,确认该盘不属于其它VG:lspv PVNAME;(3)如果磁盘不可用,要检查或安装磁盘;(4)加入新盘到VG中:extendvg VGname hdisknumber;
3)确认目标盘有足够的空间:(1)确认源盘PP数目:lspv SourceDiskNumber|grep "USED PPs";(2)确认目标盘上的自由PP数目:lspv DestDiskNumber|grep "FREE PPs",把所有目标盘上的自由PP相加,如果和大于源盘上使用的PP数,就有足够的空间.
4)要移动一个在非rootvg中的PV的数据的时候,请跳到第5步.否则进行该步.查看是否bootLV(hd5)在源盘上:lspv -l SrcDiskNum|grep hd5,没有输出,则可以进行第5步.如果有输出,运行migratepv -l hd5 SrcDiskNum DstDiskNum(注意:如果VG在并发模式vary on,migratepv命令不可用,而且该命令无法迁移条带化LV,这种情况下要使用cplv拷贝数据,再用rmlv删除旧数据;该命令运行要有root用户权限.).下一步就会得到一条关于警告应该在目标盘上完成bosboot命令的消息(注意:如果bootLV被从一个PV上迁移了,源盘上的引导记录应该被清除,如果清除失败,可能会导致系统挂起.这样当运行bosboot命令时,也必须运行mkboot -c);运行mkboot -c命令清除源盘的引导记录.
5)执行smitty migratepv迁移数据.
6)按下F4列出PV,选择源PV;
7)默认的目的PV是VG中随意的可用的PV,如果想选择,按F4;
8)如果愿意,在Move only data belonging to this LV域显示并选择一个LV.这就会只移动分配到指定的LV的该盘上的PP;
9)回车开始移动;
10)如果磁盘失败,用reducevg VGname SrcDskNum从VG中删除源盘;
11)在从机器上拆下失败的硬盘的之前,运行rmdev -l SrcDskNum -d;
其它migratepv的用途:用该命令从hdisk1移动PPs到hdisk6和hdisk7(均在一个VG):migratepv hdisk1 hdisk6 hdisk7
用该命令从hdisk1移动在某LV上的PP到hdisk6:migratepv -l lv02 hdisk1 hdisk6


四.卷组管理
讨论可以在VG中完成的功能.象PV一样,VG可以被创建/删除/更改属性.还可以激活或去活一个VG.
6.4.1加入一个VG.一个VG要被加入系统需要系统中存在一个或多个PV,这些PV必须是可用状态且没有被其它VG使用.在加入一个VG之前,需要确定一些重要信息,如VG名和要被加入到VG中的PV.新VG可以通过用mkvg命令或smit加入系统.所有属性在VG创建时设置,以下是非常重要的一些问题:VG名在系统中必须是唯一的;所有要在VG中使用的PV的名字;VG可以容纳的PV的最大数量;VG中的PP的大小;每次启动系统时自动激活VG的标识.下面用mkvg命令创建一个名为myvg的VG,使用hdisk1和hdisk5两个PV,每个PP的大小是4k,该VG限制能容纳最多10个PV.命令如下:
mkvg -y myvg -d 10 -s 8 hdisk1 hdisk5
也可以使用smitty mkvg来创建,在界面各个域中输入属性值即可.smitty mkvg会用varyonvg自动激活VG.但smit命令与命令行方式相比,限制了以下功能:smitty mkvg不提供-d参数设置能容纳的最多PV个数,仅使用默认的32个;不提供-m参数设置PV的最大容量,该参数决定多少PP被使用,默认的是1016个分区;smitty mkvg用-f参数强制创建VG.注意:每用mkvg创建一个新VG,根文件系统至少应该有2MB自由空间(可以用df命令来检查),因为每创建一个新VG,/etc/vg目录就会写入一个文件.
6.4.2修改VG属性
修改活动属性用以下命令可以让名为newvg的VG在每次系统启动时自动被vary on:
chvg -ay newvg
如果要关闭自动vary on功能,用:
chvg -an newvg.

对VG解锁当LVM命令在操作时因为系统冲突异常中断,VG将被锁住,要解锁可以用:
chvg -u newvg
加入一个PV要增加VG的空间需要VG中额外的PV可用.加PV的命令是extendvg,下面是一个加PV的例子:
extendvg newvg hdisk3
注意:如果一个要加的PV已经属于一个vary on的VG,扩展会失败,如果属于一个vary off的VG,用户也会被提示是否确定要继续.也可以使用smitty vgsc命令来实现,要选择Add a PV to a VG.
删除一个PV要减少VG的PV,VG必须是vary on的.下面是删除的例子:
reducevgmyvg hdisk3
可以用smitty reducevg从一个VG中删除一个PV.注意:reducevg命令提供了-d和-f参数.-d参数很危险,因为它会在从VG中删除PV之前自动删除所有在PV上的LV数据,如果一个LV跨越了多个PV,那么任何这种PV的删除会危害整个LV的完整性.而-f参数则使-d参数更危险,它禁止和用户交互,无法让用户确认是否要删除.
如果在要被删除的PV上的LV跨越了VG中其它PV,删除操作会破坏这些LV的完整性而不管它们所在的PV.如果删除一个VG中所有PV,则VG本身也被删除.
删除PV的参数有时从系统中删除磁盘没有先运行reducevg,VGDA仍然保存了被删除的磁盘的参数,而PV名已经不存在或被重分配了.要删除这些参数,仍然可以在reducevg命令中使用被删除的PV的PVID.如要删除PVID为000005265ac63976则可以用:reducevg newvg 000005265ac63976.
6.4.3导入导出VG
有时候一个VG需要被从一个系统移动到另外一个系统,以便于其中的LV和文件系统可以在目标系统中被直接访问.要删除ODM数据库中一个VG的系统定义,该VG需要用exportvg命令导出.该命令不会删除VG中的任何用户数据而只删除它在ODM数据库中的定义.同样,当一个VG被迁移了,目标系统需要加入该VG的定义.这可以通过用importvg命令导入VG来完成,这会在ODM数据库中加入一个条目.例子:导出myvg的定义:exportvg myvg;导入myvg:importvg -y myvg hdisk12可以使用smitty exportvg或smitty importvg来导入或导出.如果指定的VG名正在使用,importvg命令将会失败,因为相同的VG名是不被允许的.在该实例中该命令可以返回一个独特的指定的VG名.该命令也可以没有-y参数或VG名得到返回,但这样执行时,被给定了一个默认唯一的导入名.
也有可能某些LV名与系统中已有的冲突.importvg命令将自动以系统默认名命名.重要的是要记住当移动VG时,exportvg命令总是在源系统中执行并且先于导入目标系统的操作.假设到一个VG被导入系统Y没有在系统X上实际完成exportvg.如果系统Y对VG作了诸如删除PV的改变,而后来VG又被导回系统X,系统X上的ODM数据库将和VG上改变过的信息不一致,但在移动前没有在源系统上导出,那就没有什么意义了.也可用exportvg和importvg改变用户定义的VG名.如以下命令:lspv列出所有的PV,varyoffvg vg00,exportvg vg00,importvg -y cadsvg hdisk1,lspv就可以发现两次lspv的不同.注意:如果当前系统包含一个相同的名字的LV,importvg命令改变被导入的LV的名字.同时如果一个LV被改名,一个错误消息被打印到标准错误输出,如果没有冲突,该命令还创建文件mount点和/etc/filesystems中的条目.
有页面文件的VG中,如果页面文件是活动的,VG不能被导出.在导出一个包含活动页面的VG之前,确认页面空间不会在系统初始化时自动激活,要使用:chps -a n page_space_name,然后重启系统.
如果不能用smitty importvg命令激活VG,必须用varyonvg命令来使文件系统和LV可用.
如果导入的VG包含文件系统或者通过smitty importvg激活了VG,建议在mount文件系统之前使用fsck命令检查文件系统.如果移动一个VG到其它系统,确认在移动前反配置这些盘(即导出).
smitty exportvg命令删除在/etc/filesystems中的文件系统参数,但留下mount点在系统中.

6.4.4打开关闭一个VG
一个VG存在,就可以使用varyonvg命令使其可以被系统管理活动可用.这个处理包含的步骤如下:
1.一个VG的每个PV中的每个VGDA要被读取;
2.每个VGDA的头部和尾部的时间戳被读取,这个时间戳必须匹配一个有效的VGDA;
3.如果多数VGDA(成为quorum)可用,varyon就会处理,否则就处理就会失败;
4.系统会用最新的VGDA数据去覆盖所有其它VGDA,这样它们就都匹配了;
5.sync命令被运行用来重新同步任何过时的分区(镜象被采用了);
varyonvg命令有以下选项可以被用于克服VG结构损坏或给出状态信息:
1.-f参数可以被用于强制一个VG被vary on,甚至有冲突的时候.该冲突通常是因为ODM数据库中每个VG的配置数据和VGDA不同;
2.-n参数将会禁止syncvg命令在vary on时使用.当一个VG被vary on,过时的分区被探测到时,vary on进程将会调用syncvg命令来同步过时分区.在希望谨慎地覆盖一个VG,想确认没有意外地写一个坏镜象的数据副本到好的副本中时,该参数非常有用;
3.-s参数允许一个VG被以维护模式或系统管理模式vary on.LV命令可以操作该VG,但是没有LV可以被打开进行输入输出操作.
例子:激活VG newvg:varyonvg newvg,也可以用simtty varyonvg.
varyoffvg可以去活一个VG和他关联的LV.这要求LV是关闭的(即其中的文件系统是unmounted的).varyoffvg命令也允许-s参数使用改变VG到维护模式或系统管理模式.去活一个VG:varyoffvg myvg.也可以用smitty varyoffvg,其中也可以把VG改变到系统管理模式.
6.4.5监控VG
lsvg命令询问ODM数据库当前所有系统中的VG.下面是一些例子:
列出VG:不带参数列出所有VG.
lsvg -o列出所有被vary on的VG.
lsvg VGNAME列出名为VGNAME的VG的所有详细信息和VG属性的状态.
列出在VG中的PV的状态:lsvg -p VGNAME.该命令对于集中系统中的自由空间非常有用.

其中DISTRIBUTION五列分别表示:outside edge,outsidemiddle,center,inside middle,inside edge.
6.4.6重组一个VG
用reorgvg命令为一个VG根据每个LV的分配属性重组PP分配.
语法:reorgvg [-i] volgrpname [lgcvolname...]
在使用reorgvg命令之前VG必须被vary on并且有自由分区.每个LV的可重定位参数必须通过chlv -r命令被设置为y才能使重组生效.否则LV就被忽略.注意:reorgvg命令不重组已分配的条带化的LV的PP的位置.该命令要运行成功指定的VG中至少有一个自由PP.如果reorgvg命令后带VG名,再没有其它参数,那就只重组VG中的第一个LV.也可以使用smitty reorgvg命令完成重组.
-i参数指定从标准输入获取PV名.只有这个指定的PV上的分区被组织.
重组VG的例子:重组vg02上的lv03/lv04/lv07:
reorgvg vg02 lv03 lv05 lv07
重组位于vg02 VG中的lv203和lv205中disk04和hdisk06 PV上的分区:echo "hdisk04 hdiak06"|reorgvg -i vg02 lv203 lv205
6.4.7同步VG
syncvg命令用来同步LV过时的副本,语法:
syncvg [-f][-i][-H][-P NumParallelLPs]{-l|-p|-v}Name...
syncvg命令同步过时的源PP的副本PP.该命令可以用于LV/PV/VG,只要指定它们的名字即可.同步进程是很费时的,依硬件属性和数据量的不同而有所变化.
当-f参数使用的时候,一个没有损坏的物理副本被选择并传播到所有其它LP的副本检验它们是否损坏.当VG被varyonvg命令激活的时候,对于在VG中的副本,除非同步功能不可用,否则它们总是被自动同步.sync的-p参数指出代表PV设备名的名字样式.-v参数指出代表VG设备名的名字样式.下面的例子显示了如何使用syncvg:同步在PV hdisk04和hdisk05上的副本:syncvg -p hdisk04 hdisk05;同步在VG vg04和vg05上的副本:syncvg -v vg04 vg05.

五.逻辑卷管理
PV和VG不能由用户和程序直接存取数据,不能为用户和程序提供磁盘空间.但是LV提供了使磁盘可用的机制.当创建LV的时候,要指定LP的个数.一个LP根据镜象方式可以映射1个/2个或三个PP.
6.5.1加入一个LV
可以用mklv创建一个新LV,该命令允许你指定LV名,定义诸如LP数量等属性,在创建LV中,默认的最大尺寸为128个LP.mklv的语法如下:
mklv [ -a Position ] [ -b BadBlocks ] [ -c Copies ] [ -d Schedule ][ -e Range ] [ -i ] [ -L Label ] [ -m MapFile ] [ -r Relocate ] [ -s Strict ][ -t Type ] [ -u UpperBound ] [ -v Verify ] [ -w MirrorWriteConsistency ][ -x Maximum ] [ -y NewLogicalVolume | -Y Prefix ] [ -S StripeSize ][ -U Userid ] [ -G Groupid ] [-P Modes ] VolumeGroup Number[ PhysicalVolume ... ]
参数意义:
-c copies设置镜象数,最多三个,默认为1
-i从标准输入获得PV样式,该参数只用于PV通过标准输入加入的情况
-L设置LV卷标,默认值为没有.最大127字符,如果该卷被用于JFS,JFS将使用该值记录该LV中的JFS的mount点
-P modes为LV特殊文件指定文件模式许可
-t type设置LV类型.标准类型是JFS,JFSLOG,paging,也可用于定义其它LV类型(boot类型除外),默认JFS
如果为一个文件系统创建了log,在log被使用之前用户要用logform命令清除干净新的JFSLOG,用以下命令格式化名为logdev的LV:
logform /dev/logdev.
-y newlv为LV指定名字,该名在本机上必须是唯一的,可以用1-15个字符.如果VG是以并发模式varyon的,新名字要在所有的并发节点中唯一.该名字也不能和设备配置数据库中的PdDv类定义的前缀相同.
例子:用mklv来创建一个名为newlv的新LV到rootvg中,该LV含10个LP,每个LP对应两个PP.
mklv -y newlv -c 2 rootvg 10.
用smit创建一个LV:运行smitty mklv,然后按F4选择一个vg,输入LV名字,然后在number of LP域输入想分配到新LV的LP数目.在PVname域输入想用于该LV的PV名,若未指定,默认系统中第一个PV.在Number of copies域输入LP镜象数.回车即创建.
6.5.2删除LV:rmlv [-f][-p PVname]lvname...-f表示不提示确认直接删除,-p PVname 仅仅删除指定PV中的LP.除非LV中所有的LP均在该PV中,否则LV不会删除.也可使用smitty rmlv删除.
6.5.3减少LV的大小:备份LV的所有数据->删除LV->以更少的LP建立LV->恢复数据
6.5.4增加LV大小:可以用extendlv或smitty extendlv来增加,如果LV被用于JFS,也可以用chfs或smitty chfs来完成.语法:extendlv [ -a Position ] [ -e Range ] [ -u Upperbound ] [ -s Strict ] LV Partitions [PV ... ],如要加入3个新的LP到LV中:extendlv newlv 3.
6.5.5拷贝LV:如要拷贝lv1的内容到lv2,两者都在myvg中,则用cplv -v myvg -y lv2 lv1.如果没有指定vg,新LV会创建在与旧lv相同的vg中.要拷贝一个LV到一个存在的LV中,用以下命令:cplv -e existinglv oldlv,该命令会使existinglv上的内容被覆盖.如果existinglv小于oldlv,会造成数据丢失,损坏文件系统.如果在并发模式下,该命令创建新lv会失败.使用smitty cplv拷贝一个LV,目的卷有三种模式:一个已有的LV,一个系统新建LV,一个用户新建LV.可能会遇到警告说目标LV没有被设置为copy类型.这种情况可以用以下命令:chlv -t copy DstLV.
6.5.6分割LV的副本:splitlvcopy命令从一个LV中分割副本,创建新的独立的LV.语法:splitlvcopy [ -f ] [ -y NewLogicalVolumeName ] [ -Y Prefix ] LogicalVolume Copies [ PhysicalVolume ... ].注意:尽管该命令可以分割开放的LV以及其中已经mount的文件系统,但这么做如果被多处理器系统同时访问可能会失去两个LV之间的连贯性,在分割这些LV的时候,有丢失数据和数据损坏的危险。
要分割属于有3个副本的oldlv的LV每个LP的副本并创建newlv,使用:splitlvcopy -y newlv oldlv 2,结果oldlv中有两个副本,newlv中有两个副本。
6.5.7列出LV:系统安装时会自动创建以下LV:
hd5引导LV,只在系统引导时可用;
hd6默认页面LV;
hd8默认日志空间;
hd4用于根文件系统;
hd2/usr文件系统;
hd9var/var文件系统;
hd3/tmp文件系统;
hd1/home文件系统.
列出这些LV用命令:lsvg|lsvg –il.

lslv命令用于察看与lv有关的属性.如:lslv newlv

6.5.8LV大小=PP大小×分配到LV的LP数×镜象数

六.日志文件系统管理
文件系统是文件/目录以及其他结构的集合.文件系统还可能包含引导块,超级块,位图和一个或多个分配组(allocation group).一个分配组包含磁盘i节点和片断.AIX支持三种文件系统:JFS/NFS/CDFS.每个JFS分别在不同的LV中.初始化时,系统会mount一些系统和引导需要的文件系统.NFS是一种分布式文件系统.
JFS把LV分为一些固定大小的逻辑块.逻辑块有以下组件构成:0逻辑块/超级块/分配组.0逻辑块是系统保留的,被引导程序或其他信息使用,不能被文件系统使用.超级块是从1到30块,包含诸如整个文件系统的块数(512k/块)文件系统名,文件系统日志设备,版本号和文件系统状态等数据.31块用来备份.文件系统中的逻辑块休止符被分为一些分配组.一个分配组包含i节点和数据块,当分配组被分配到目录或文件中去的时候会参考那些数据块.那些组可以被用于安排数据的物理位置.
6.6.1JFS的属性:i节点数/分配组大小/文件系统片断可访问能力/文件系统日志大小/最大文件系统容量,这些属性在文件系统被创建的时候就被定义了.
i节点数目:该数目决定了该文件系统中的文件数目和文件系统的大小.JFS提供了nbpi(Num of bytes per i-node)样式,该样式影响文件系统的i节点数.JFS支持的nbpi值有512/1024/2048…/131072.32768以后的值只在AIX4.2以后的支持.如果要创建一个8M的文件系统,其nbpi为4096,则每4096字节的数据就会得到一个i节点.这就使得该文件系统中最多有2048个节点,也就是说文件系统中最多2048个文件.JFS限制所有的文件系统中最多16M(2的24次方)个i节点.
分配组大小:JFS按i节点和块的分组为用户数据分割文件系统空间.分配组大小是8M/16M/32M/64M.每个分配组大小有一个关联的nbpi范围.具体如下:
Allocation Group size in MBMaximum number of i-nodes
8 512, 1024, 2048, 4096, 8192, and 16384
16 1024, 2048, 4096, 8192, 16384, and 32768
32 2048, 4096, 8192, 16384, 32768, and 65536
64 4096, 8192, 16384, 32768, 65536, and 131072
文件系统片断可访问性:JFS支持4种片断大小:512,1024,2048,4096字节的连续空间.JFS维护在i节点和块中的地址,一共有28位.每个片断必须可以可以通过一串0到2^28的数字访问.
JFS日志:JFS日志大小为4M,初始安装后,所有的在rootvg下的文件系统默认使用hd8作为日志文件的lv,默认大小为4M,大小为一个分区,如果文件系统超过2G或使用一个log的总计文件系统空间超过2G,默认log大小需要增加.JFS日志限制最大为256M.
最大JFS大小:在文件系统创建时定义的.例如选择文件片断为512,则文件系统最大为512×2^24=8G.当创建一个JFS,所有属性(nbpi/fragment size/分配组大小)都要考虑好.文件系统大小=nbpi*2^24=fragment size*2^28.
6.6.2创建文件系统
1.执行smitty crjfs;
2.选择Add a Standard JFS;
3.选择要创建的文件系统的VG;
4.在视图中输入文件系统大小(块数).如果想创建一个4M的文件系统,可以用4乘以2048得到块数;
5.在MOUNT POINT域输入想mount的全路径;
6.回车会显示创建过程.
注意:AIX中的所有I/O都是以4KB的块来进行的,但是这里空间的计算是以512K的块来计算的,这主要是为了和其他UNIX保持兼容.最小的文件系统大小是一个PP,因而如果指定的块数目不够一个PP,系统会仍然创建一个PP容量的文件系统.可以使用命令行方式来完成:crfs –v jfs –g VGNAME –a size=BLOCKS –m MOUNTPOINT.
6.6.3Mount一个文件系统
mount是一个使文件系统或文件或设备或特殊文件可用的操作.它是使一个文件系统可用的唯一方法.注意,如果mount点是一个已经mount过的文件夹,已mount的文件系统的根目录不许mount.通常容易出错的是执行pwd命令,没有查找已经mount完成的文件夹的许可,pwd命令将返回拒绝消息.如果设置mount的文件夹的目录许可为111就不会出现这种问题.
用命令行方式mount一个文件系统:mount /filesysX,如果知道设备连接到系统的名字,可以直接使用设备名mount最新创建的文件系统.如果想mount所有的文件系统,可以使用mount –a或all.
使用smit mount文件系统:执行smitty mount->在视图中选择mount a filesystem回车->在DIR over which to mount域按F4可以得到已经定义的文件系统的mount点.然后选择想mount的文件系统,回车选择->按回车就可以mount成功.
自动mount:在系统初始化时,文件系统可以被自动mount,有两种类型的自动mount:1.那些在引导时要求的mount,/etc/filesystems文件关于这些文件系统的定义中有mount=automatic的描述.如果多用户初始化启动后运行了mount all,/etc/rc脚本不会试着再去mount这些文件系统.通常运行umount all,这些文件系统不会umount.
2.第二种是用户控制的,这些文件系统在初始化时被/etc/rc脚本的mount all命令执行.用户控制自动mount的定义在/etc/filesystems中有mount=true.
除以上两种方法之外,可以把在文件系统创建时的自动mount域中设置为true,或者使用chfs –A yes FILESYSTEM命令.
显示已mount的文件系统:mount
6.6.4删除文件系统:
1.使用mount命令检查当前mount的文件系统;
2.如果文件系统已mount,先umount并检查是否成功,如果未mount则继续;
3.运行smitty rmjfs;
4.按下F4得到所有在系统中定义的文件系统列表,选择要删除的回车;
5.如果要保留mount点,按回车完成,否则把RM mountpoint设为YES回车.
也可以在确认要删除的文件系统umount之后,使用命令rmfs FSname来完成.如果要删除mount点,带上-r参数.
6.6.5增加文件系统大小.如果文件系统的剩余空间太小,会出现不可预料的问题.
1.使用df命令得到文件系统的当前大小;
2.计算需要增加的块数;
3.在命令行方式下输入:chfs –a size=NewBlocks FileSysName
NewBlocks是增加后的大小,不是要增加的大小.
用smit方式的步骤:
1.运行smitty chjfs;
2.选择想改变的文件系统回车,会出现报告文件系统的信息;
3.在SIZE of filesystem域输入新块数,回车即可成功.
6.6.6减少文件系统大小:
1.对要减少的文件系统做一个备份,如/usr.备份命令可以使用4个,cpio/ backup/tar/savevg;
2.如6.6.4所述删除文件系统;
3.创建新的文件系统,使用更小的空间,要有相同的名字.
注意:如果创建的空间太小不能容纳已有数据,恢复将会失败,使用df -k命令看当前在文件系统中的数据的块数.
4.恢复文件系统备份.
也可用mksysb命令减少文件系统,在从一个mksysb恢复rootvg时,有一个选项是shrink磁盘上的文件系统.如果选择该项,VG中的LV和文件系统被重建为包含该数据的最小尺寸.用户定义的VG也可以用restvg –s人工恢复.
6.6.7文件系统连贯性
fsck命令检查文件系统连贯性并交互地修复文件系统.常用语法是:
fsck [ -n ] [ -p ] [ -y ] [ -d BlockNumber ] [ -f ] [ -ii- NodeNumber ][ -o Options ] [ -t File ] [ -V VfsName ] [ FileSystem1 - FileSystem2 ... ]
参数意义:
-f完成快速检查,如果系统被不正常关闭而文件系统已mount,容易受到影响.该参数提示fsck命令不要检查已经umount的文件系统.而fsck命令通过检查文件系统的超级块可以确定是否mount.无论一个文件系统是被mount还是被clear,只要被umount,都要设置此参数.如果文件系统被成功umount,不可能有任何其它问题.因为多数文件系统被成功umount,不再检查这些文件系统可以减少时间.
-p不要显示关于镜象的问题消息,但自动修复它们.该参数不允许大规模的许可(象-y参数一样),当系统正常启动时,该参数对完成自动检查很有用.应该把该参数作为系统启动过程的一部分.该参数允许并行检查.如果主超级块损坏,次超级块被校验并拷贝到主块.
-tFile如果fsck命令不能获得足够的内存保存被检查的文件系统的表, 在其他文件系统中指定一个草稿文件.如果不指定-t参数,而fsck命令需要一个草稿文件,系统会提示输入草稿文件名.如果指定了-p参数,fsck命令将会失败.如果草稿文件不是特殊用途文件,fsck命令结束时将删除文件.
-y设定用yes回答所有的被fsck命令提出的问题.该参数让fsck命令采取任何认为必要的操作.只有在文件系统严重损坏的时候才使用该参数.
Fsck命令检查并交互修复不一致的文件系统,应该在mount文件系统之前使用该命令.必须可以读取文件系统所在的设备文件.
通常,文件系统是一致的,fsck命令仅仅报告文件的数目,使用的块数,自由块数.如果文件系统不一致,fsck命令显示找到的不一致的信息并提示允许修复它们.如果文件系统不能修复,从备份恢复这些数据.
Mount不一致的文件系统可能导致系统冲突.如果不用样式指定文件系统名,fsck命令将check所有的文件系统(/etc/filesystem中的check=TRUE).
注意:默认情况下,/,/usr,/var,/tmp文件系统的在/etc/filesystem中的check属性设为False,因为:1.引导进程在这些文件系统明确运行fsck命令;2.这些文件系统在脚本/etc/rc运行时被mount,fsck命令不会修改一个已mount的文件系统.fsck命令在mount的文件系统中上运行的结果是不可预知的.
6.6.8初始化JFS日志设备:logform命令初始化一个用于JFS日志设备的LV.该LV存储了关于文件系统大量改变的交互信息,并能在系统冲突时用于部分回滚操作.语法为:
logformLOGNAME
注意:该命令有破坏性,会清除所有在LV中的数据;意外运行该命令会完全毁坏文件系统的数据.如果一个日志设备因为要被文件系统使用而开放,文件系统应该先umount再对日志设备运行logform.logform命令毁坏所有在设备上的日志记录,可能会造成文件系统数据的丢失.可用以下命令确认log日志被关闭了:lsvg –l VGNAME.
6.6.9JFS日志设备的位置:JFS日志LV应该被放置在一个与最经常读写的文件系统不同的PV中,最好放在一个最少读写的盘中,以增加并发资源使用.系统也支持每个文件系统有独立的JFS日志.但特别要考虑的是,应该尽量避免多个JFS日志放置到相同的盘上.
6.6.10支持大文件的文件系统:对于超过2G的文件,64位处理器可以不用任何特殊指令打开文件.4.2以前版本的没有潜在的支持大文件.在支持大文件的文件系统中,存储在4MB文件偏移量之前的文件数据被以4096字节的块分配,超过4M文件偏移量的以128K的大块保存.大块实际上是32个连续的小块.如132M的文件有1024个小块和1024个128K的大块.在规则的文件系统中,132M的文件要求33个独立间接块(每块以1024个4K的磁盘地址填满).但是大文件系统中只要求2个独立间接块.
察看文件系统是否支持大文件:lsfs –q FILESYS.其中的bf域的值表示是否支持大文件.

七.解决文件系统问题
6.7.1恢复错误的超级块:如果在使用fsck或者mount命令时,出现以下错误时,可能是超级块损坏:fsck: Not an AIX3 file system
fsck: Not an AIXV3 file system
fsck: Not an AIX4 file system
fsck: Not an AIXV4 file system
fsck: Not a recognized file system type
mount: invalid argument
这些问题可以通过恢复超级块备份来解决:dd count=1 bs=4k skip=31 seek=1 if=/dev/lv00 of=/dev/lv00.
对于AIX4:fsck –p /dev/lv00
一旦恢复进程完成,用fsck检查文件系统的完整性.
一般说来,超级块的恢复会恢复文件系统,如果没有恢复,重建文件系统然后恢复数据.
6.7.2不能umount文件系统
如果一个文件系统的任何参数仍然活动就不能被umount.下列情况可能让一个开放的参数留在mount的文件系统中:
1.文件系统中的文件打开了,对于这种情况可以用fuser命令检查活动状态,它为所有的在某个文件系统中有开放参数的进程返回ID:
fuser –xc /tmp
有开放参数的进程可以被杀死,然后就可以umount了.
2.文件系统可能由于核心进程打开了.fuser命令不会显示这些类型的参数,因为用户进程没有包括在内.但是genkex命令会报告所有的核心用户进程.
3.文件系统mount在另一个文件系统中,在umount一个文件系统之前,必须确认所有的mount在该文件系统mount点上的文件系统已经被umount.
4.一个进程在使用要umount的文件系统中的一个目录,fuer命令追加一个c到所有这些进程ID,-u参数区分进程的属主.可以和find命令一起使用.如:
find /home –type d –exec fuser –u {}
意思是在/home目录下找到所有的目录,对每条记录执行fuser –u,然后回车.{}代表每条记录.对于一个交互进程,有一个确定的用户改变它们的工作目录到文件系统外.否则杀死该进程,就可以完成umount.

八.LVM命令总结
6.8.1PV命令:
getlvcb获取lvcb信息
lsdev列出ODM中的设备
chdev改变设备属性
mkdev加入设备
chpv改变PV状态
lspv显示一个VG中的PV的信息
migratepv从一个PV移动一个已分配的PP到一个或多个其他PV
6.8.2VG命令:
mirrorvg对VG镜象
unmorrorvg解除镜象
mkvg创建新VG
extendvg给一个VG加新的PV
reducevg从一个VG中删除一个PV
chvg改变VG属性
lsvg显示一个VG的信息
importvg安装一个VG
exportvg删除一个VG
reogrvg重组VG
syncvg同步VG
varyonvg使一个VG可用
varyoffvg使VG不可用
2.8.3LV命令
mklv创建LV
lslv列出LV属性
rmlv删除LV
extendlv增加一个LV的大小
chlv改变LV的属性
mklvcopy为一个LV增加副本
rmlvcopy从一个LV删除副本
6.8.4文件系统命令
chfs改变一个FS的属性
crfs加入一个FS
lsfs显示一个FS的属性
rmfs删除一个FS
mount使一个文件系统可用
umount使一个mount的文件系统或目录或文件不可用
fsck检查文件系统一致性并交互修复文件系统
df报告文件系统中的空间信息[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/633084/viewspace-909513/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/633084/viewspace-909513/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值