文件系统是在逻辑卷的基础上建立的,没有逻辑卷的话,就无法mount文件系统。
在删除逻辑卷的时候,rmlv删除的只是在ODM和VG里的PV上VGDA区域里的相关lv的信息,也就是被删除lv上第一个PP上的头512字节 LVCB信息。即三个地方的信息被删除
1, ODM
2, VGDA
3, Lv上的lvcb信息
只要你在原来lv所分配的pp上mklv添加上lvcb信息,就可以重新mount文件系统,访问文件系统数据,因为rmlv并不删除lv上的用户数据。
以下是恢复过程:
1, 需要知道原来逻辑卷所使用的pp
2,fs未被删除,即superblock等存在于pp上
3,删除lv后,未对现有系统的卷组结构做过改动
使用lspv –p hdiskx查看原有lv所使用的逻辑卷
ibm150:[/]#lspv -p hdisk0
hdisk0:
PP RANGE STATE REGION LV ID TYPE MOUNT POINT
1-109 free outer edge
110-110 used outer middle loglv00 jfslog N/A
111-210 used outer middle lv00 jfs /oracle
211-217 used outer middle lv02 jfs /sun
218-310 used center lv02 jfs /sun
311-325 free center
326-433 free inner middle
434-542 free inner edge
由上可知/sun 文件系统对应的是lv02逻辑卷,且pp分布于hdisk0的211-310上,共100个pp
ibm150:[/]#getlvcb -AT lv02
AIX LVCB
intrapolicy = m
copies = 1
interpolicy = x
lvid = 000af70d00004c0000000106e3964781.3
lvname = lv02
label = /sun
machine id = AF70D4C00
number lps = 100
relocatable = y
strict = y
stripe width = 0
stripe size in exponent = 0
type = jfs
upperbound = 32
fs = log=/dev/loglv00:options=rw:account=false
time created = Fri Oct 14 10:53:10 2005
time modified = Fri Oct 14 14:03:52 2005
ibm150:[/]#lqueryvg -Atp datavg
Max LVs: 256
PP Size: 25
Free PPs: 341
LV count: 3
PV count: 1
Total VGDAs: 2
Conc Allowed 0
MAX PPs per 1016
MAX PVs: 32
Conc Autovar 0
Varied on Co 0
Logical: 000af70d00004c0000000106e3964781.1 loglv00 1
000af70d00004c0000000106e3964781.2 lv00 1
000af70d00004c0000000106e3964781.3 lv02 1
Physical: 000af70de396426b 2 0
Total PPs: 542
LTG size: 256
HOT SPARE: 0
AUTO SYNC: 0
VG PERMISSIO 0
ibm150:[/]#cd sun
ibm150:[/sun]#ls
lost+found sun
知道sun下有文件sun
现在删除逻辑卷lv02
ibm150:[/]#umount /sun
ibm150:[/]#rmlv -f lv02
rmlv: Logical volume lv02 is removed.
ibm150:[/]#mount /sun
mount: 0506-324 Cannot mount /dev/lv02 on /sun: A file or directory in the path
name does not exist.
ibm150:[/]#cd sun
ibm150:[/sun]#ls
ibm150:[/sun]#
可以看到不能访问文件系统sun,且sun下也没有我们想要的数据。
在重建逻辑卷的时候,我们需要pp的一个mapfile,这可以通过之前的lspv -p hdisk0得知,文件格式如下:
ibm150:[/]#more ppmap.txt
hdisk0:211-310
具体信息可man mklv
ibm150:[/]#mklv -y lv02 -m ppmap.txt datavg 100
lv02
ibm150:[/]#mount /sun 因/etc/filesystems中还有/sun这个表项,mount会读取该文件
ibm150:[/]#cd sun
ibm150:[/sun]#ls
lost+found sun
可见文件系统恢复。
现在我们再来看看pp的分布
ibm150:[/]#getlvcb -AT lv02
AIX LVCB
intrapolicy = m
copies = 1
interpolicy = x
lvid = 000af70d00004c0000000106e3964781.3
lvname = lv02
label = None
machine id = AF70D4C00
number lps = 100
relocatable = y
strict = y
stripe width = 0
stripe size in exponent = 0
type = jfs
upperbound = 32
fs =
time created = Fri Oct 14 14:13:28 2005
time modified = Fri Oct 14 14:13:28 2005
ibm150:[/]#lspv -p hdisk0
hdisk0:
PP RANGE STATE REGION LV ID TYPE MOUNT POINT
1-109 free outer edge
110-110 used outer middle loglv00 jfslog N/A
111-210 used outer middle lv00 jfs /oracle
211-217 used outer middle lv02 jfs /sun
218-310 used center lv02 jfs /sun
311-325 free center
326-433 free inner middle
434-542 free inner edge
ibm150:[/]#lqueryvg -Atp datavg
Max LVs: 256
PP Size: 25
Free PPs: 341
LV count: 3
PV count: 1
Total VGDAs: 2
Conc Allowed 0
MAX PPs per 1016
MAX PVs: 32
Conc Autovar 0
Varied on Co 0
Logical: 000af70d00004c0000000106e3964781.1 loglv00 1
000af70d00004c0000000106e3964781.2 lv00 1
000af70d00004c0000000106e3964781.3 lv02 1
Physical: 000af70de396426b 2 0
Total PPs: 542
LTG size: 256
HOT SPARE: 0
AUTO SYNC: 0
VG PERMISSIO 0
我们再来看看如果把逻辑卷建在其他卷组上,是不是还能恢复?
ibm150:[/]#umount /sun
ibm150:[/]#rmlv -f lv02
rmlv: Logical volume lv02 is removed.
ibm150:[/]#mklv -y lv02 datavg 100 这里未指定pp的位置
lv02
ibm150:[/]#mount /sun
mount: 0506-324 Cannot mount /dev/lv02 on /sun: A system call received a paramet
er that is not valid.
结果无法mount 文件系统
ibm150:[/]#lspv -p hdisk0
hdisk0:
PP RANGE STATE REGION LV ID TYPE MOUNT POINT
1-9 free outer edge
10-109 used outer edge lv02 jfs /sun
110-110 used outer middle loglv00 jfslog N/A
111-210 used outer middle lv00 jfs /oracle
211-217 free outer middle
218-325 free center
326-433 free inner middle
434-542 free inner edge
我们发现逻辑卷使用的pp位置发生改变了,虽然其他信息没有改变。
现在我们看看如果在原来lv使用的pp位置重新建一个不一样的lv,注意确保lvid相同,但名字不同。 如果lvid不同呢???理论上效果是一样的,(但没有验证)。
ibm150:[/]#mklv -y lv03 -m ppmap.txt datavg 100
lv03
ibm150:[/]# mount /sun
mount: 0506-324 Cannot mount /dev/lv02 on /sun: A file or directory in the path
name does not exist.
ibm150:[/]#getlvcb -AT lv03
AIX LVCB
intrapolicy = m
copies = 1
interpolicy = x
lvid = 000af70d00004c0000000106e3964781.3
lvname = lv03
label = None
machine id = AF70D4C00
number lps = 100
relocatable = y
strict = y
stripe width = 0
stripe size in exponent = 0
type = jfs
upperbound = 32
fs =
time created = Fri Oct 14 14:30:25 2005
time modified = Fri Oct 14 14:30:25 2005
还是不能mount,原因很简单,lv名改变了,导致与/etc/filesystems的dev名不一致,需要修改/etc/filesystems文件。