####################1.linux存储管理方式##################################################
LVM全称为Logical Volume Manager逻辑卷管理器,LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。可以使硬盘无限扩展。
PV(physical volume):物理卷。在逻辑卷管理系统最底层,可为整个物理硬盘或实际物理硬盘上的分区。
VG(volume group):卷组。建立在物理卷上,一卷组中至少要包括一物理卷,卷组建立后可动态的添加卷到卷组中,一个逻辑卷管理系统工程中可有多个卷组。
LV(logical volume):逻辑卷。建立在卷组基础上,卷组中未分配空间可用于建立新的逻辑卷,逻辑卷建立后可以动态扩展和缩小空间。
PE(physical extent):物理区域。是物理卷中可用于分配的最小存储单元,物理区域大小在建立卷组时指定,一旦确定不能更改,同一卷组所有物理卷的物理区域大小需一致,新的pv加入到vg后,pe的大小自动更改为vg中定义的pe大小。 lvm=pe*n.
LE(logical extent):逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。
注意:linux下的文件系统需要挂载才可以使用,要将逻辑卷挂载。
卷组描述区域:卷组描述区域存在于每个物理卷中,用于描述物理卷本身、物理卷所属卷组、卷组中逻辑卷、逻辑卷中物理区域的分配等所有信息,它是在使用pvcreate建立物理卷时建立的。
我们要创建逻辑卷,首先要创建物理卷PV,之后创建卷组VG,最后才创建逻辑卷LV。
######################2.lvm逻辑卷配置详情####################################
##(1)创建lvm逻辑卷#####################################
在创建管理之前,我们最好还原一下实验环境,以免在实验过程中才发现问题造成极大的麻烦。
这里我选择在server虚拟机里进行实验。
下面我们就进入创建步骤:
(1) watch -n 1 'pvs;vgs;lvs;df -h /mnt' ##监控命令
(2) 打开另一个shell fdisk /dev/vdb ##建立三个分区,大小为1G并且标签改为8e
(3) partprobe ##手动同步分区
(4) pvcreate /dev/vdb1 ##创建物理卷
(5) vgcreate vg0 /dev/vdb1 ##创建物理卷组
(6) lvcreate -L 200M -n lv0 vg0 ##在卷组上创建名为lv0,大小为200的逻辑卷
(7)mkfs.xfs /dev/vg0/lv0 ##格式化逻辑卷
(8) mount /dev/vg0/lv0 /mnt/ ##挂载
##(2)lvm逻辑卷的扩容#####################################
逻辑卷的扩容又分为xfs系统中扩容和ext4系统中扩容;
xfs系统中扩容分为两种:vg足够扩容和vg不足扩容;
(1)vg足够扩容:
lvextend -L 500M /dev/vg0/lv0 ##扩建逻辑卷大小为500M
xfs_growfs /dev/vg0/lv0 ##扩展挂载的文件系统
(2)vg不足扩容:
当pv容量不够用时,可以添加pv
pvcreate /dev/sdb2 ##新建物理卷
vgextend vg0 /dev/sdb2 ##扩大物理卷组
lvextend -L 1500M /dev/vg0/lv0 ##扩大设备
xfs_growfs /dev/vg0/lv0 ##扩大文件系统
(3)ext4下的lvm扩容
[root@localhost ~]# umount /mnt ##先卸载
[root@localhost ~]# mkfs.ext4 /dev/vg0/lv0 ##格式化逻辑卷
[root@localhost ~]# mount /dev/vg0/lv0 /mnt/ ##挂载
[root@localhost ~]# lvextend -L 1800M /dev/vg0/lv0 ##增加逻辑卷空间
Extending logical volume lv0 to 1.76 GiB
Logical volume lv0 successfully resized
[root@localhost ~]# resize2fs /dev/vg0/lv0 ##更新逻辑卷信息
扩容后的结果:
##3.缩减lvm逻辑卷空间及vg缩减#############################
(1)缩减lvm逻辑卷空间
lvm逻辑卷的缩减只针对于ext4系统,xfs文件系统不支持缩减;
也就是说xfs文件系统只支持扩容,不能缩减;而ext4文件系统既可以扩容也可以缩减。
在ext4缩减的具体步骤:
[root@localhost ~]# umount /mnt ##先卸载
[root@localhost ~]# e2fsck -f /dev/vg0/lv0 ##扫描逻辑卷上的空余空间
[root@localhost ~]# resize2fs /dev/vg0/lv0 1000M ##设备文件减少到1000M
[root@localhost ~]# mount /dev/vg0/lv0 /mnt ##挂载
[root@localhost ~]# lvreduce -L 1000M /dev/vg0/lv0 ##将逻辑卷减少到1000M
缩减之后结果:
(2)vg缩减(如果移除设备有数据,要迁移到空闲设备里)
[root@localhost ~]# pvmove /dev/vdb1 /dev/vdb2 ##将vdb1的空间数据转移到vdb2
/dev/vdb1: Moved: 88.0%
/dev/vdb1: Moved: 100.0% ##转移数据成功
[root@localhost ~]# vgreduce vg0 /dev/vdb1 ##将分区从vg0卷组中移除
Removed "/dev/vdb1" from volume group "vg0"
[root@localhost ~]# pvremove /dev/vdb1 ##把分区从系统中删除
Labels on physical volume
"/dev/vdb1" successfully wiped
注意:将vdb1的空间数据转移到vdb2时,要确保vdb2的足够的空间能将vdb1的数据转移,否则需要先将vdb1缩减。
##4.建立lvm快照#######################
使用的命令:
lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0
## -L大小,-n快照名字,-s 快照对象。
我们给刚创建的lv0创建快照。
步骤:
(1)先在lv0中建立10个文件;
cd /mnt、
touch file{1..10}
(2)建立一个50M的快照;(快照的大小只能小于余留大小,否则快照建立不成功)
lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0 50M:照片的大小
(3)挂载快照
mount /dev/vg0/lv0backup /mnt/
(4)查看是否有之前建立的文件
cd /mnt
ls
(5)删除
rm -fr *
cd
(6)卸载快照
umount /mnt/
(7)删除快照
lvremove /dev/vg0/lv0backup
(8)重新创建快照
lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0
(9)再次挂载快照,又可以查看到刚开始建立的文件
mount /dev/vg0/lv0backup /mnt/
ls /mnt/
##5.删除lvm逻辑卷#######################
其实这一步很简单,就是创建lvm逻辑卷的逆操作;
[root@localhost ~]# umount /mnt ##卸载
[root@localhost ~]# df
[root@localhost ~]# lvremove /dev/vg0/lv0backup ##删除快照
[root@localhost ~]# lvremove /dev/vg0/lv0 ##删除逻辑卷
[root@localhost ~]# vgremove vg0 ##删除物理卷组
[root@localhost ~]# pvremove /dev/vdb{1..2} ##删除物理卷
逻辑卷删除后结果:
总结:LVM逻辑卷是Linux里面一个很棒的空间使用机制,因为分区在没有格式化的情况下是没有办法加大或者放小的。通过LVM可以将你的磁盘空间做到灵活自如。