LVM的全名是Logical Volume Manager,称为逻辑卷管理器。LVM整合多个物理分区在一起,让这些分区看起来就像是一个磁盘一样,而且,还可以在将来添加其他的物理分区或者删除其中的分区。LVM的重点在于可以弹性调整文件系统的容量!
1 LVM的创建
LVM的作法是将几个物理的分区(或磁盘)通过软件合成为一块看起来是独立的大磁盘(VG),然后将这块大磁盘再经过划分成为可使用分区(LV),最终就能挂载使用了。具体操作示例:
1.fdisk /dev/vdb建立一个主分区:选择n,默认情况下,此分区是linux类
选择t ,输入代码逻辑卷代码8e,wq退出保存分区信息
2. pvcreate /dev/vdbx 安装逻辑卷软件
3. vgcreate -s 16M vg0 /dev/vdbx 创建卷组vg0,指定PE为16M(默认为4M)
PE是LVM最小的存储块,类似于文件系统里面的block大小
4. lvcreate -L 20M -n lv0 vg0 在vg0卷组中取出大小为20M的逻辑卷,指定名字为lv0
lv取出逻辑卷只能是PE大小的整数倍,PE是最小的存储块
可以使用pvdisplay(pvs),vgdisplay(vgs),lvdisplay(lvs) 查看详细信息
5. mkfs.xfs /dev/vg0/lv0 格式化vg0卷组下的lv0分区
6. mount /dev/vg0/lv0 /data/ 挂载到/data目录下
这样,/dev/vg0/lv0就可以使用了!!!
2 LVM的扩展
当我们想将/dev/vg0/lv0扩展大小的时候,就分为两种情况,在本身vg0大小足够的情况下,直接扩展就可以,另一种情况是本身vg0的大小也不足,不能满足需求,这就需要划分新的分区并安装LVM软件,将其添加到vg0当中。
2.1 (xfs文件系统)在卷组的大小足够的情况下:
lvextend -L 100M /dev/vg0/lv0 扩展 /dev/vg0/lv0至100M
xfs_growfs /dev/vg0/lv0 将新扩展出来的再格式化
2.2 (xfs文件系统)在卷组的大小不够的情况下:
1.fdidsk /dev/vdb 再重新建立分区,将分区代码改为LVM,8e
2.partprobe 更新分区表
3.pvcreate /dev/vdb2 给新划分的分区安装软件
4.vgextend vg0 /dev/vdb2 将安装好软件的设备加入到不够的卷组vg0中
5.lvextend -L 600M /dev/vg0/lv0 再从已经扩大的卷组中扩大逻辑卷lv0至600M
6.xfs_growfs /dev/vg0/lv0 将卷组中的新扩展的逻辑卷再重新格式化
2.3 (ext4文件系统)LVM的扩展:
ext4文件系统下LVM的扩展原理和xfs文件系统一致,在最后一步刷新文件系统的时候使用的命令不同
上面2.2已经加入新的分区使vg0的大小扩展到了688M,所以我们不进行扩展vg0
已卷组大小足够的情况下示例ext4文件系统LVM的扩展
1.umount /data
2.mkfs.ext4 /dev/vg0/lv0
3.mount /dev/vg0/lv0 /data/
4.lvextend -L 608M /dev/vg0/lv0
5.resize2fs /dev/vg0/lv0 重新以ext4刷新文件系统
3 LVM的缩减
xfs格式不支持缩减,ext4支持缩减,在上一小节中我们已经将/dev/vg0/lv0格式化成etx4文件系统。LVM扩展的时候,需要先扩展逻辑卷,然后将新扩展的重新格式化。但是缩减的时候,若是先缩减逻辑卷,那多出来的部分就没有地方放了,所以必须先缩减文件系统,然后再缩减逻辑卷。具体缩减过程如下:
umount /data
e2fsck -f /dev/vg0/lv0 扫描逻辑卷
resize2fs /dev/vg0/lv0 100M 将逻辑卷lv0缩减至100M 缩减的是文件系统
mount /dev/vg0/lv0 /data/
lvreduce -L 100M /dev/vg0/lv0 缩减lv,不能过小,否则会报错
缩减了之后想要移除不用的空闲的分区,/dev/vdb2为空闲分区没有被使用,可以直接移除,
但是假设我们就想移除/dev/vdb3
pvmove /dev/vdb3 /dev/vdb2 将vdb3内的数据全部移到vdb2中
vgreduce vg0 /dev/vdb3 将vdb3从vg0中删除
pvremove /dev/vdb3 在pv中删除
4 LVM的快照
快照将当时的系统信息记录下来,就好像照相记录一般。将来若有任何数据改动了,则原始数据就会被移到快照区,没有被改动的区域则由快照区与文件系统共享。LVM的快照和虚拟机快照原理一样,操作更改的是快照,不会对原有设备做更改,但是你查看的时候看的是真实的设备。快照的实现:
mount /dev/vg0/lv0 /data/
cd /data
touch file{1..10} 在真实的逻辑卷内建立文件
cd
umount /data
lvcreate -L 20M -n lv0-backup -s /dev/vg0/lv0 创建LVM快照
lvs 大小是真实的逻辑卷
mount /dev/vg0/lv0-backup /data/
cd /data/
ls
rm -fr * 删除建立的文件
ls
cd
umount /data/
lvremove /dev/vg0/lv0-backup 删除建立的快照
lvcreate -L 20M -n lv0-backup -s /dev/vg0/lv0 继续新建快照
mount /dev/vg0/lv0-backup /data/
cd /data/
ls 可以看到之前真实设备建立的文件
5 LVM的删除
现在经过以上步骤的建立,系统中存在pv:/dev/vdb2,vg:vg0;lv:lv0,lv0-backup,现在我们将其全部移除:
umount /data 先解除挂载
lvremove /dev/vg0/lv0-backup 删除快照
lvremove /dev/vg0/lv0 删除快照的母本lv0
vgremove vg0 移除卷组vg0
pvremove /dev/vdb2 移除LVM软件,
若想继续使用分区/dev/vdb2,可以改变它的代码继续使用
也可以不想使用选择删除该分区
########################The End###########################