首页 » 系统工具 » 正文

Linux挂载LVM分区的方法

这几天在折腾服务器遇到需要挂载第二块硬盘的问题 第二块硬盘做了LVM

经过查找 找到了解决办法备忘一下

#fdisk -l

[root@localhost/]# fdisk -l

Disk /dev/sda:36.7 GB, 36778545152 bytes

255 heads, 63sectors/track, 4471 cylinders

Units =cylinders of 16065 * 512 = 8225280 bytes

Device Boot     Start        End      Blocks   Id  System

/dev/sda1  *          1         13      104391   83  Linux

/dev/sda2             14        2463   19679625   83  Linux

/dev/sda3           2464        3949   11936295   83  Linux

/dev/sda4           3950        4471    4192965    5  Extended

/dev/sda5           3950        4471    4192933+  82  Linux swap / Solaris

Disk /dev/sdb:73.4 GB, 73407868928 bytes

255 heads, 63sectors/track, 8924 cylinders

Units =cylinders of 16065 * 512 = 8225280 bytes

Device Boot     Start        End      Blocks   Id  System

/dev/sdb1  *          1        8924   71681998+  8e  Linux LVM

Disk /dev/sdc:36.7 GB, 36703934464 bytes

255 heads, 63sectors/track, 4462 cylinders

Units =cylinders of 16065 * 512 = 8225280 bytes

Device Boot     Start        End      Blocks   Id  System

/dev/sdc1  *          1         13      104391   83  Linux

/dev/sdc2             14        4462   35736592+  8e  Linux LVM

[root@localhost/]# pvs

PV        VG         Fmt  Attr PSize PFree

/dev/sdb1            lvm2 —   68.36G 68.36G

/dev/sdc2  VolGroup00 lvm2 a-   34.06G 32.00M

sdc2就是我要挂接的

[root@localhost/]# vgscan

Readingall physical volumes.  This may take a while…

Foundvolume group “VolGroup00” using metadata type lvm2

[root@localhost/]# lvscan

inactive           ‘/dev/VolGroup00/LogVol00’ [32.09 GB] inherit

inactive          ‘/dev/VolGroup00/LogVol01’ [1.94 GB] inherit

可以看到新修改的VolGroup00是inactive状态

[root@localhost/]# vgchange -a y

2 logicalvolume(s) in volume group “VolGroup00” now active

[root@localhost/]# lvscan

ACTIVE           ‘/dev/VolGroup00/LogVol00’ [32.09 GB] inherit

ACTIVE           ‘/dev/VolGroup00/LogVol01’ [1.94 GB] inherit

好了,现在可以挂载了

[root@localhost/]# mount  -t ext3 /dev/VolGroup00/LogVol00 /d1

如果lvm两个卷同名,则需要对另一个进行重命名

[root@localhost~]# pvs

PV VG Fmt AttrPSize PFree

/dev/hda2VolGroup00 lvm2 a- 76.22G 32.00M

/dev/hdc2VolGroup00 lvm2 a- 74.38G 32.00M

两个VG名称居然一样,

[root@localhost~]# vgrename VolGroup00 VolGroup88

Found more thanone VG called VolGroup00. Please supply VG uuid.

[root@localhost~]#vgrename 0iHE6T-dGIa-zkG2-Hn6f-heiH-OOwD-OzRmEt VolGroup88

Volumegroup “VolGroup00″ still has active LVs

卸载

vgchange -a n/dev/Volxxx

kpartx -d/dev/loopx

losetup -d/dev/loopx

[root@shmymdev]# vgscan

Readingall physical volumes.  This may take a while…

Foundvolume group “VolGroup00” using metadata type lvm2

Foundvolume group “VolGroup00” using metadata type lvm2

[root@shmymdev]# pvscan

PV/dev/sda2   VG VolGroup00   lvm2 [68.25 GB / 64.00 MB free]

PV/dev/hda2   VG VolGroup00   lvm2 [232.78 GB / 160.00 MBfree]

Total: 2[301.03 GB] / in use: 2 [301.03 GB] / in no VG: 0 [0   ]

[root@shmymdev]# pvs

PV        VG         Fmt  AttrPSize   PFree

/dev/hda2  VolGroup00 lvm2 a-   232.78G 160.00M

/dev/sda2  VolGroup00 lvm2 a-    68.25G  64.00M

[root@shmymdev]# vg

vgcfgbackup  vgconvert     vgextend     vgreduce      vgscan

vgcfgrestore vgcreate      vgimport     vgremove      vgsplit

vgchange     vgdisplay     vgmerge      vgrename

vgck         vgexport      vgmknodes     vgs

[root@shmymdev]# vgrename -h

vgrename:Rename a volume group

vgrename

[-A|–autobackup y|n]

[-d|–debug]

[-h|–help]

[-t|–test]

[-v|–verbose]

[–version]

OldVolumeGroupPath NewVolumeGroupPath |

OldVolumeGroupName NewVolumeGroupName

[root@shmymdev]# vgrename VolGroup00 VolGroup01

Foundmore than one VG called VolGroup00. Please supply VG uuid.

解释:找到一个以上的卷组名为VolGroup00。请提供卷组的UUID 。

[root@shmymdev]# vgdisplay

—Volume group —

VGName              VolGroup00

System ID

Format               lvm2

MetadataAreas        1

MetadataSequence No  3

VGAccess            read/write

VGStatus            resizable

MAXLV               0

CurLV               2

OpenLV              2

MaxPV               0

CurPV               1

ActPV               1

VGSize              68.25 GB

PESize              32.00 MB

TotalPE             2184

Alloc PE/ Size       2182 / 68.19 GB

Free  PE / Size       2 / 64.00 MB

VGUUID              0iHE6T-dGIa-zkG2-Hn6f-heiH-OOwD-OzRmEt

—Volume group —

VGName              VolGroup00

System ID

Format               lvm2

MetadataAreas        1

MetadataSequence No  3

VGAccess            read/write

VGStatus            resizable

MAXLV               0

CurLV               2

OpenLV              2

MaxPV               0

CurPV               1

ActPV               1

VGSize              232.78 GB

PESize              32.00 MB

TotalPE             7449

Alloc PE/ Size       7444 / 232.62 GB

Free  PE / Size       5 / 160.00 MB

VGUUID              5QwszM-BM1o-oG9i-sI8Y-T3Yw-sp0X-v6U2Pn

使用LVM逻辑卷管理的利弊

解决方案

在以往的Linux系统中(比RedhatAS4更早的版本),默认是不支持LVM逻辑卷管理的

当磁盘连接到服务器后,使用fdisk将其划分为主分区和扩展分区

随后直接把分区进行格式化,生成诸如/dev/sda1、/dev/sda2之类的分区

这些分区可以直接用mount命令挂载到目录来使用

当应用了LVM后,磁盘分区/dev/sda1、/dev/sda2这样的分区会被LVM认为是一整个VG,即卷组

这样的卷组是不能直接挂载的

要由LVM转换成/dev/VolGroup01这样的VG卷组

然后每个卷组又包含/dev/VolGroup01/LogVol01这样的LV,即逻辑卷

当使用他们的时候,需要将/dev/VolGroup01/LogVol01挂载到目录

因此,LVM虽然提供了可调节分区(卷)大小的能力

但是由于其PV->VG-LV三层架构的存在,在后期数据迁移和恢复上比较复杂

例如,当前磁盘使用了/dev/VolGroup00/LogVol01这样的名称

把这块磁盘挂载到其他服务器上后,如果存在另外一块硬盘名称也是由LVM管理

并且默认也使用了“/dev/VolGroup00/LogVol01”的名称

那么两个硬盘的VG名称冲突,就无法继续挂载LV读取数据了

这种冲突,在两个硬盘都是数据磁盘的时候,还可以修改名称来解决

但是,如果冲突双方中的一块是系统硬盘,那么则LVM拒绝对磁盘做卸载、改名等处理

此时第二块硬盘里边的数据就恢复不出来了

唯一的解决方法是把这个硬盘挂载到其他没有使用LVM的服务器上

或者找一个使用了LVM但是VG卷组名称不一样的服务器上

这是LVM设计应用中的一个无法解决的bug

因此,在服务器上,为了保证尽可能好的后期灾难恢复,不推荐用LVM

最好使用简单直接使用磁盘分区格式化,以便恢复数据

如果非要用LVM,请注意,在安装系统分区之初,就给自己磁盘的LVM起一个不容易冲突的唯一的名字

例如/dev/VolHehe001、/dev/VolHehe002等

参考地址:

http://ljx198308.blog.163.com/blog/static/1762742462011292134116/