LVM简介:
是一种管理磁盘的机制
管理磁盘的两种方式分为基本分区管理,以及LVM方式的管理;
首先看一下LVM的架构图;
基本分区(MBR|GPT) ----> Filesystem(制作文件系统类型) ----> mount(挂载)
逻辑卷LVM ----> Filesystem(制作文件系统类型) ----> mount(挂载)
LVM中含有几个概念
pv: 物理卷,作为真正存储数据的物理磁盘,使用lvm管理磁盘分区的时候需要制作(可以是已经分区好的磁盘设备,也可以是没有分区好的磁盘设备)
vg: 卷组,多个pv组成,类似于多个小磁盘组合成一个大型磁盘列阵
lv: 逻辑卷,可制作为文件系统(格式化),进行挂载使用
LE: 逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。
PE:物理区域是物理卷中可用于分配的最小存储单元,物理区域大小在建立卷组(VG)时指定,一旦确定不能更改,同一卷组所有物理卷的物理区域大小需一致,新的pv加入到vg后,PE的大小自动更改为vg中定义的PE大小;
注意:其实LE是放在LV上来看是LE ,而放在PV上来看就是PE了;
创建pv
前提:需要在虚拟机中含有没有使用的磁盘或者磁盘分区
例如:在虚拟机中添加了一块磁盘,已经将其分了两个分区分别为sdc1 sdc2,均为10G大小
# 创建pv(即将普通的分区好的磁盘添加pv标签)
pvcreate /dev/sdc{1,2} (可以同时使用多个物理分区磁盘进行同时制作)
创建vg
# 创建vg
vgcreate myvg /dev/sdc{1,2}
# 查看vg信息的三个命令
vgs
vgdisplay [vg_path]
vgscan [vg_path]
创建 LV
# 创建lv
lvcreate -n lv1 -L 10G /dev/myvg
-n:指定创建的lv的名称
-L:指定创建的lv的大小
在最后面指定创建的lv是从myvg这个vg中获取的存储空间
查看lv信息的命令:
lvs
lvscan [lv_path]
lvdisplay [lv_path]
将创建好的LV格式化制作成文件系统
两种不同的文件系统的格式化命令不同:
1、xfs文件系统
mkfs.xfs /dev/myvg/lv1
2、ext4文件系统
mkfs.ext4 /dev/myvg/lv1
挂载文件系统
# 创建挂载点
mkdir /users
# 挂载
mount /dev/myvg/lv1 /users
到此为止一个LVM制作完成;
lvm文件系统的扩容以及缩减
扩容
扩容文件系统的时候我们需要理解的是:由于文件系统是使用LV来格式化创建的,所以扩容文件系统实际就是扩容LV;而LV的存储空间是来自于所依赖的VG,而VG的存储空间又是来自于其所依赖的PV,因此,我们想要扩容文件系统,首先可以查看当前文件系统所依赖的VG是否有可用空间;如果有那么就直接扩展即可,如果没有的话那么就需要向VG中添加PVl来实现;
例如:
我们需要给以上创建的 lv1 扩容
1、首先查看lv1所依赖的vg是否还有可用空间
lvs #查看lv1所依赖的vg是哪个
由如下图得知 lv1 所依赖的vg是myvg
2、查看myvg是否还有可使用的空间
vgs /dev/myvg
vgdisplay /dev/myvg
3、那么我们可以直接使用lv扩展命令进行扩容(我们这里扩容5G)
lvextend -L +5G /dev/myvg/lv1
注意::执行完这一步的话只是扩容了文件系统存储的物理边界,并没有扩展文件系统存储的逻辑边界,因此,此时查看挂载的文件系统大小还是原来的大小并没有变大,需要使用命令去扩展逻辑边界
resize2fs -p /dev/myvg/lv1
这样才算成功了;
这个时候我们去看myvg中的可用存储空间大小会发现,变小了;
如果是vg本身的存储空间不够使用的话,那么就可用使用vgextend添加;
示例:
我当前虚拟机中的磁盘情况
开始:
1、关闭虚拟机添加磁盘
2、添加完成之后,开启虚拟机然后查看是否成功添加
ll /dev/sd*
可以看到我们添加了一块新的磁盘,为sdb
3、我们给这个磁盘分区,分别分为四个分区,均为5G
按照相同的步骤进行分区,分别为sdb1,sdb2,sdb3,sdb4,并且类型为linux lvm
我们就演示给以下根分区的文件系统进行扩容
首先查看一下该文件系统所依赖的vg是否有可用的存储空间
可用看出以上文件系统所依赖的vg并没有可用的存储空间,所以我们需要扩容vg
1、首先需要将刚才分好区的磁盘sdb1制作pv标签
pvcreate /dev/sdb1
2、然后将带有pv标签的磁盘归属到centos这个vg中去
vgextend /dev/centos /dev/sdb1
这个时候我们查看vg 发现有了小于5G的可用空间(由于需要记录元数据信息,所以会小于5G)
这个时候我们就可以进行文件系统的扩容了;
首先进行物理边界扩容
lvextend -L +1G /dev/mapper/centos-root
从图中可以看出我们执行完以上命令的时候依然只是扩展了物理边界,没有扩展逻辑边界;所以接下去我们需要继续将逻辑边界扩大;
# 由于根分区的文件系统类型为xfs 所以 使用xfs_growfs 命令
xfs_growfs /dev/mapper/centos-root
缩减文件系统逻辑卷
注意:
1、不能在线缩减,得先取消挂载umount;
2、确保缩减后的空间大小依然能存储原有的所有数据;
3、在缩减之前应该先强行检查文件,以确保文件系统处于一至性状态
1、取消挂载
umount 挂载点
2、强制检查文件
e2fsck -f /PATH/TO/lv
3、先缩减逻辑边界
resize2fs /PATH/TO/lv SIZE
SIZE:指的是缩减之后的大小
4、缩减物理边界
lvreduce -L [-]# /PATH/TO/lv
5、重新挂载
mount 挂载点
==注意:==根分区支持此方法的缩减;因为无法取消根分区文件系统的挂载;
来源:CSDN
作者:yang_x_b
链接:https://blog.csdn.net/yang_x_b/article/details/103833971