逻辑卷LVM
简介
在实际生产应用中,磁盘的分区的容量是固定不变的,当出现分区容量不足的情况,除了新加磁盘,还有没有其他方法呢?
逻辑卷(LVM)的概念就出现了,全称叫Logical Volume Manager。它的作用是允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小。
LVM最大的特点是可以对磁盘进行动态管理,在不会丢失原有磁盘数据的同时,又可以对逻辑卷大小进行调整,大大提高了磁盘管理的灵活性。
LVM的实现原理:
逻辑卷的实现
之前实验我们创建了一个RAID-5,逻辑卷我们使用RAID设备、分区和磁盘来进行模拟
1、创建PV:pvcreate
[root@centos6 ~]#pvcreate /dev/md5 /dev/sdf /dev/sda6
Physical volume “/dev/md5” successfully created
Physical volume “/dev/sdf” successfully created
Physical volume “/dev/sda6” successfully created
查看:pvdisplay
还可以使用命令pvs 和pvscan 查看简略信息。
2、创建vg:vgcreate
创建完成后再看一下PV可以看到三块物理卷被划入到同一个卷组vg0中去了。
3、创建Lv:lvcreate
[root@centos6 ~]#lvcreate -n lv0 -L 8G vg0 <==-n是指定LV的名字,-L 指定要创建的逻辑卷的大小
Logical volume “lv0” created.
mkfs.ext4 /dev/vg0/lv0 <==创建文件系系统
mount /dev/vg0/lv0 /mnt/lv0 <==挂载,创建完毕。
LVM的扩展
前提:为了验证动态扩容对数据不影响,我们先拷贝点资料到/mnt/lv0
cp /etc/* /mnt/lv0
1、查看卷组有没有空间
[root@centos6 ~]#vgs
VG #PV #LV #SN Attr VSize VFree
vg0 3 1 0 wz–n- 16.97g 8.97g <==还有将近9G的空间
2、指定扩展的大小
[root@centos6 ~]#lvextend -L +5G /dev/vg0/lv0 <==注意:这里指定大小的时候,如果不写“+”,就是指将LV的空间加到多少,有了“+”就是加多少
Size of logical volume vg0/lv0 changed from 8.00 GiB (2048 extents) to 13.00 GiB (3328 extents).
Logical volume lv0 successfully resized.
[root@centos6 ~]#vgs
VG #PV #LV #SN Attr VSize VFree
vg0 3 1 0 wz–n- 16.97g 3.97g <==VG卷组还剩4G
[root@centos6 ~]#lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv0 vg0 -wi-ao—- 13.00g <==LV0的大小变成13=8+5
这个注意:现在新增空间虽然加到LV0上去了,但是df -h依然显示原来的容量,因为新增的空间上并没有创建文件系统,所以导致系统无法识别。
3、resize2fs /dev/vg0/lv0 <==同步文件系统,df -h才可以扩容后的大小。查看数据并未丢失。
上面的情况是卷组VG有剩余空间,万一卷组也没有空间了呢?这时候就需要添加VG
1、pvcreate /dev/sdg
2、vgextend vg0 /dev/sdg <==把/dev/sdg扩展到vg0,这个时候就可以个需要扩容的LV扩容了。
LV的缩减
注意:xfs的文件系统无法缩减
1、umount /mnt/lv0 <==取消挂载
2、fsck -f /dev/vg0/lv0 <==检查文件系统,必须要做的
3、resize2fs /dev/vg0/lv0 5G <==缩减文件系统
4、lvreduce -L 5G /dev/vg0/lv0 <==这里的大小必须和第三步缩减的文件系统大小一致
5、mount /dev/vg0/lv0 /mnt/lv0/ <==重新挂载
VG、PV的缩减
1、umount /mnt/lv0/ <==取消挂载
2、pvmove /dev/sdg <==移除空间,确保卷组中有足够空间放/dev/sdg的空间
3、vgreduce vg0 /dev/sdg <==将/dev/sdg从vg0中移除
4、pvremove /dev/sdg <==从物理卷中删除
LVM快照
前提:写入测试数据
[root@centos6 lv0]#cp /etc/fstab f1
[root@centos6 lv0]#cp /etc/fstab f2
[root@centos6 lv0]#cp /etc/fstab f3
创建快照
1、lvcreate -n lv0-snapshot -s -L 100M -p r /dev/vg0/lv0
-n lv0-snapshot:指定一个快照名字
-s:s表示快照
-L 100M:指定大小
-p r:指定只读属性
/dev/vg0/lv0:对哪个设备做快照
2、mount /dev/vg0/lv0-snapshot /mnt/snap/ <==挂载
[root@centos6 ~]#cd /mnt/snap/
[root@centos6 snap]#ls
f1 f2 f3 lost+found
[root@centos6 snap]#cd /mnt/lv0/
[root@centos6 lv0]#ls
f1 f2 f3 lost+found <==此时快照中还没有数据
3、修改和删除原来LV中的数据,会讲旧的数据推送到/mnt/snap/,并且只保留旧数据。新创建数据不会推送。
还原
1、取消挂载
[root@centos6 ~]#umount /mnt/lv0
[root@centos6 ~]#umount /mnt/snap
2、[root@centos6 ~]#lvconvert –merge /dev/vg0/lv0-snapshot <==拿快照合并数据,合并完快照的逻辑卷消失了。
Merging of volume lv0-snapshot started.
lv0: Merged: 100.0%
Merge of snapshot into logical volume lv0 has finished.
Logical volume “lv0-snapshot” successfully removed
3、再次挂载mount /dev/vg0/lv0 /mnt/lv0/,发现数据恢复。
LVM删除
1、lvremove /dev/vg0/lv0
2、vgremove /dev/vg0
3、pvremove /dev/md5 /dev/sda6 /dev/sdf /dev/sdg
注意:创建的时候是从PV-VG-LV,删除的时候过程相反。
原创文章,作者:eleven,如若转载,请注明出处:http://www.178linux.com/84520