关于LVM逻辑卷

简介 
逻辑卷是一种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
时间: 2024-08-22 15:24:41

关于LVM逻辑卷的相关文章

LVM逻辑卷管理

本次内容 1.什么是LVM 2.为什么使用LVM 3.LVM的操作命令 4.LVM的具体操作实现 一.什么是LVM LVM:Logical Volume Manager,即逻辑卷管理,它是Linux环境下的一种磁盘管理方式,其功能在于能弹性调整文件系统的容量.LVM中有几个专业名词,重点来说以下一个 PV:物理卷 LVM的基本存储逻辑块,但和基本的物理存储介质(如分区.磁盘等)比较,却包含有与LVM相关的管理参数. VG:卷组 由一个或多个PV构成,为上层的逻辑卷提供空间 LV:逻辑卷 类似于磁

LVM逻辑卷

1. 创建分区,分区类型:8e Linux LVM 2. 创建PV # pvcreate /dev/vdb{5,6,7} # pvs # pvdisplay               #查看PV信息 3. 创建VG # vgcreate vg0 /dev/vdb5 /dev/vdb6 选项:-s:指定PE的大小 # vgs # vgdisplay # vgdisplay vg0 -v        #可以查看vg0由哪几个PV组成  # vgchange -s 2M vg0      #更改P

LVM逻辑卷-创建、扩容、缩减、迁移、快照

LVM逻辑卷 逻辑卷管理工具,允许在多个物理设备之间重新组织文件系统,包括重新设定文件系统的大小 PE  物理盘区,类似于磁盘中的block 逻辑卷的基本存储单位就是PE dm:device mapper将一个或多个底层块设备组织成一个逻辑设备的模块 设备名:/dev/dm-#  //系统自动分配,常用软链接定义 软链接:两种方式表示 /dev/mapper/卷组-逻辑卷 /dev/卷组/逻辑卷 LVM可以弹性的修改容量 基本概念: pv  //物理卷 vg  //卷组 lv  //逻辑卷 本次

lvm逻辑卷的管理

lvm 逻辑卷管理 工作原理:它是将普通的磁盘管理动态化,我们可以将物理硬盘封装起来,将其转换为逻辑卷进行管理,他经过的过程为物理卷(pv)- 逻辑卷组(vg)-逻辑卷(lv) 步骤: 1:创建分区 fdisk /dev/sda 使得分区类型为8e 注:lsmod    #查看系统模块 df -lf   #查看系统分区 2:创建物理卷   #pvcreate /dev/sda10 物理卷支持: pvcreate  pvremove  pvdisplay  pvmove 3:创建逻辑卷组: #vg

Linux磁盘管理:LVM逻辑卷创建及使用

Linux磁盘管理:LVM逻辑卷创建及使用    一.创建LVM逻辑卷    通过图文并茂的方式来看看如何创建我们的LVM ,首先是要将我们的物理硬盘格式化成PV,然后将多个PV加入到创建好的VG中,最后通过VG创建我们的LV.所以我们第一步就是将我们的物理硬盘格式化成PV(物理卷) ①将物理硬盘格式化成PV(物理卷) 使用的是 pvcreate 命令 这里我已经事先虚拟化了3快物理硬盘,每块硬盘的大小为8G,通过 fdisk -l 命令可以查看 [[email protected] ~]# f

LVM逻辑卷基本概念及LVM的工作原理

这篇随笔将详细讲解Linux磁盘管理机制中的LVM逻辑卷的基本概念以及LVM的工作原理!!! 一.传统的磁盘管理 其实在Linux操作系统中,我们的磁盘管理机制和windows上的差不多,绝大多数都是使用MBR(Master Boot Recorder)都是通过先对一个硬盘进行分区,然后再将该分区进行文件系统的格式化,在Linux系统中如果要使用该分区就将其挂载上去即可,windows的话其实底层也就是自动将所有的分区挂载好,然后我们就可以对该分区进行使用了. 但是这种传统的磁盘管理经常会带来很

Linux LVM逻辑卷配置过程详解

Linux LVM逻辑卷配置过程详解 许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数据,甚至被迫重新规划分区并重装操作系统,以满足应用系统的需要. LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上.文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性.RHEL5默认安装的分区格式就是LVM逻辑卷的格式,需要注意的是/boot分区不能基于LVM创建,必须独立出

【转载】Linux磁盘管理:LVM逻辑卷管理

Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理 这篇随笔将详细讲解Linux磁盘管理机制中的LVM逻辑卷的基本概念以及LVM的工作原理!!! 一.传统的磁盘管理 其实在Linux操作系统中,我们的磁盘管理机制和windows上的差不多,绝大多数都是使用MBR(Master Boot Recorder)都是通过先对一个硬盘进行分区,然后再将该分区进行文件系统的格式化,在Linux系统中如果要使用该分区就将其挂载上去即可,windows的话其实底

[Linux] centOS 6.5 LVM 逻辑卷 管理 实验报告

目录 1.      LVM 简介 2.      LVM基本术语 3.      LVM的安装 4.      LVM的使用 4.1        物理卷的管理 4.2        卷组的管理: 4.3        逻辑卷的管理: 5.      一个例子 5.1        练习: 5.2        开始部署 1.   LVM 简介 LVM逻辑卷管理器(英语:Logical Volume Manager,缩写为LVM),又译为逻辑卷宗管理器.逻辑扇区管理器.逻辑磁盘管理器,是Lin

Linux服务器LVM逻辑卷配置过程

Linux服务器LVM逻辑卷配置过程 通过使用Linux的逻辑卷管理器(Logical Volume Manager, LVM),用户可以在系统运行时动态调整文件系统的大小,把数据从一块硬盘重定位到另一块硬盘,也可以提高I/O操作的性能,以及提供冗余保护,它的快照功能允许用户对逻辑卷进行实时的备份.对一般用户来讲,使用最多的是动态调整文件系统大小的功能.这样,你在分区时就不必为如何设置分区的大小而烦恼,只要在硬盘中预留出部分空闲空间,然后根据系统的使用情况,动态调整分区大小.以下为在VMware