注意:任何磁盘的操作有可能损坏里面数据,请提前备份数据,切记!切记!切记!
0x00:前言。
VG卷组的总空间是受物理磁盘大小限制,本教程有3块物理磁盘分别是100M、200M、300M,那么VG卷组总空间就是600M;而VG下所有的LV累加的总空间又受限于VG。
使用过程中LV早晚会用完,那么上面的/LVM挂载点只能同时挂载一个,而有些程序不能支持有两个文件目录,比如WEB只有一个/,还有MySQL。
0x01:扩展VG卷组、缩小VG卷组。
1)扩展VG卷组。
上一章讲我看到添加了3块物理磁盘,第一块(/dev/sdb1)已经加入VG组,这次来把第二块(/dev/sdc1)加入到之前的那个vgdata的VG组里。
首先还是格式化磁盘,并创建磁盘分区/dev/sdc1。这里图略,和之前一样。
# fdisk /dev/sdc //显示创建磁盘并和格式化,略去一些命令
略。
# pvcreate /dev/sdc1 //普通磁盘转换成PV # pvs //查看VG组信息 # vgextend vgdata /dev/sdc1 //加入VG组,vgdata要加入VG组名,/dev/sdc1新PV
图里可以看到磁盘第一次pvs里只有一个PV,添加后,第二次pvs就又有多出一块PV。
# vgdisplay //查看VG卷组详细信息,VG的总空间已经由之前100M变成300M
2).缩小卷组。
实际使用中,因为磁盘损坏,或空间分配问题,我们需要从VG卷组删除一个PV物理卷。用过的PV物理卷肯定会被写入数据,那么在移走PV前,我们要先迁移数据。
先用pvdisplay命令看看上面PE块被写了多少数据,假如/dev/sdb1是要移走的物理硬盘。
注意,目的地空闲空间要大于/dev/sdb1。
我们准备了/dev/sdd1来存放迁移过来的数据。
从上图可以看出sdb1总空间是100M,然后空闲是0M,也就是使用了100M。
# pvmove -i 1 /dev/sdb1 /dev/sdd1 //将sdb1数据移动到sdd1里, -i 1是每1秒钟报告一次数据迁移的进度。 # vgreduce vgdata /dev/sdb1 //将/dev/sdb1从vgdata卷组中移除 # pvremove /dev/sdb1 //将/dev/sdb1移除出PV
结果:数据没有任何丢失。
0x02:扩展LV、缩小LV逻辑卷。
1)VG卷组又有新的空间,而刚才创建的lvData(/dev/sdb1)已经使用完了,我们来扩展LV。
# lvextend –L +50M /dev/vgdata/lvData 或者 # lvextend –l 150M /dev/vgdata/lvData
-L和-l区别,-L后是写你要增加多少,而-l是写你要增加到的总数。
执行命令后我们发现LV size变成150M了。
LV扩容完系统还没有识别,需要用resize2fs来更新,系统才能识别到。
# resize2fs /dev/vgdata/lvData
2)缩小LV(逻辑卷)空间。
使用过程中LV空间总会分配不合理或大或小,如果分配大了,不用又造成空间浪费,现在将LV(逻辑卷)缩小以分配给其他LV(逻辑卷)用。
我们之前创建了一个LV(逻辑卷),挂载到了/LVM下。
调整钱我们先要卸载挂载点,因为挂载后是使用状态,不允许操作。如图,卸载成功。
# umount /LVM
检查文件系统是否有坏块,这部检查必须要做。
# e2fsck -f /dev/mapper/vgdata-lvData
从上面df -h 知道,总空间287M,使用128M,剩余146M空间。我们缩小总空间到250M,做演示。
注意:缩小LV前,先要缩小PV,resize2fs在前,lvreduce在后,顺序不能错。
# resize2fs /dev/mapper/vgdata-lvData 250M //缩小PV
# lvreduce -L 250M /dev/mapper/vgdata-lvData 或 # lvreduce -L -50M /dev/mapper/vgdata-lvData //-50M,在原基础上减去50M空间。
好了,缩减成功,挂载看看。
# mount -a
或
# mount /dev/vgdata/lvData /lvm
因为PE默认4M,我们给的250M的PE不一定对其,所以系统会从新计算PE倍数来对其,显示的数就会小于我们写的数。
注意:/dev/mapper/vgdata-lvData和/dev/vgdata/lvData是一样的,指向同一路径。
查看PV有多少空闲空间。显示多出48M的空闲空间。
# pvs
参考文章:
http://dreamfire.blog.51cto.com/418026/1084729/
http://www.linuxidc.com/Linux/2016-06/132709.htm
https://www.cnblogs.com/mchina/p/linux-centos-logical-volume-manager-lvm.html
http://www.linuxidc.com/Linux/2017-05/143774.htm