上篇中我们讨论LVM的基本原理和操作,本篇我们继续来演示LVM的常用操作。
4、Logical Volume拓展实验
LVM技术最大的特点在于灵活配置,Logical Volume可以从存储池中动态的进行空间分配和变化。比较常用的做法是分配一个LV给指定的mount point之后,由于数据的变化进行容量管理。
当前logical volume如下:
[root@SimpleLinux voltest01]# df -h
FilesystemSizeUsed Avail Use% Mounted on
/dev/sda148G11G35G23% /
tmpfs449M0449M0% /dev/shm
/dev/mapper/VolGrp01-lv1
97M6.6M86M8% /voltest01
如果需要进行空间拓展,可以使用lvextend命令。
[root@SimpleLinux voltest01]#lvextend -L +100M /dev/VolGrp01/lv1
Extending logical volume lv1 to 200.00 MB
Logical volume lv1 successfully resized
[root@SimpleLinux voltest01]# lvs
LVVGAttrLSizeOrigin Snap%Move Log Copy%Convert
lv1VolGrp01 -wi-ao 200.00M
此时,LVM已经认可lv1容量增加到200M。但是,df文件系统似乎没有认可。
[root@SimpleLinux voltest01]# df -h
FilesystemSizeUsed Avail Use% Mounted on
/dev/sda148G11G35G23% /
tmpfs449M0449M0% /dev/shm
/dev/mapper/VolGrp01-lv1
97M6.6M 86M8% /voltest01
注意:使用lvm要注意和File System的匹配问题。一些时候处理故障,就是由于两者关系没有处理好。此时需要使用resize2fs进行同步。
[root@SimpleLinux voltest01]# resize2fs /dev/VolGrp01/lv1
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGrp01/lv1 is mounted on /voltest01; on-line resizing required
Performing an on-line resize of /dev/VolGrp01/lv1 to 204800 (1k) blocks.
The filesystem on /dev/VolGrp01/lv1 is now 204800 blocks long.
[root@SimpleLinux voltest01]# df -h
FilesystemSizeUsed Avail Use% Mounted on
/dev/sda148G11G35G23% /
tmpfs449M0449M0% /dev/shm
/dev/mapper/VolGrp01-lv1
194M6.6M178M4% /voltest01
我们再次实验进行缩小。当前logical volume的情况如下:
[root@SimpleLinux ~]# df -h
FilesystemSizeUsed Avail Use% Mounted on
/dev/sda148G11G35G 23% /
tmpfs449M0449M0% /dev/shm
/dev/mapper/VolGrp01-lv2
985M18M918M2% /voltest2
我们试图将/voltest2对应的logical volume进行缩减。首先需要进行umount动作,之后进行结构调整,最后使用resize2fs进行调整。
[root@SimpleLinux ~]# umount /dev/VolGrp01/lv2
[root@SimpleLinux ~]# e2fsck -f /dev/VolGrp01/lv2
e2fsck 1.39 (29-May-2006)
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/VolGrp01/lv2: 11/128000 files (9.1% non-contiguous), 8444/256000 blocks
[root@SimpleLinux ~]# resize2fs /dev/VolGrp01/lv2 600M
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/VolGrp01/lv2 to 153600 (4k) blocks.
The filesystem on /dev/VolGrp01/lv2 is now 153600 blocks long.
上面操作保证了文件系统file system的resize动作。同时还需要进行额外的Logical Volume Resize动作。
[root@SimpleLinux ~]# lvs
LVVGAttrLSizeOrigin Snap%Move Log Copy%Convert
lv1VolGrp01 -wi-a-192.00M
lv2VolGrp01 -wi-a- 1000.00M
[root@SimpleLinux ~]#lvreduce -L 600M /dev/VolGrp01/lv2
WARNING: Reducing active logical volume to 600.00 MB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv2? [y/n]: y
Reducing logical volume lv2 to 600.00 MB
Logical volume lv2 successfully resized
[root@SimpleLinux ~]# lvs
LVVGAttrLSizeOrigin Snap%Move Log Copy%Convert
lv1VolGrp01 -wi-a- 192.00M
lv2VolGrp01 -wi-a- 600.00M
最后将目录加载。
[root@SimpleLinux ~]# mount /dev/VolGrp01/lv2 /voltest2
[root@SimpleLinux ~]# df -h
FilesystemSizeUsed Avail Use% Mounted on
/dev/sda148G11G35G23% /
tmpfs449M0449M0% /dev/shm
/dev/mapper/VolGrp01-lv2
591M17M544M3% /voltest2
5、Logical Volume Group管理
Logical Volume Group就是虚拟的存储池,所有的Logical Volume就在其上进行分配动作。但Group空间不足的时候,就可以进行动态PV(Physical Volume)的添加管理。
--查看当前的volume group对象
[root@SimpleLinux voltest01]# vgs
VG#PV #LV #SN AttrVSize VFree
VolGrp01210 wz--n- 9.86G 9.67G
VolGrp02200 wz--n- 3.73G 3.73G
--查看当前的physical volume对象
[root@SimpleLinux voltest01]# pvs
PVVGFmtAttr PSize PFree
/dev/sdb1VolGrp01 lvm2 a-8.00G 7.80G
/dev/sdc1VolGrp01 lvm2 a-1.87G 1.87G
/dev/sdc2VolGrp02 lvm2 a-1.87G 1.87G
/dev/sdc3VolGrp02 lvm2 a-1.87G 1.87G
/dev/sdc5lvm2 --1.87G 1.87G
/dev/sdc6lvm2 --3.07G 3.07G
使用vgextend命令可以进行拓展。
[root@SimpleLinux voltest01]# vgextend VolGrp01 /dev/sdc5
Volume group "VolGrp01" successfully extended
[root@SimpleLinux voltest01]# vgs
VG#PV #LV #SN AttrVSizeVFree
VolGrp01310 wz--n- 11.73G 11.54G
VolGrp02200 wz--n-3.73G3.73G
[root@SimpleLinux voltest01]# pvs
PVVGFmtAttr PSize PFree
/dev/sdb1VolGrp01 lvm2 a-8.00G 7.80G
/dev/sdc1VolGrp01 lvm2 a-1.87G 1.87G
/dev/sdc2VolGrp02 lvm2 a-1.87G 1.87G
/dev/sdc3VolGrp02 lvm2 a-1.87G 1.87G
/dev/sdc5VolGrp01 lvm2 a-1.87G 1.87G
/dev/sdc6lvm2 --3.07G 3.07G
同样,需要进行剔除的时候,也是使用vgreduce命令进行。
[root@SimpleLinux ~]# vgreduce VolGrp01 /dev/sdc5
Removed "/dev/sdc5" from volume group "VolGrp01"
[root@SimpleLinux ~]# pvs
PVVGFmtAttr PSize PFree
/dev/sdb1VolGrp01 lvm2 a-8.00G 7.22G
/dev/sdc1VolGrp01 lvm2 a-1.87G 1.87G
/dev/sdc2VolGrp02 lvm2 a-1.87G 1.87G
/dev/sdc3VolGrp02 lvm2 a-1.87G 1.87G
/dev/sdc5lvm2 --1.87G 1.87G
/dev/sdc6lvm2 --3.07G 3.07G
6、结论
对实际的运维场景而言,Logical Volume Manager是一种非常实用的工具包。LVM可以实现灵活高效的空间使用和配置。