LVM(Logical Volume Manager,逻辑卷管理器)是一种在 Linux 系统中对存储设备进行灵活管理的工具。传统硬盘分区方式中,磁盘空间被划分为固定大小的分区,一旦分配就很难调整,而 LVM 引入了 物理卷(PV)、卷组(VG)、逻辑卷(LV) 三层结构,使磁盘管理更加灵活。
- 物理卷(PV):物理存储设备或其分区,如
/dev/sda1
,是 LVM 的最底层存储单元。 - 卷组(VG):将一个或多个 PV 聚合成一个大的存储池,类似于将多块硬盘“合并”在一起。
- 逻辑卷(LV):从卷组中划分出的可用空间,类似于传统分区,用户和文件系统直接使用逻辑卷进行读写操作。
LVM 的优势在于它支持 动态调整卷大小、快照功能(用于备份)以及 跨磁盘扩展卷组,使系统管理员能够在不中断服务的情况下,灵活地管理磁盘空间,从而大大提高了存储利用率和管理效率。
以下,使用sdb,sdc,sdd三块磁盘来做示范。实际上使用分区,例如sdb1
,sdb2
,sdc1
也可以的
管理命令
功能 | PV 管理命令 | VG 管理命令 | LV 管理命令 |
---|---|---|---|
Scan(扫描) | pvscan | vgscan | lvscan |
Create(建立) | pvcreate | vgcreate | lvcreate |
Display(显示) | pvdisplay | vgdisplay | lvdisplay |
Remove(移除) | pvremove | vgremove | lvremove |
Extend(扩展) | vgextend | lvextend | |
Reduce(减少) | vgreduce | lvreduce |
小技巧:
- 使用
pvs
/vgs
/lvs
快速概览 - 使用
pvdisplay
/vgdisplay
/lvdisplay
查看详细信息 - 修改逻辑卷前务必备份重要数据
创建LVM
创建 LVM 流程:
pvcreate 创建 pv -> vgcreate 创建卷组 -> lvcreate 创建逻辑卷 -> mkfs.xfs lv 格式化-> mount 挂载
创建物理卷PV
pvcreate /dev/sd[b-d] #使用简单的写法,也可以分开写三个设备
# 使用pvs可以查看创建的物理卷

创建卷组VG
vgcreate vname /dev/sd[b-d] #将多个 PV 聚合成一个卷组,请务必指定卷组的名字
#使用vgs查看卷组状态

创建逻辑卷LV
lvcreate -L 10G -n lvm1 vname # -L 指定大小,-n指定逻辑卷的名称,并在最后引用上一步的vg卷组
#使用lvs查看逻辑卷状态

此时可以用lsblk
查看多出来的块设备

使用
格式化后再挂载,即可使用,详见:Linux的磁盘基本管理

LVM扩容
当已有的磁盘已经无法满足当前的使用,需要扩大LVM容量供后续使用。例如新加一块sde盘后操作:
vgextend vname /dev/sde #将新的sde盘加入卷组扩容
lvextend -L +10G /dev/vname/lvm1 #再分配10G空间到虚拟块文件
xfs_growfs /dev/vname/lvm1 //刷新xfs文件系统容量
resize2fs /dev/vname/lvm1 //刷新ext4类型文件系统容量
卸载和删除LVM
删除 LVM 流程:
umount 卸载 -> lvremove lv 移出卷组中所有逻辑卷-> vgremove vg 移出卷组-> pvremove 移出 pv
umount /mnt/mda # 从挂载目录卸载
lvremove /dev/vname/lvm1 #删除已有的lv卷
vgremove vname #删除已有的vg卷
pvremove /dev/sd[b-e] #删除已有的pv卷
踩坑记录
磁盘无法引用
有时候在创建PV卷的时候,磁盘会被跳过,通常是因为磁盘已经有了一个GPT分区表,所以需要删除它。
使用cfdisk
命令可以交互式删除已经存在的分区表,用法示范: cfdisk /dev/sdb

使用交互式操作,删除这个分区表后

然后,即可重新创建PV。
结语
LVM 的优势在于它支持 动态调整卷大小、快照功能(用于备份)以及 跨磁盘扩展卷组,使系统管理员能够在不中断服务的情况下,灵活地管理磁盘空间,从而大大提高了存储利用率和管理效率。