《LINUX入门:LVM逻辑卷-创建、扩容、缩减、迁移、快照》要点: 本文介绍了LINUX入门:LVM逻辑卷-创建、扩容、缩减、迁移、快照,希望对您有用。如果有疑问,可以联系我们。
LVM逻辑卷 逻辑卷管理工具,允许在多个物理设备之间重新组织文件系统,包含重新设定文件系统的大小 PE? 物理盘区,类似于磁盘中的block 逻辑卷的基本存储单位就是PE

dm:device mapper将一个或多个底层块设备组织成一个逻辑设备的模块 设备名:/dev/dm-#? //系统自动分配,常用软链接定义 软链接:两种方式表现 /dev/mapper/卷组-逻辑卷 /dev/卷组/逻辑卷 LVM可以弹性的修改容量
根本概念: pv? //物理卷 vg? //卷组 lv? //逻辑卷 本次实验使用CentOS6版本,并在vmware虚拟机上操作
实验一 创建逻辑卷 第1步:准备三个磁盘sdb、sdc、sdd,创建物理卷 [root@CentOs6 ~]#fdisk /dev/sdb? #使用fdisk命令对磁盘sdb分区 Device Boot? ? ? Start? ? ? ? End? ? ? Blocks? Id? System /dev/sdb1? ? ? ? ? ? ? 1? ? ? ? 132? ? 1060258+? 8e? Linux LVM #因为是实验这里只分1G容量,system类型修改成LVM dd if=/dev/sdb of=/dev/sdc bs=1 count=512 dd if=/dev/sdb of=/dev/sdd bs=1 count=512 #将sdb的分区表复制到sdc和sdd,这样三块磁盘分区一致 partx -a /dev/sd{b,c,d}? #同步磁盘与内存信息 lsblk? #检查同步结果 #上面步调,我们从三块磁盘取出三个大小、类型一样的分区/dev/sdb1、 /dev/sdc1和/dev/sdd1 [root@CentOs6 ~]#pvcreate? /dev/sd{b,d}1? #创建3个物理卷pv [root@CentOs6 ~]#pvs? #查看物理卷摘要信息 ? PV? ? ? ? VG? Fmt? Attr PSize PFree? #VG为空,是因为我们还没创建卷组 ? /dev/sdb1? ? ? lvm2 ---- 1.01g 1.01g ? /dev/sdc1? ? ? lvm2 ---- 1.01g 1.01g ? /dev/sdd1? ? ? lvm2 ---- 1.01g 1.01g [root@CentOs6 ~]#pvdisplay? /dev/sdb1? ? #pvdisplay显示详细的物理卷信息,此处只列出一个物理卷分析 ? "/dev/sdb1" is a new physical volume of "1.01 GiB" ? --- NEW Physical volume --- ? PV Name? ? ? ? ? ? ? /dev/sdb1? #物理卷名称 ? VG Name? ? ? ? ? ? ? ? ? ? ? ? ? #因为没加入卷组,所以此处为空 ? PV Size? ? ? ? ? ? ? 1.01 GiB? #物理卷容量,跟我们规划的一样 ? Allocatable? ? ? ? ? NO? ? ? ? ? ? #因为还未加入卷组,所以下面选项为空 ? PE Size? ? ? ? ? ? ? 0? ? ? ? ? #PE是物理卷的基本容量单位 ? Total PE? ? ? ? ? ? ? 0 ? Free PE? ? ? ? ? ? ? 0 ? Allocated PE? ? ? ? ? 0 ? PV UUID? ? ? ? ? ? ? iRkKni-iG3a-U38w-bXGn-aIGV-bP14-Pua8bc
第2步:创建卷组,其容量为各个物理卷的总和 [root@CentOs6 ~]#vgcreate v-group /dev/sd{b,d}1? #创建包含3个分区的卷组,名称为v-group ? Volume group "v-group" successfully created [root@CentOs6 ~]#vgs? #显示卷组的摘要信息 ? VG? ? ? #PV #LV #SN Attr? VSize VFree ? v-group? 3? 0? 0 wz--n- 3.02g 3.02g [root@CentOs6 ~]#vgdisplay? #显示卷组的详细信息 ? --- Volume group --- ? VG Name? ? ? ? ? ? ? v-group? ? ? ? #卷组名称? ? ? ? ? ? VG Access? ? ? ? ? ? read/write? #卷组的拜访形式是读写 ? VG Status? ? ? ? ? ? resizable? ? ? #卷组容量大小可调 ? MAX LV? ? ? ? ? ? ? ? 0 ? Cur LV? ? ? ? ? ? ? ? 0 ? Open LV? ? ? ? ? ? ? 0 ? Max PV? ? ? ? ? ? ? ? 0? ? ? ? ? ? #未创建逻辑卷,所以包含LV选项的全为0 ? Cur PV? ? ? ? ? ? ? ? 3 ? Act PV? ? ? ? ? ? ? ? 3 ? VG Size? ? ? ? ? ? ? 3.02 GiB? ? #卷组容量,3个分区容量的累加 ? PE Size? ? ? ? ? ? ? 4.00 MiB? ? #PE是基本容量单位,默认大小为4MiB ? Total PE? ? ? ? ? ? ? 774? ? ? ? ? ? #PE总数量,其与PE大小相乘就是VG大小 ? Alloc PE / Size? ? ? 0 / 0? ? ? ? ? #已经分配给逻辑卷的PE ? Free? PE / Size? ? ? 774 / 3.02 GiB #剩余PE,因为还没有创建逻辑卷 ? VG UUID? ? ? ? ? ? ? aD3P8j-tNnP-KyXK-shWB-caTh-sCq8-j8B4qd
第3步:创立逻辑卷 [root@CentOs6 ~]#lvcreate -n logical-v -L 2G v-group? #创立2G大小的逻辑卷 ? Logical volume "logical-v" created. [root@CentOs6 ~]#lvs? #显示逻辑卷的摘要信息 ? LV? ? ? ? VG? ? ? Attr? ? ? LSize Pool Origin Data%? Meta%? Move Log Cpy%Sync Convert ? logical-v v-group -wi-a----- 2.00g? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [root@CentOs6 ~]#lvdisplay? ? ? --- Logical volume --- ? LV Path? ? ? ? ? ? ? ? /dev/v-group/logical-v? #逻辑卷的物理路径 ? LV Name? ? ? ? ? ? ? ? logical-v? ? ? #逻辑卷名称 ? VG Name? ? ? ? ? ? ? ? v-group? ? #逻辑卷所在的卷组 ? LV UUID? ? ? ? ? ? ? ? zEU9qJ-fP3E-H2Dv-iULd-06Gy-yzH4-EnIwdw ? LV Write Access? ? ? ? read/write ? LV Creation host,time CentOs6.gao,2017-08-12 09:42:53 +0800 ? LV Status? ? ? ? ? ? ? available? #逻辑卷可用 ? # open? ? ? ? ? ? ? ? 0 ? LV Size? ? ? ? ? ? ? ? 2.00 GiB? #逻辑卷大小2G ? Current LE? ? ? ? ? ? 512? ? ? ? #当前使用的 #至此逻辑卷就创立完成.使用上文提到的命令查看物理卷、卷组信息会发现,创立完lv后好多信息条目都更新了 [root@CentOs6 ~]#ll /dev/v-group/logical-v? lrwxrwxrwx. 1 root root 7 Aug 12 09:42 /dev/v-group/logical-v -> ../dm-0 #lv名称其实是软链接,指向的是我们前文说过的dm-#
第4步:将lv当作一块独立磁盘进行格式化、挂载、读写操作 1234 [root@CentOs6 ~]#mkdir /mnt/lv? #创立挂载点目录 [root@CentOs6 ~]#mkfs.ext4 /dev/v-group/logical-v? #格式化成ext4文件系统? [root@CentOs6 ~]#mount /dev/v-group/logical-v /mnt/lv/? #挂载 最后就可以进行读写操作了
整个过程是依照下述流程操作: 准备磁盘--创建物理卷--创建卷组--创建逻辑卷
实验二 扩展逻辑卷、缩减逻辑卷 扩展逻辑卷对用户是透明的,lv一直是挂载状态 [root@CentOs6 ~]#lvextend -L +256M /dev/v-group/logical-v #对逻辑卷logical-v扩展256M的容量,前提是卷组还有足够的剩余空间 [root@CentOs6 ~]#df -h /dev/mapper/v--group-logical--v? Filesystem? ? ? ? ? ? Size? Used Avail Use% Mounted on /dev/mapper/v--group-logical--v ? ? ? ? ? ? ? ? ? ? ? 2.0G? 3.1M? 1.9G? 1% /mnt/lv #df -h查看发现,lv实际大小还是2G,并未增加256M,是因为文件系统未同步 [root@CentOs6 ~]#resize2fs? /dev/mapper/v--group-logical--v? root@CentOs6 ~]#df -h /dev/mapper/v--group-logical--v? #同步文件系统,因为我们实验用的是ext4文件系统,所以使用sesize2fs来同步,如果是xfs文件系统则需要使用命令xfs_growfs来同步 #我们每次对lv进行扩展操作后都要记得同步文件系统 #最后再次df检查 [root@CentOs6 ~]#lvextend? -r -L +256M /dev/v-group/logical-v #上述命令更简单,在扩展lv同时同步文件系统,一步搞定 #只要加上 -r 选项 如果还有一个分区想要加入vg,比如/dev/sdb2,可以使用下述办法: pvcreate /dev/sdb2 vgextend v-group /dev/sdb2 #只需要这两步即可
逻辑卷缩减其实就是将一个逻辑卷占用的PE空间缩减,这样做一般会有风险,因为缩减的空间可能有数据.所以如果必定要缩减的话建议先备份.本实验环境无所谓 第1步:取消挂载逻辑卷 12 [root@CentOs6 ~]#umount /mnt/lv/ [root@CentOs6 ~]#df? #已经查看不到lv信了
第2步:检查文件系统完整性 fsck -f [root@CentOs6 ~]#e2fsck -f /dev/v-group/logical-v? #这一步必需得做
第3步:缩减文件体系 [root@CentOs6 ~]#resize2fs? /dev/v-group/logical-v? 1G #缩减文件体系容量为1G
第4步:缩减逻辑卷 [root@CentOs6 ~]#lvreduce -L 1G /dev/v-group/logical-v #缩减逻辑卷容量为1G #缩减fs或者lv时都会有警告提示,所以要考虑清楚再行动,做实验就不要紧了
第5步:重新挂载? [root@CentOs6 ~]#mount /dev/v-group/logical-v? /mnt/lv/ [root@CentOs6 ~]#df -h #最后挂载,df检测,此外还可以使用vgdisplay、lvdisplay反省逻辑卷是否缩减
注意: xfs文件体系不支持缩减
实验三 迁移卷组到新系统 源设备操作: 1、撤消挂载卷组中的所有逻辑卷 [root@CentOs6 ~]#umount /mnt/lv/ #撤消本机挂载
2、确保卷组名跟目标设备纷歧样 [root@CentOs6 ~]#vgrename v-group newvg0 ? Volume group "v-group" successfully renamed to "newvg0" #修改卷组名为newvg0,或者提前查看目标设备的卷组名称,只要纷歧样就行 #只要卷组名纷歧样就行,逻辑卷名称可改也可不改 [root@CentOs6 ~]#lvrename? /dev/newvg0/logical-v? newlv0 ? Renamed "logical-v" to "newlv0" in volume group "newvg0" #逻辑卷改名为newlv0
3、设置逻辑卷为非活动状态,也便是说逻辑卷现在不可用 [root@CentOs6 ~]#vgchange? -a n newvg0? ? 0 logical volume(s) in volume group "newvg0" now active #卷组中0个逻辑卷是活动状态,-a n表示使逻辑卷无效 [root@CentOs6 ~]#lvdisplay? ?LV Status? ? ? ? ? ? ? NOT available? #LV无效
4、导出卷组 12345 [root@CentOs6 ~]#vgexport? newvg0 ? Volume group "newvg0" successfully exported #导出卷组 [root@CentOs6 ~]#pvscan? #扫描磁盘物理卷 [root@CentOs6 ~]#pvdisplay? #会发现物理卷对应的卷组都是exported状态
5、拆除硬盘,换到目标设备上 在vmware上我们把磁盘文件挂载到目标设备上 我的是下面这三个虚拟机磁盘文件 CentOs6.9CentOS6.9-3.vmdk CentOs6.9CentOS6.9-4.vmdk CentOs6.9CentOS6.9-5.vmdk 将这三个文件添加到目标设备上,我的目标设备是centos7 目标设备操作: 1、扫描发现磁盘 [root@CentOS7 ~]#echo '- - - ' > /sys/class/scsi_host/host2/scan? [root@CentOS7 ~]#lsblk #扫描磁盘,然后反省卷组是否存在
2、扫描物理卷,然后导入卷组 [root@CentOS7 ~]#pvscan? #扫描物理卷 ? PV /dev/sdb1? ? is in exported VG newvg0 [1.01 GiB / 8.00 MiB free] ? PV /dev/sdc1? ? is in exported VG newvg0 [1.01 GiB / 1.01 GiB free] ? PV /dev/sdd1? ? is in exported VG newvg0 [1.01 GiB / 1.01 GiB free] ? Total: 3 [3.02 GiB] / in use: 3 [3.02 GiB] / in no VG: 0 [0? ] [root@CentOS7 ~]#vgimport newvg0? #导入卷组,使用新组名 ? Volume group "newvg0" successfully imported [root@CentOS7 ~]#vgdisplay newvg0? //反省卷组信息
3、激活逻辑卷 [root@CentOS7 ~]#vgchange? -a y newvg0? ? 1 logical volume(s) in volume group "newvg0" now active [root@CentOS7 ~]#lvdisplay? #激活逻辑卷,并查看成果,这里我只做了一个逻辑卷 #还可以使用blkid、vgdisplay、pvdisplay等命令查看成果 #其实还可以在原设备逻辑卷中提前存放一些数据,等迁移完成到目标设备后,我们再查看逻辑卷内的数据是否还存在.
实验四 移除卷组中的磁盘 第1步:将要移除的磁盘的数据移到其他逻辑卷 把数据搬到同一卷组其他逻辑卷,要保证卷组有足够的空间,搬的是存储空间,里面可能有数据 1234567891011121314 [root@CentOS7 ~]#pvmove /dev/sdb1? ?#把/dev/sdb磁盘PE空间迁移至其他逻辑卷,本实验1个磁盘上建1个分区 [root@CentOS7 ~]#pvdisplay? /dev/sdb1? #sdb已经没有空间在使用了 ?--- Physical volume --- ? PV Name? ? ? ? ? ? ? /dev/sdb1 ? VG Name? ? ? ? ? ? ? newvg0 ? PV Size? ? ? ? ? ? ? 1.01 GiB / not usable 3.41 MiB ? Allocatable? ? ? ? ? yes ? PE Size? ? ? ? ? ? ? 4.00 MiB ? Total PE? ? ? ? ? ? ? 258 ? Free PE? ? ? ? ? ? ? 258 ? Allocated PE? ? ? ? ? 0 ? PV UUID? ? ? ? ? ? ? iRkKni-iG3a-U38w-bXGn-aIGV-bP14-Pua8bc #还可以查看其他逻辑卷的PE free空间减少,便是因为接收了sdb1转移的PE
第2步:从卷组中移除物理卷 [root@CentOS7 ~]#vgreduce newvg0 /dev/sdb1? #移除sdb ? Removed "/dev/sdb1" from volume group "newvg0" [root@CentOS7 ~]#vgdisplay? ? #查看信息
第3步:从物理卷中移除 [root@CentOS7 ~]#pvremove? /dev/sdb1? #移除 ? Labels on physical volume "/dev/sdb1" successfully wiped. [root@CentOS7 ~]#pvdisplay? #移除物理卷后,就看不到原物理卷信息了
实验五 逻辑卷管理快照 快照是特殊的逻辑卷,快照存放的是改过的文件的最早的版本,只是备份修改的文件.快照与对应的逻辑卷必需在同一个卷组,而且恢复时的文件容量不能超过快照大小 测试环境使用快照较多 生产环境会消耗更多的性能,所以一般不用
第1步:创建快照 [root@CentOS7 ~]#lvcreate? -L 100M -s -n snap -p r /dev/newvg0/newlv0? ? ? ? Using default stripesize 64.00 KiB. ? Logical volume "snap" created. #创建快照,-s表现快照,-L指定快照容量,-n是快照名,-p r快照权限只读 #我们对逻辑卷newlv0做快照 [root@CentOS7 ~]#lvdisplay #此命令可以查看逻辑卷快照信息
第2步:挂载快照 1234 [root@CentOS7 ~]#mkdir /mnt/snap [root@CentOS7 ~]#mount /dev/newvg0/snap /mnt/snap/ mount: /dev/mapper/newvg0-snap is write-protected,mounting read-only #快照挂载到一个挂载点,挂载时提示写掩护,但还是成功挂载,可以df查看
第3步:使用快照恢复数据 上述步骤对逻辑卷newlv0做了快照,而newlv0挂载到了/mnt/lv目录下,现在把此目录下的文件newlv0删除然使用快照恢复 [root@CentOS7 ~]#rm -f /mnt/lv/newlv0? #删除原文件 [root@CentOS7 ~]#umount /dev/newvg0/snap [root@CentOS7 ~]#umount /dev/newvg0/newlv0 #首先取消挂载逻辑卷与快照 [root@CentOS7 ~]#lvconvert? --merge /dev/newvg0/snap? ? Merging of volume newvg0/snap started. ? newlv0: Merged: 100.00% #使用快照恢复数据,此命令会自动辨认逻辑卷的路径 [root@CentOS7 ~]#mount /dev/newvg0/newlv0 /mnt/lv [root@CentOS7 ~]#ll /mnt/lv/? ? ? ? ? ? ? ? ? ? ? -rw-r--r--. 1 root root? ? 0 Aug 12 14:45 newlv0 #最后我们再把逻辑卷挂载就可以看到被删除的文件了 #恢复完数据快照逻辑卷会自动消失
第4步:实验结束删除快照和逻辑卷(已经提前给逻辑卷newlv0创建一个快照snap-data,也要删除) [root@CentOS7 ~]#umount /mnt/snap/ [root@CentOS7 ~]#umount /mnt/lv [root@CentOS7 ~]#umount /mnt/lv1/ [root@CentOS7 ~]#lvremove /dev/newvg0/snap-data? [root@CentOS7 ~]#lvremove? /dev/newvg0/newlv0 [root@CentOS7 ~]#lvremove? /dev/newvg0/newlv1 #先取消挂载,然后移除所有逻辑卷,包含快照 [root@CentOS7 ~]#vgs ? VG? ? #PV #LV #SN Attr? VSize VFree ? newvg0? 3? 0? 0 wz--n- 4.01g 4.01g #此时vg内的逻辑卷为空 [root@CentOS7 ~]#vgremove? newvg0? ? Volume group "newvg0" successfully removed #删除卷组,这时候vgs查看都是空 [root@CentOS7 ~]#pvremove? /dev/sdc1 [root@CentOS7 ~]#pvremove? /dev/sdd1 [root@CentOS7 ~]#pvremove? /dev/sdd2 #删除物理卷,pvs就看不到任何信息了 至此所有的快照、逻辑卷、卷组和物理卷全部清空
删除逻辑卷次序: 快照--逻辑卷--卷组--物理卷
本文永远更新链接地址: 学习更多LINUX教程,请查看站内专栏,如果有LINUX疑问,可以加QQ交流《LINUX入门:LVM逻辑卷-创建、扩容、缩减、迁移、快照》。 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|