LVM:逻辑卷的缩减、扩展、快照使用
一、什么是LVM?
LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制。
LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
LVM可分为三层。底层为物理卷(Physical Volume),简写为PV;中间层为卷组(Volume Group),简写为VG;顶层为逻辑卷(Logical Volume),简写为LV。
上层的大小取决于下层的大小。
二、如何创建LVM系统?(我用的磁盘是/dev/sdb)
1、首先创建LVM分区/dev/sdb6、/dev/sdb7、/dev/sdb8,大小分别为7G、3G、2G,类型均为8e。
可以使用fdisk /dev/sdb命令创建分区,如下
完成之后使用partprobe通知内核分区,可查看/proc/partitions内核是否读取
#partprobe
#cat /proc/partitions
2、创建物理卷PV
#pvcreate /dev/sdb{7,6}
#pvs //查看当前系统PV
从中可以看到pv有/dev/sdb6、/dev/sdb7,其大小分别为5G、3G。
3、创建卷组GV
#vgcreate myvg /dev/sdb6 /dev/sdb7
#vgs //查看当前系统VG
可以看到创建的VG为myvg,大小基本等于(5+3)G
#vgdisplay myvg //显示指定vg的详细信息
4、创建逻辑卷LV
#lvcreate -n testlv -L 65M myvg
此处创建了65M大小的逻辑卷,但是创建之后大小为68M,是因为在创建VG时其PE大小默认为4M,创建的逻辑卷大小必须时PE的整数倍。创建VG时可用选项-s #(#为数字)指定PE大小
#lvs //查看当前系统lv
#lvdisplay /dev/myvg/testlv //显示指定lv的详细信息。
注:指定lv在vg目录下的lv,不是直接指定lv名字
#mke2fs -j /dev/myvg/testlv //格式化
#mount /dev/myvg/testlv /mnt //挂载到/mnt下
#mount
使用mount可以看到挂载/mnt的是/dev/mapper/mylv-testlv。
#ls -l /dev/mapper
这里面的才是真正的设备文件
三、在不影响原数据的前提下扩展、缩减逻辑卷和使用快照卷
逻辑边界时紧靠在物理边界大小上创建的,可以理解为逻辑边界微小于物理边界。
所以,存取数据取决于物理边界和逻辑边界
扩展逻辑卷LVM
先扩展物理边界,再扩展逻辑(文件系统)边界
注:逻辑边界一定要小于物理边界,否则文件系统可能会崩溃
lvextend:扩展物理边界
-L +# /PATH/TO/LV :给lv增加#大小的物理边界
-L # /PATH/TO/LV :给lv增加到#大小的物理边界
resize2fs(ext2/3):扩展文件系统边界
resize2fs /PATH/TO/LV #G :增加文件系统边界到#G大小
-p 扩展文件系统到最大值
例子:在2G大小的名为testlv的LV扩展到5G大小(还是在先前的/dev/myvg上)
#lvcreate -n testlv -L 2G myvg
#lvs
之后格式化再挂载到/mnt上
#cp /etc/inittab /mnt // 拷贝一份文件到挂载目录下作为原数据
#cat /mnt/inittab //查看此目录下的内容
#df -lh /查看逻辑卷testlv为2G
#vgs //查看vg中free是否能够扩展到5G大小
图中可以看到还剩余约6G,增加3G,足够
#lvextend -L 5G /dev/myvg/testlv //扩展物理边界
#resize2fs -p /dev/myvg/testlv //扩展逻辑边界
#df -lh //查看逻辑卷testlv为5G(有误差)
#cat /mnt/inittab //查看原数据是否改变
从图中看出数据未曾改变
缩减逻辑卷LVM
先缩减逻辑边界,再缩减物理边界
注:1、不能在线缩减,得先卸载
2、确保缩减后的空间大小依然能存储原有所有的数据
3、再缩减前应该先检查文件,以确保文件处于移植状态
df -lh :查看所用空间大小
umount :卸载
e2fsck -f /PATH/TO/LV :强行检查文件系统
resize2fs(ext2/3):缩减文件系统边界
resize2fs /PATH/TO/LV #G :缩减文件系统边界到#G大小
lvreduce -L -# /PATH/TO/LV //缩减#G大小的物理边界
lvreduce -L # /PATH/TO/LV //缩减物理边界到#G大小
重新挂载
例子:接着将上述中5G大小缩减为3G大小。
#df -lh
#umount /mnt
#e2fsck -f /dev/myvg/testlv
#resize2fs /dev/myvg/testlv 3G //缩减逻辑边界
#lvreduce -L 3G /dev/myvg/testlv //缩减物理边界
#mount /dev/myvg/testlv /mnt //重新挂载
#cat /mnt/inittab //查看原数据
#df -lh //查看大小
大小变为了3G,且原数据并未受到影响
快照卷
1、生命周期为整个数据时长:在这段时长内,数据的增长量不能超过快照卷的大小(超过的话快照卷就会挂掉)
2、快照卷应该是只读的
3、快照卷应该跟原卷在同一卷组内
命令:lvcreate -s
-p r|w 指定权限 只读|读写
lvcreate -s -L # -n SLVNAME -p r /PATH/TO/LV
挂载: mount /PATH/TO/SLV /指定目录
备份: 压缩快照中的文件 tar
移除:
卸载 umount /指定目录
lvremove /PATH/TO/SLV
还原数据:tar 解压
原文地址:http://blog.51cto.com/13990544/2320793