查看文章 |
LVM的配置数据
2007年12月14日 星期五 下午 01:22
卷组描述区(VGDA)、卷组状态区(VGSA)和逻辑卷控制块(LVCB)构成了LVM的配置数据
1.VGDA:卷组描述区。位于所有硬盘起始的部分,VGDA记录着卷组中每个逻辑卷(LV)的逻辑分区(LP)与物理分区(PP)的映射关系。 主要用于更新ODM。 VGSA:卷组状态区。主要用于描述VG中PV和PP的状态信息,在激活一卷组时,VGSA可以确定卷组中那些物理分区(PP)是无效的(或陈旧的),哪些物理卷已丢失,进而确定卷组中的物理卷是否可用。 LVCB:逻辑卷控制块。位于所有LV的起始部分,包含与LV有关的信息,如LV 的大小、类型、最后更新时间等。 卷组中的每个PV至少都有一个VGDA,VGDA能对该PV进行自我描述,每个LVM命令都可以同步卷组中所有PV的VGDA,从而使卷组中每个PV的VGDA都保持相同的时间戳,如果其中一个PV错误导致无法运行,则就无法更新同步VGDA。 在把一个硬盘变成物理卷时(使用mkdev命令)就在这个硬盘的开始部分保留一个存放VGDA的空间,当把这个物理卷加入到一个卷组中时(使用mkvg或extendvg)才将该卷组的信息写进这个物理卷的VGDA中。当把一个PV从所属VG中删除时(使用reducevg命令),同时从这个PV的VGDA中清除该卷组的信息。 描述LVM的构成信息不会存放在一个地方,还会存在于系统的各个地方,AIX的大多数系统配置都会存放在ODM数据库中,所以已配置的VG,LV和PV的信息都会保存在ODM数据库中,所以当导入(import)一个卷组时,就会把要导入卷组的VGDA信息保存在ODM数据库中,相反,导出(export)一个卷组时,就会把这个卷组的VGDA信息从ODM数据库中删除。 关于PVID:PVID是PV的物理标识符,这个PVID是系统随机生成的,而且是可变的。硬盘在未被定义为PV之前是没有PVID号的。当系统进行cfgmgr后,系统就会为硬盘分配一个名字和PVID号。如果想手工清除PVID号用chdev -l hdiskn -a pv=clear.重新生成pvid号用cfgmgr或chdev -l hdiskn -a pv=yes. ODM:ODM数据库用与描述物理设备相同的方式描述VG和LV,它影响VGDA、VGSA、LVCB中的信息。LV在ODM中处于Defined状态,而物理设备则处于Available状态。 在/etc/vg目录中保存有VGID, 可用#lqueryvg –p hdiskn –At查询VGID 可用#lqueryvg [–g VGID|-p PVname] [-NsFncDaLPAt]查询PVID 可用#getlvcb –AT hdn查询LVCB信息 可用 #ipl_varyon –i显示系统中的PV,PVID及PV所属的VG的VGID 2.当VG中有两个PV,且两个PV互为镜像时,如一个PV上的VGID毁坏了, 可用#chvg -Q n vgname命令恢复, 然后用#varyonvg vgname将VG挂在系统上即可。 3.当ODM中的有关VG的信息毁坏时, 可用#varyoffvg vgname, #exportvgvgname, #importvg –y vgname –f hdiskn #varyonvg vgname命令重建ODM中的VGDA项。 4.当PV上的VGDA毁坏时(此问题通常是由于从系统中卸载一块PV而未事先将 其从VG中卸载),应先找出丢失PV的PVID,然后将丢失的PV重新加入ODM 中,再将此PV从VG中卸载,最后从系统中删除此PV。 具体步骤为: #lqueryvg –p hdiskn –At从VGDA查找所有PV的PVID #lspv从ODM和VGDA中查找所有PV的PVID #dd if=/dev/hdiskn count=1|od –x|grep 0000200 查找系统中实际存在的所有PV的PVID)命令找出丢失PV的PVID #odmget –q “name=hdiskn” CuDv >>/tmp/hdiskx.add #odmget –q “name=hdiskn” CuAt >>/tmp/hdiskx.add 从ODM中取出系统中实际存在的PV的信息 #vi /tmp/hdiskx.add #odmadd /tmp/hdiskx.add 将编辑好的文件加入到ODM中(用丢失的PV的Pvname和PVID替换文件中的 Pvname和PVID) #lslv –l hdn 查看hdn上的LV分配情况(In Band:表示在LV中部的LP占全部LP的比例) #lslv –m hdn 查看hdn上的LP-PP-PV的对应情况 #reducevg vgname hdiskx #rmdev hdiskx 将丢失的PV从系统中删除。(可用extendvg –f vgname hdiskn命令加新的 PV至VG中)。 5.当ODM中的有关Rootvg的信息毁坏时,可用下面的scrīpt文件恢复ODM中 的VGDA信息。 #vi scrīpt PV=/dev/ipldevice VG=rootvg cp /etc/objrepos/CuAt /etc/objrepos/CuAt.$$ cp /etc/objrepos/CuDep /etc/objrepos/CuDep.$$ cp /etc/objrepos/CuDv /etc/objrepos/CuDv.$$ cp /etc/objrepos/CuDvDr /etc/objrepos/CuDvDr.$$ lqueryvg –Lp $PV |awk ‘{print $2}’ |while read Lvname; do odmdelete –q “name=$Lvname” –o CuAt odmdelete –q “name=$Lvname” –o CuDv odmdelete –q “value3=$Lvname” –o CuDvDr done odmdelete –q “name=$VG” –o CuAt odmdelete –q “parent=$VG” –o CuDv odmdelete –q “name=$VG” –o CuDv odmdelete –q “name=$VG” –o CuDep odmdelete –q “dependency=$VG” –o CuDep odmdelete –q “value1=10” –o CuDvDr odmdelete –q “value3=$VG” –o CuDvDr importvg –y $VG $PV#igonre lvaryoffvg errors varyonvg $VG #./scrīpt hdiskn 6.迁移Rootvg时应注意: 重新创建BLV(BootLV),更改Bootlist,更改系统的DUMP设备。 迁移Rootvg的步骤: #smit mksysb 先备份Rootvg,然后将新硬盘安装至系统 #bosboot –ad /dev/newdisk 在新硬盘上创建BLV 然后更新系统的Bootlist(参看系统安装说明)并重启 #mkboot –c –d /dev/olddisk 将欲移出的硬盘上的Boot记录删除 #savebase [-d /dev/newdisk] 将设备配置库中的设备信息保存在新硬盘上 #sysdumpdev –p /dev/sysdumpnull 激活临时的DUMP设备 #sysdumpdev –p /dev/hd6 重置系统的DUMP设备 #migratepv olddisk newdisk 将旧硬盘上的LV迁移至新硬盘上 #reducevg vgname olddisk 将旧硬盘从Rootvg中迁移出来 #rmdev –dl olddisk 将旧硬盘从系统和ODM数据库中删除 #extendvg [-f] vgname newdisk 将新硬盘加入到Rootvg中。 7.从Rootvg中卸载PV的步骤: #migratepv –l lvname 欲卸载PV 保留PV 将在欲卸载的PV上的,与Rootvg有关的LV迁移至保留在Rootvg中的PV上 #backup –u –0 –f /dev/rmtn /fsname 将欲迁移至新VG的FS备份下来 #rmfs /fsname 删除欲卸PV上的FS #reducevg rootvg 欲卸载PV 将欲卸载的PV从Rootvg中卸下 #mkvg –y ‘newvg’ 欲卸载PV 在此PV上创建新的VG #varyonvg newvg 将新VG挂在系统上 #smit crfs #mount /fsname 将FS安装在新VG上 #cd /fsname #restore –rvf /dev/rmtn /fsname #rm restoresymtable 将FS恢复到新VG上(以上步骤不适用于迁移BLV和系统DUMP设备)。 8.在同一VG中迁移FS: #migratepv –l lvname 源PV 目标PV 9.在不同的VG间迁移FS: #smit crfs 在目标VG上创建一与源FS大小相同的临时FS #mount /tempfs 将临时FS安装目标VG上 #cd /sourcefs #find . – print|tar cvf /tempfs 将源FS的内容拷贝至临时FS #smit crfs #mount /newfs 在目标VG上创建一与临时FS大小相同的新FS #cd /tempfs #find . –print|tar cvf /newfs 将临时FS的内容拷贝至新FS #rmfs /tempfs 将目标VG中的临时FS删除。(源FS和新FS可以同名)。 10.在不重新创建和删除VG的基础上,更改VG名: #umount –a 卸载所有属于VG的FS #varyoffvg VG_Name #exportvg VG_Name 卸载VG #smitty importvg 装载VG,在VG name域中输入新的VG名,在PV name域中输入属于此VG的任一块PV名 #mount FS_Name 装载所有属于此VG的FS |
最近读者: