简介
逻辑卷是一种device mapper技术,即可以将一个或者多个底层块设备组织成一个逻辑设备,从而提供动态改变大小,不停机情况下添加磁盘,快照以及备份 等功能,使得对于磁盘的管理更加方便。
逻辑卷的组成结构
逻辑卷的组成如下图所示:
从上图中可以看出,整个逻辑卷的体系分为3个层次:
底层的PV
中层的VG
最上层的LV
最底层的PV作为整个逻辑卷体系的最底层,可以理解为打上了可以被纳入逻辑卷管理体系的标签的整块磁盘或者磁盘上的某个分区;中间层的VG是逻辑卷的卷组,由一个或者多个PV组成,并且用同一标准进行分块,每一块被称为PE(Physical Extent)或者PP(Physical Partition),作为LVM的最小寻址单元;最上层的LV是从VG中划分出来的卷,并且作为设备文件,可以在其上面创建各种linux支持的文件系统。在LV层面也有一个概念LE(Logical Extent)。LE与PE一一对应。
针对LVM底层PV的一些基本操作
对于底层的PV而言,操作的命令如下表所示:
命令 | 解释 |
---|---|
pvchange | 控制指定PV是否可以分派新空间的权限 |
pvck | 检查PV的LVM元数据的一致性 |
pvcreate | 将指定磁盘或分区转化为PV |
pvdisplay | 详细地查看系统当前的PV情况 |
pvmove | 在同一VG卷组里面移动一个PV的数据到另一个PV里面 |
pvremove | 删除PV标签,即移除PV |
pvs | 简略地查看系统当前的PV情况 |
pvresize | 当PV对应的设备分区(如md软raid)扩容之后,利用该命令可以扩容PV |
pvscan | 扫描所有打着PV标签的设备文件 |
一些pv操作的实验如下所示:
$ lsblk /dev/sdb /dev/sdd1 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 7G 0 disk sdd1 8:49 0 7G 0 part 创建pv $ pvcreate /dev/sdb /dev/sdd1 Physical volume "/dev/sdb" successfully created Physical volume "/dev/sdd1" successfully created 查看pv $ pvs PV VG Fmt Attr PSize PFree /dev/sdb lvm2 --- 7.00g 7.00g /dev/sdd1 lvm2 --- 7.00g 7.00g 扫描pv $ pvscan PV /dev/sdb lvm2 [7.00 GiB] PV /dev/sdd1 lvm2 [7.00 GiB] Total: 2 [14.00 GiB] / in use: 0 [0 ] / in no VG: 2 [14.00 GiB] 检查pv元数据 $ pvck /dev/sdb Found label on /dev/sdb, sector 1, type=LVM2 001 Found text metadata area: offset=4096, size=1044480 $ pvck /dev/sdd1 Found label on /dev/sdd1, sector 1, type=LVM2 001 Found text metadata area: offset=4096, size=1044480 删除pv $ pvremove /dev/sdd1 Labels on physical volume "/dev/sdd1" successfully wiped
针对LVM中层VG的一些基本操作
对于中层的VG而言,操作的命令如下表所示
命令 | 命令解释 |
---|---|
vgcfgbackup | 备份VG描述文件(默认/etc/lvm/backup,亦可自由指定) |
vgcfgrestore | 从备份的VG描述文件对VG元数据进行恢复 |
vgck | 检查VG |
vgchange | 修改特定VG的属性,包括是否激活,uuid号,…… |
vgconvert | 修改VG元数据格式,例如从LVM1改为LVM2 |
vgcreate | 创建VG卷组 |
vgs | 简略地查看系统VG卷组情况 |
vgdisplay | 详细地查看系统VG卷组的使用情况 |
vgexport | 将特定VG变为未知状态,用于迁移卷组到别的系统上面 |
vgimport | 将未知状态的特定VG卷组变为正常状态,用于迁移卷组到别的系统上面 |
vgextend | 将PV添加到特定VG中 |
vgimportclone | 用于导入重复的卷组(例如某卷组的快照),并修改其UUID |
vgmerge | 在满足特定条件下,对多个卷组进行归并 |
vgmknodes | 重新创建卷组设备目录以及逻辑卷特殊文件 |
vgreduce | 将未使用的PV从特定VG中移除 |
vgremove | 移除特定VG |
vgrename | 重命名指定VG的名称 |
vgsplit | 将指定的PV从一个VG里面挪动到另一个VG里面 |
vgscan | 扫描系统的VG |
一些vg的操作如下所示
$ pvs PV VG Fmt Attr PSize PFree /dev/sdb lvm2 --- 7.00g 7.00g /dev/sdc1 lvm2 --- 4.00g 4.00g /dev/sdd1 lvm2 --- 7.00g 7.00g 创建vg0和vg1 $ vgcreate vg0 /dev/sdb /dev/sdd1 Volume group "vg0" successfully created $ vgcreate vg1 /dev/sdc1 Volume group "vg1" successfully created 查看vg $ vgs VG #PV #LV #SN Attr VSize VFree vg0 2 0 0 wz--n- 13.99g 13.99g vg1 1 0 0 wz--n- 4.00g 4.00g 扫描vg $ vgscan Reading all physical volumes. This may take a while... Found volume group "vg0" using metadata type lvm2 Found volume group "vg1" using metadata type lvm2 从vg0中移除/dev/sdd1 $ vgreduce vg0 /dev/sdd1 Removed "/dev/sdd1" from volume group "vg0" 将/dev/sdd1添加到vg1当中 $ vgextend vg1 /dev/sdd1 Volume group "vg1" successfully extended 将/dev/sdd1从vg1挪动到vg0当中 $ vgs VG #PV #LV #SN Attr VSize VFree vg0 1 0 0 wz--n- 7.00g 7.00g vg1 2 0 0 wz--n- 10.99g 10.99g $ vgsplit vg1 vg0 /dev/sdd1 Existing volume group "vg0" successfully split from "vg1" $ vgs VG #PV #LV #SN Attr VSize VFree vg0 2 0 0 wz--n- 13.99g 13.99g vg1 1 0 0 wz--n- 4.00g 4.00g
针对LVM上层LV的一些基本操作
对于上层的LV而言,操作命令如下表所示:
命令 | 命令解释 |
---|---|
lvchange | 修改指定LV的一些属性,包括是否是激活状态、是否只读…… |
lvconvert | 转换指定LV的属性,从线性转化为镜像或者快照 |
lvcreate | 创建LV |
lvs | 简略地查看系统内的LV情况 |
lvdisplay | 详细地查看系统内的LV情况 |
lvextend | 扩展指定LV的容量大小 |
lvm | 管理LVM的一个shell工具 |
lvmconf | LVM配置修改器 |
lvmconfig | 查看LVM配置的工具 |
lvmdiskscan | 扫描所有LVM2可见的设备 |
lvmdump | 创建LVM的dump文件,用于诊断 |
lvmetad | 缓存LVM元数据的守护程序 |
lvmpolld | LVM操作命令的轮询守护程序 |
lvreduce | 缩容指定的LV |
lvremove | 删除指定的LV |
lvrename | 重命名指定的LV |
lvresize | 调整指定LV的大小,即可以扩容也可以缩容 |
lvscan | 扫描系统的LV |
一些LV的操作如下所示:
创建逻辑卷lv0 $ lvcreate -n lv0 -L 10G vg0 查看系统内的逻辑卷情况 $ lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv0 vg0 -wi-ao---- 10.00g 逻辑卷的扩容 $ lvextend -L +2G /dev/vg0/lv0 Size of logical volume vg0/lv0 changed from 10.00 GiB (2560 extents) to 12.00 GiB (3072 extents). Logical volume lv0 successfully resized. 同步文件系统(如果是ext文件系统,则使用resize2fs命令) $ xfs_growfs /dev/vg0/lv0 meta-data=/dev/mapper/vg0-lv0 isize=256 agcount=4, agsize=655360 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 data = bsize=4096 blocks=2621440, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 2621440 to 3145728 逻辑卷的缩容(只针对ext文件系统) 如何缩减lvs? $ 首先,取消挂载 umount /mnt/lv0 其次,缩减文件系统 $ resize2fs /dev/vg/lv0 50G ext文件系统缩减到50G xfs文件系统只能扩不能缩。。。 然后,缩减逻辑卷 $ lvreduce -L 50G /dev/vg/lv0 最后,再挂载 $ mount /dev/vg/lv0 /mnt/lv0 注意! lvextend -r 选项,就直接resizefs了,因此,就不需要再resize2fs或者xfs_growfs了
关于LVM的快照功能
LVM快照是一种以空间换时间时间的方式制作的lvm卷副本。它只在lvm中工作,并只在源逻辑卷发生改变时占用快照卷的空间。如果源卷的变化达到1GB这么大,快照卷同样也会产生这样大的改变。因而,对于空间有效利用的最佳途径,就是总是进行小的修改。如果快照将存储空间消耗殆尽,我们可以使用lvextend来扩容。而如果我们需要缩减快照所占用卷的大小,可以使用lvreduce。实验如下:
目标逻辑卷信息如下:
$ pvs PV VG Fmt Attr PSize PFree /dev/sdb vg0 lvm2 a-- 7.00g 0 /dev/sdd1 vg0 lvm2 a-- 7.00g 1.99g $ vgs VG #PV #LV #SN Attr VSize VFree vg0 2 1 0 wz--n- 13.99g 1.99g $ lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv0 vg0 -wi-ao---- 12.00g
现在对逻辑卷lv0创建快照,命名为snaplv0
$ lvcreate -s -n snaplv0 -p r -L 1G /dev/vg0/lv0 Logical volume "snaplv0" created. $ vgs VG #PV #LV #SN Attr VSize VFree vg0 2 2 1 wz--n- 13.99g 1016.00m $ lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv0 vg0 owi-aos--- 12.00g snaplv0 vg0 sri-a-s--- 1.00g lv0 0.00
这里/dev/vg0/lv0的挂载点为/mnt。往/mnt里面写入300MB的随机文件,再观察快照情况,可以看 到,快照对应的Data一项有所增长:
$ dd if=/dev/urandom of=/mnt/2.txt bs=1M count=300 300+0 records in 300+0 records out 314572800 bytes (315 MB) copied, 27.5877 s, 11.4 MB/s $ ls 1.txt 2.txt data $ lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv0 vg0 owi-aos--- 12.00g snaplv0 vg0 sri-a-s--- 1.00g lv0 29.42
用snaplv0对逻辑卷进行恢复,注意恢复之前需要先将对应的逻辑卷卸载。恢复之后可以看到,原有的snaplv0消失,因此可以得出结论,LVM的快照是一次性的:
$ umount /mnt $ lvconvert --merge /dev/vg0/snaplv0 Merging of volume snaplv0 started. lv0: Merged: 71.0% lv0: Merged: 91.9% lv0: Merged: 100.0% $ ls /dev/vg0 lv0 $ mount /dev/vg0/lv0 /mnt $ ls /mnt 1.txt data
如果想要删除LVM快照,用lvremove
命令,后面跟上快照设备文件的绝对路径即可,例如:
$ lvremove /dev/vg0/snaplv0
LVM实验:利用元数据恢复PV,VG,LV
目的是利用通过命令vgcfgbackup
命令生成的元数据文件,在磁盘数据文件没有被损坏的前提下,进行恢复。
目标PV,VG,LV如下所示:
$ pvs PV VG Fmt Attr PSize PFree /dev/sdb vg0 lvm2 a-- 7.00g 0 /dev/sdd1 vg0 lvm2 a-- 7.00g 1.99g $ vgs VG #PV #LV #SN Attr VSize VFree vg0 2 1 0 wz--n- 13.99g 1.99g $ lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv0 vg0 -wi-ao---- 12.00g
lv0的挂载点是/mnt,使用xfs文件系统,存在如下文件:
$ ls -al /mnt total 8 drwxr-xr-x 3 root root 29 May 6 17:08 . dr-xr-xr-x. 18 root root 4096 Apr 25 23:05 .. -rw-r--r-- 1 root root 292 May 6 17:08 1.txt drwxr-xr-x 2 root root 6 May 6 17:08 data
首先确保元数据的备份文件存在(需要利用这个文件进行恢复),这里利用命令生成最新的备份。之后将lv0,vg0,PV通通删掉:
$ vgcfgbackup -f /root/vg0.bak vg0 Volume group "vg0" successfully backed up. $ umount /mnt $ lvremove vg0/lv0 Do you really want to remove active logical volume lv0? [y/n]: y Logical volume "lv0" successfully removed $ vgremove vg0 Volume group "vg0" successfully removed $ pvremove /dev/sdb /dev/sdd1 Labels on physical volume "/dev/sdb" successfully wiped Labels on physical volume "/dev/sdd1" successfully wiped $ lvmdiskscan /dev/sda1 [ 953.00 MiB] /dev/sda2 [ 1.91 GiB] /dev/sda3 [ 27.16 GiB] /dev/sdb [ 7.00 GiB] /dev/sdc1 [ 4.00 GiB] /dev/sdd1 [ 7.00 GiB] 1 disk 5 partitions 0 LVM physical volume whole disks 0 LVM physical volumes
下面进行恢复:首先恢复PV。通过查询元数据备份文件,找到每个PV设备对应的id号,将这个id号作为对应设备的uuid,重新创建PV
$ pvcreate -u d6byj1-LWmt-uYoo-urlW-43ub-yphK-ehsv9L --norestorefile /dev/sdb Physical volume "/dev/sdb" successfully created $ pvcreate -u Cqmq98-FPWc-sqnk-Weql-5w9l-IHrM-7efcSi --norestorefile /dev/sdd1 Physical volume "/dev/sdd1" successfully created $ pvs PV VG Fmt Attr PSize PFree /dev/sdb lvm2 --- 7.00g 7.00g /dev/sdd1 lvm2 --- 7.00g 7.00g
恢复完PV之后,创建一个“空”的VG,命名为需要恢复的目标VG的名称,这里为vg0
$ vgcreate -v vg0 /dev/sdb /dev/sdd1 Adding physical volume ‘/dev/sdb‘ to volume group ‘vg0‘ Adding physical volume ‘/dev/sdd1‘ to volume group ‘vg0‘ Archiving volume group "vg0" metadata (seqno 0). Creating volume group backup "/etc/lvm/backup/vg0" (seqno 1). Volume group "vg0" successfully created $ vgs VG #PV #LV #SN Attr VSize VFree vg0 2 0 0 wz--n- 13.99g 13.99g
下一步,利用之前的备份文件,将LV恢复至这个空的VG当中,并激活LV
$ vgcfgrestore -f /root/vg0.bak vg0 Restored volume group vg0 $ lvdisplay --- Logical volume --- LV Path /dev/vg0/lv0 LV Name lv0 VG Name vg0 LV UUID 95c1sX-vLDO-1QYI-RaYj-BI8P-h1ka-xFwVoK LV Write Access read/write LV Creation host, time centos7-front1, 2017-05-06 17:08:02 +0800 LV Status NOT available LV Size 12.00 GiB Current LE 3072 Segments 2 Allocation inherit Read ahead sectors auto $ lvchange -ay vg0/lv0 $ lvdisplay --- Logical volume --- LV Path /dev/vg0/lv0 LV Name lv0 VG Name vg0 LV UUID 95c1sX-vLDO-1QYI-RaYj-BI8P-h1ka-xFwVoK LV Write Access read/write LV Creation host, time centos7-front1, 2017-05-06 17:08:02 +0800 LV Status available # open 0 LV Size 12.00 GiB Current LE 3072 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0
将lv0重新挂载,可以看到数据了
$ mount /dev/vg0/lv0 /mnt $ cd /mnt $ ls 1.txt data
LVM实验:同一VG当中已存有数据的PE块的数据移动
利用LVM的线性存储机制,将同一个VG当中某个PV上面的PE数据内容移动到另一个PV的PE上面。
这里依然使用上面实验用到的vg0和lv0,信息如下
$ ls -al /mnt total 56 drwxr-xr-x 3 root root 29 May 6 17:08 . dr-xr-xr-x. 18 root root 4096 Apr 25 23:05 .. -rw-r--r-- 1 root root 49186 May 6 23:11 1.txt drwxr-xr-x 2 root root 6 May 6 17:08 data $ pvs PV VG Fmt Attr PSize PFree /dev/sdb vg0 lvm2 a-- 7.00g 0 /dev/sdd1 vg0 lvm2 a-- 7.00g 1.99g $ pvdisplay --- Physical volume --- PV Name /dev/sdb VG Name vg0 PV Size 7.00 GiB / not usable 4.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 1791 Free PE 0 Allocated PE 1791 PV UUID d6byj1-LWmt-uYoo-urlW-43ub-yphK-ehsv9L --- Physical volume --- PV Name /dev/sdd1 VG Name vg0 PV Size 7.00 GiB / not usable 4.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 1791 Free PE 510 Allocated PE 1281 PV UUID Cqmq98-FPWc-sqnk-Weql-5w9l-IHrM-7efcSi $ vgs VG #PV #LV #SN Attr VSize VFree vg0 2 1 0 wz--n- 13.99g 1.99g $ vgdisplay --- Volume group --- VG Name vg0 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 21 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 2 Act PV 2 VG Size 13.99 GiB PE Size 4.00 MiB Total PE 3582 Alloc PE / Size 3072 / 12.00 GiB Free PE / Size 510 / 1.99 GiB VG UUID 1RD1In-314z-awRk-wDfS-FIVL-cB7i-BzrEwv
将/dev/sdb这个PV当中的第0个到第200个PE,移动到/dev/sdd1这个PV上面。由上述信息可以观察到,在/dev/sdd1上面已经有1281个PE被使用了,因此,这里将/dev/sdb的PE移动到编号为1282开始往后200个的位置
$ pvmove /dev/sdb:0-200 /dev/sdd1:1282-1482 /dev/sdb: Moved: 0.0% /dev/sdb: Moved: 91.0% /dev/sdb: Moved: 100.0% $ pvs PV VG Fmt Attr PSize PFree /dev/sdb vg0 lvm2 a-- 7.00g 804.00m /dev/sdd1 vg0 lvm2 a-- 7.00g 1.21g $ vgs VG #PV #LV #SN Attr VSize VFree vg0 2 1 0 wz--n- 13.99g 1.99g $ pvdisplay --- Physical volume --- PV Name /dev/sdb VG Name vg0 PV Size 7.00 GiB / not usable 4.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 1791 Free PE 201 Allocated PE 1590 PV UUID d6byj1-LWmt-uYoo-urlW-43ub-yphK-ehsv9L --- Physical volume --- PV Name /dev/sdd1 VG Name vg0 PV Size 7.00 GiB / not usable 4.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 1791 Free PE 309 Allocated PE 1482 PV UUID Cqmq98-FPWc-sqnk-Weql-5w9l-IHrM-7efcSi $ vgdisplay --- Volume group --- VG Name vg0 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 24 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 2 Act PV 2 VG Size 13.99 GiB PE Size 4.00 MiB Total PE 3582 Alloc PE / Size 3072 / 12.00 GiB Free PE / Size 510 / 1.99 GiB VG UUID 1RD1In-314z-awRk-wDfS-FIVL-cB7i-BzrEwv
通过pvs再次看到的内容发现/dev/sdb的PFree由0增加到了804.1m,而/dev/sdd1的PFree由1.99g下降到了1.21g,正是由于移动PE所造成的结果。
LVM实验:卷组从A机器迁移到B机器
实验环境和上面的环境相同:
$ pvs PV VG Fmt Attr PSize PFree /dev/sdb vg0 lvm2 a-- 7.00g 804.00m /dev/sdd1 vg0 lvm2 a-- 7.00g 1.21g $ vgs VG #PV #LV #SN Attr VSize VFree vg0 2 1 0 wz--n- 13.99g 1.99g $ lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv0 vg0 -wi-a----- 12.00g $ mount /dev/vg0/lv0 /mnt $ ls -al /mnt total 56 drwxr-xr-x 3 root root 29 May 6 17:08 . dr-xr-xr-x. 18 root root 4096 Apr 25 23:05 .. -rw-r--r-- 1 root root 49186 May 6 23:11 1.txt drwxr-xr-x 2 root root 6 May 6 17:08 data
在迁移之前,先给需要迁移的VG(vg0)和LV(lv0)改个名字,这么做一是为了给需要迁移的卷组逻辑卷做个标识,二是防止卷组和逻辑卷和迁移的目标机上面的名称重复
$ vgrename vg0 migratevg0 Volume group "vg0" successfully renamed to "migratevg0" $ lvrename migratevg0/lv0 migratelv0 Renamed "lv0" to "migratelv0" in volume group "migratevg0" $ vgs VG #PV #LV #SN Attr VSize VFree migratevg0 2 1 0 wz--n- 13.99g 1.99g $ lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert migratelv0 migratevg0 -wi-ao---- 12.00g
下一步将该逻辑卷取消挂载,以防止有数据再写入。取消挂载之后,再禁用该卷组,并将其设定为导出状态
$ pvs PV VG Fmt Attr PSize PFree /dev/sdb migratevg0 lvm2 a-- 7.00g 804.00m /dev/sdd1 migratevg0 lvm2 a-- 7.00g 1.21g $ umount /mnt $ vgchange -an migratevg0 0 logical volume(s) in volume group "migratevg0" now active $ vgexport migratevg0 Volume group "migratevg0" successfully exported
由于vg0由两个PV组成,一个是/dev/sdb,另一个是/dev/sdd1。考虑到拆卸整个/dev/sdd比较麻烦,因此这里采用拷贝的方式进行迁移。首先用dd命令将/dev/sdb和/dev/sdd1拷贝到单独的文件当中
$ dd if=/dev/sdb of=vg0sdb 14680064+0 records in 14680064+0 records out 7516192768 bytes (7.5 GB) copied, 122.591 s, 61.3 MB/s $ dd if=/dev/sdd1 of=vg0sdd1 14680064+0 records in 14680064+0 records out 7516192768 bytes (7.5 GB) copied, 147.627 s, 50.9 MB/s
下一步将vg0sdb和vg0sdd1这两个文件拷贝到目标机器上面。拷贝完毕之后,在目标机器上面利用/dev/loop机制,将这两个文件挂载为loop设备
$ losetup -P /dev/loop0 /root/vg0sdb $ losetup -P /dev/loop1 /root/vg0sdd1
利用pvscan
命令扫描目标机上面的PV设备,可以看到目标机已经识别到了/dev/loop设备的PV
$ pvscan PV /dev/loop0 is in exported VG migratevg0 [7.00 GiB / 804.00 MiB free] PV /dev/loop1 is in exported VG migratevg0 [7.00 GiB / 1.21 GiB free] PV /dev/sdg1 is in exported VG newvg0 [3.98 GiB / 1.97 GiB free] PV /dev/sdh1 is in exported VG newvg0 [4.98 GiB / 0 free] Total: 4 [22.96 GiB] / in use: 4 [22.96 GiB] / in no VG: 0 [0 ] $ vgs VG #PV #LV #SN Attr VSize VFree migratevg0 2 1 0 wzx-n- 13.99g 1.99g newvg0 2 1 0 wzx-n- 8.97g 1.97g $ vgdisplay --- Volume group --- VG Name newvg0 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 6 VG Access read/write VG Status exported/resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 8.97 GiB PE Size 16.00 MiB Total PE 574 Alloc PE / Size 448 / 7.00 GiB Free PE / Size 126 / 1.97 GiB VG UUID EqQ4Cn-5ZUD-C2g9-PEpH-tYf8-NMsD-CL264M --- Volume group --- VG Name migratevg0 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 27 VG Access read/write VG Status exported/resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 13.99 GiB PE Size 4.00 MiB Total PE 3582 Alloc PE / Size 3072 / 12.00 GiB Free PE / Size 510 / 1.99 GiB VG UUID 1RD1In-314z-awRk-wDfS-FIVL-cB7i-BzrEwv
下一步导入VG,并设置该VG为激活状态,便可以进行挂载使用了
$ vgimport migratevg0 Volume group "migratevg0" successfully imported $ vgchange -ay migratevg0 1 logical volume(s) in volume group "migratevg0" now active $ mount /dev/migratevg0/migratelv0 /mnt $ ls -al /mnt total 56 drwxr-xr-x 3 root root 29 May 6 05:08 . dr-xr-xr-x. 19 root root 4096 Mar 20 11:20 .. -rw-r--r-- 1 root root 49186 May 6 2017 1.txt drwxr-xr-x 2 root root 6 May 6 05:08 data
如果想要卸载这种作为loop设备挂载的LVM,需要将loop驱动重新加载
$ umount /mnt $ vgchange -an migratevg0 0 logical volume(s) in volume group "migratevg0" now active $ vgexport migratevg0 Volume group "migratevg0" successfully exported $ losetup -d /dev/loop0 $ losetup -d /dev/loop1 $ dmsetup remove_all #这一步非常重要 $ modprobe -r loop $ modprobe loop
本文出自 “技术成就梦想” 博客,请务必保留此出处http://jiangche00.blog.51cto.com/4377920/1922748
原文地址:http://jiangche00.blog.51cto.com/4377920/1922748