文件系统是在逻辑卷的基础上建立的,没有逻辑卷的话,就无法mount文件系统。

在删除逻辑卷的时候,rmlv删除的只是在ODMVG里的PVVGDA区域里的相关lv的信息,也就是被删除lv上第一个PP上的头512字节 LVCB信息。即三个地方的信息被删除

1,              ODM

2,              VGDA

3,              Lv上的lvcb信息

只要你在原来lv所分配的ppmklv添加上lvcb信息,就可以重新mount文件系统,访问文件系统数据,因为rmlv并不删除lv上的用户数据。

以下是恢复过程:

1,  需要知道原来逻辑卷所使用的pp

2fs未被删除,即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分布于hdisk0211310上,共100pp

 

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/filesystemsdev名不一致,需要修改/etc/filesystems文件。