LVM(Logical Volume Manager,逻辑卷管理)可以实现把多个实体硬盘分区整合在一起,当作一个硬盘来重新操作处理。最重要的是LVM不像传统分区一旦确定分区大小就不能再调整,它允许我们弹性的调整分区及文件系统容量!
通过几道练习题来说明LVM的实现
1、创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录
2、新建用户 archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录
3、扩展testlv至7G,要求archlinux用户的文件不能丢失
4、收缩testlv至3G,要求archlinux用户的文件不能丢失
5、对testlv创建快照,并尝试基于快照备份数据,验正快照的功能
题1: PV、VG、LV的创建
[root@centos6 ~]fdisk /dev/sda <--调整分区sda1 id为8e [root@centos6 ~]fdisk /dev/sdc <--调整分区sdc1 id为8e [root@centos6 ~]#pvcreate /dev/sd{a6,c1} <--指定分区为PV Physical volume "/dev/sda6" successfully created Physical volume "/dev/sdc1" successfully created [root@centos6 ~]#vgcreate -s 16M vg0 /dev/sd{a6,c1} <--创建vg;-s 指定PE大小 Volume group "vg0" successfully created [root@centos6 ~]#lvcreate -n testlv -L 5G vg0 <--创建lv; -n 指定lv名字;-L 按照容量指定lv大小[MGT]参考1) Wiping software RAID md superblock on /dev/vg0/testlv. Logical volume "testlv" created. [root@centos6 ~]#mkfs.ext4 /dev/vg0/testlv <--为lv指定文件系统 [root@centos6 ~]#mount /dev/vg0/testlv /app/lvm <--挂载lv; 在/etc/fstab添加可实现开机自动挂载
1)lv创建的时候也可以按照PE数量指定
为testlv分配3000 个PE:lvcreate -n testlv -l 3000 vg0
把卷组所有PE分配给testlv:lvcreate -n testlv -l 100%vg vg0
2)PV、VG、LV信息查询
[root@centos6 ~]#pvdisplay --- Physical volume --- PV Name /dev/sda6 VG Name vg0 PV Size 10.00 GiB / not usable 4.58 MiB Allocatable yes PE Size 16.00 MiB Total PE 640 <--按照指定PE Size,该PV划分的PE数量 Free PE 320 <--剩余没有分配给LV的PE数量 Allocated PE 320 <--已经分配给LV的PE数量 PV UUID rbsdXo-s39N-vGar-Oxuc-5E6Z-sIuD-rZP5el --- Physical volume --- PV Name /dev/sdc1 VG Name vg0 PV Size 10.00 GiB / not usable 4.54 MiB Allocatable yes PE Size 16.00 MiB Total PE 640 Free PE 640 Allocated PE 0 PV UUID T9ehfV-wSc8-ez1y-ZlNF-T9P2-PU87-2rFe7Q [root@centos6 ~]#vgdisplay --- Volume group --- VG Name vg0 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 14 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 20.00 GiB PE Size 16.00 MiB Total PE 1280 Alloc PE / Size 320 / 5.00 GiB Free PE / Size 960 / 15.00 GiB VG UUID YlqvPD-Vhsk-2vxR-G5SY-X1HM-3GUk-BNoUzq [root@centos6 ~]#lvdisplay --- Logical volume --- LV Path /dev/vg0/testlv LV Name testlv VG Name vg0 LV UUID nx4ENL-mE35-xlIf-DWQl-6f6j-m2t1-uznnNd LV Write Access read/write LV Creation host, time centos6.ffu.com, 2017-06-22 15:29:38 +0800 LV Status available # open 0 LV Size 5.00 GiB Current LE 320 <--等同于PE数量 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
题2:
[root@centos6 app]#useradd -m -k /etc/skel -d /app/lvm/archlinux archlinux [root@centos6 app]#su archlinux [archlinux@centos6 app]$cp -r /etc/pam.d/ lvm/archlinux/
题3:lv的扩展
逻辑卷的扩展是在线扩展,不用卸载lv,不影响用户使用
[root@centos6 app]#lvextend -L +2G /dev/vg0/testlv <---L 按照容量指定扩展大小(Num增加到;+Num额外增加);参考1) [root@centos6 archlinux]#df -hTP Filesystem Type Size Used Avail Use% Mounted on /dev/sda2 ext4 96G 9.6G 82G 11% / tmpfs tmpfs 491M 76K 491M 1% /dev/shm /dev/sda3 ext4 48G 125M 46G 1% /app /dev/sda1 ext4 969M 35M 885M 4% /boot /dev/sdb7 ext4 2.0G 923M 1016M 48% /testdir /dev/sr0 iso9660 3.7G 3.7G 0 100% /media/CentOS_6.9_Final /dev/mapper/vg0-testlv ext4 4.8G 11M 4.6G 1% /app/lvm <--没有扩展文件系统,没有识别增加的2G [root@centos6 archlinux]#resize2fs /dev/vg0/testlv <--同步文件系统;参考2) [root@centos6 archlinux]#df -hTP Filesystem Type Size Used Avail Use% Mounted on /dev/sda2 ext4 96G 9.6G 82G 11% / tmpfs tmpfs 491M 76K 491M 1% /dev/shm /dev/sda3 ext4 48G 125M 46G 1% /app /dev/sda1 ext4 969M 35M 885M 4% /boot /dev/sdb7 ext4 2.0G 923M 1016M 48% /testdir /dev/sr0 iso9660 3.7G 3.7G 0 100% /media/CentOS_6.9_Final /dev/mapper/vg0-testlv ext4 6.8G 12M 6.5G 1% /app/lvm
1)同样可以按照PV数量指定
为testlv新增600个PE:lvextend -l 600 /dev/vg0/testlv
把卷组剩余所有空闲PE分配给testlv:lvextend -l 100%free /dev/vg0/testlv
2)resize2fs 只用于ext系统;对于xfs系统要用xfs_growfs +挂载点(注意不是设备名)
此例中是在挂载的状态下进行扩展,如果事先卸载的话,就需要先进行强制磁盘检查–> e2fsck -f /dev/vg0/testlv
其实在扩展lv时加上-r选项就可以一并扩展文件系统–> lvextend -r -l +100%free /dev/vg0/testlv
题4:lv的缩减
逻辑卷的扩展会影响用户使用,不能在线扩展
[root@centos6 archlinux]#cp /app/lvm /app/test -r <--缩减会影响用户使用,不能在线操作,缩减之前建议先备份 [root@centos6 ~]#umount /app/lvm <--必须先卸载 [root@centos6 ~]#e2fsck -f /dev/vg0/testlv <--强制磁盘检查;必要步骤 e2fsck 1.41.12 (17-May-2010) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity` Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/vg0/testlv: 80/458752 files (0.0% non-contiguous), 64511/1835008 blocks [root@centos6 ~]#resize2fs /dev/vg0/testlv 3G <--先缩减文件系统 resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/vg0/testlv to 786432 (4k) blocks. The filesystem on /dev/vg0/testlv is now 786432 blocks long. [root@centos6 ~]#lvreduce -L 3G /dev/vg0/testlv <--再缩减逻辑卷 WARNING: Reducing active logical volume to 3.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce vg0/testlv? [y/n]: y Size of logical volume vg0/testlv changed from 7.00 GiB (448 extents) to 3.00 GiB (192 extents). Logical volume testlv successfully resized. [root@centos6 ~]#mount /dev/vg0/testlv /app/lvm <--挂载 [root@centos6 ~]#ls /app/lvm <--数据并没有丢失 archlinux lost+found
题5:快照的使用
快照是一种特殊的逻辑卷,它是在生成快照时对存在同一VG下的逻辑卷的准确拷贝。
快照区有两部分组成:变更之前的数据和未变更的数据组成。当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中,而没有被变动的数据依旧保持在原本的区块内。
[root@centos6 ~]#df -hP <--查看要备份的lv上的数据大小 Filesystem Size Used Avail Use% Mounted on /dev/sda2 96G 9.6G 82G 11% / tmpfs 491M 76K 491M 1% /dev/shm /dev/sda3 48G 125M 46G 1% /app /dev/sda1 969M 35M 885M 4% /boot /dev/sdb7 2.0G 923M 1016M 48% /testdir /dev/sr0 3.7G 3.7G 0 100% /media/CentOS_6.9_Final /dev/mapper/vg0-testlv 2.9G 7.8M 2.7G 1% /app/lvm <--快照大小设置应不大于数据大小 [root@centos6 ~]#lvcreate -n testlv-snapshot -s -L 16M -p r /dev/vg0/testlv <--参考1) Logical volume "testlv-snapshot" created. [root@centos6 ~]#lvdisplay <--可以查看快照逻辑卷 [root@centos6 app]#mkdir snap [root@centos6 app]#mount /dev/vg0/testlv-snapshot /app/snap <--挂载快照 mount: block device /dev/mapper/vg0-testlv--snapshot is write-protected, mounting read-only [root@centos6 lvm]#rm -rf /app/lvm/archlinux/ <--删除逻辑卷testlv上的archlinux目录 [root@centos6 lvm]#ls ../snap <--可以看到快照中archlinux目录还在 archlinux lost+found 利用快照恢复testlv [root@centos6 app]#umount /app/lvm <--卸载逻辑卷 [root@centos6 app]#umount /app/snap/ <--卸载快照 [root@centos6 app]#lvconvert --merge /dev/vg0/testlv-snapshot <--利用快照testlv-snapshot恢复testlv Merging of volume testlv-snapshot started. testlv: Merged: 100.0% Merge of snapshot into logical volume testlv has finished. Logical volume "testlv-snapshot" successfully removed <--恢复后快照自动删除;参考2) [root@centos6 app]#mount /dev/vg0/testlv /app/lvm [root@centos6 app]#ls /app/lvm <--archlinux目录已经恢复 archlinux lost+found
1)-s 指定创建的逻辑卷为快照;-n 指定快照名字;-L 指定快照大小(至少为设定的PE大小);
-p r 设为只读属性,也可以挂载时候设置–>mount -o ro /dev/vg0/testlv-snapshot /app/snap
2)快照恢复也可手动把快照内数据复制到对应逻辑卷挂载目录下;手动删除快照命令为:#lvremove /dev/vg0/testlv-snapshot
补充:如何移除一个PV
沿用上例,移除sda6设备,首先要查看该设备上是否有分配给lv的PE(注意不是数据),如果有要转移到对应vg下的其它pv上, 而且其PE数量要小于对应vg的剩余free PE数量
[root@centos6 ~]#pvdisplay --- Physical volume --- PV Name /dev/sda6 VG Name vg0 PV Size 10.00 GiB / not usable 4.58 MiB Allocatable yes PE Size 16.00 MiB Total PE 640 Free PE 448 Allocated PE 192 <--需要把192个PE转移到/dev/sdc1 PV UUID rbsdXo-s39N-vGar-Oxuc-5E6Z-sIuD-rZP5el --- Physical volume --- PV Name /dev/sdc1 VG Name vg0 PV Size 10.00 GiB / not usable 4.54 MiB Allocatable yes PE Size 16.00 MiB Total PE 640 Free PE 640 Allocated PE 0 PV UUID T9ehfV-wSc8-ez1y-ZlNF-T9P2-PU87-2rFe7Q [root@centos6 ~]#pvmove /dev/sda6 /dev/sdc1 /dev/sda6: Moved: 0.5% /dev/sda6: Moved: 15.6% /dev/sda6: Moved: 30.7% /dev/sda6: Moved: 56.8% /dev/sda6: Moved: 78.6% /dev/sda6: Moved: 100.0% [root@centos6 ~]#vgreduce vg0 /dev/sda6 <--把pv/dev/sda6从vg0中移除 Removed "/dev/sda6" from volume group "vg0" [root@centos6 ~]#pvremove /dev/sda6 <--把设备/dev/sda6从pv中移除 Labels on physical volume "/dev/sda6" successfully wiped
原创文章,作者:ffu,如若转载,请注明出处:http://www.178linux.com/78495