一、LVM简介
LVM是逻辑卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制。LVM通过在硬盘和文件系统之间添加一个逻辑层,来为文件系统屏蔽下层硬盘分区布局,提高硬盘分区管理的灵活性。
使用LVM管理硬盘的基本过程如下:
- 将硬盘创建为物理卷。
- 将多个物理卷组合成卷组。
- 在卷组中创建逻辑卷。
- 在逻辑卷之上创建文件系统。
通过LVM管理硬盘之后,文件系统不再受限于硬盘的大小,可以分布在多个硬盘上,也可以动态扩容。

二、基本概念
- 物理存储介质(The physical media):指系统的物理存储设备,如硬盘,系统中为/dev/hda、/dev/sda等等,是存储系统最低层的存储单元。
- 物理卷(Physical Volume,PV):指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块。物理卷包括一个特殊的标签,该标签默认存放在第二个 512 字节扇区,但也可以将标签放在最开始的四个扇区之一。该标签包含物理卷的随机唯一识别符(UUID),记录块设备的大小和LVM元数据在设备中的存储位置。
- 卷组(Volume Group,VG):由物理卷组成,屏蔽了底层物理卷细节。可在卷组上创建一个或多个逻辑卷且不用考虑具体的物理卷信息。
- 逻辑卷(Logical Volume,LV):卷组不能直接用,需要划分成逻辑卷才能使用。逻辑卷可以格式化成不同的文件系统,挂载后直接使用。
- 物理块(Physical Extent,PE):物理卷以大小相等的“块”为单位存储,块的大小与卷组中逻辑卷块的大小相同。
- 逻辑块(Logical Extent,LE):逻辑卷以“块”为单位存储,在一卷组中的所有逻辑卷的块大小是相同的。
三、安装
Debian系列和Redhat系统使用如下命令查看是否安装LVM包
dpkg -l|grep -i lvm2 debian rpm -qa|grep lvm2 redhat

如未安装则使用如下命令进行安装
apt-get install lvm2 yum install lvm2或dnf install lvm2
四、管理与使用
4.1、查看磁盘分区情况
lsblk

4.2 创建物理卷(PV)
将设备初始化为物理卷
sudo pvcreate /dev/sdb /dev/sdc

验证物理卷状态
sudo pvs

4.3 创建卷组(VG)
创建一个包含以上PV的卷组
sudo vgcreate my_vg /dev/nvme0n1 /dev/nvme2n1 /dev/nvme4n1

验证卷组状态
sudo vgs

4.4 创建逻辑卷
从卷组分配空间创建逻辑卷。例如,创建一个100GB的逻辑卷
sudo lvcreate -L 20G -n my_lv my_vg

验证逻辑卷状态
sudo lvs

4.5 格式化逻辑卷
对逻辑卷进行格式化,例如使用ext4文件系统:
sudo mkfs.ext4 /dev/my_vg/my_lv

4.6 挂载逻辑卷
创建挂载点并挂载逻辑卷
sudo mkdir /my_data sudo mount /dev/my_vg/my_lv /my_data/ sudo df -hT

4.7 配置开机自动挂载
将挂载命令写入/etc/fstab.以便开机自动挂载 (不推荐)
echo '/dev/my_vg/my_lv /my_data ext4 defaults 0 0' | sudo tee -a /etc/fstab
将UUID写入分区表文件中
sudo blkid 查询逻辑卷的uuid

按照上步查询到的uuid,查询设备路径
ls /dev/disk/by-uuid/376b4a3c-fe9a-4191-b84c-c066db4e377b

挂载命令写入分区表
echo '/dev/disk/by-uuid/376b4a3c-fe9a-4191-b84c-c066db4e377b /my_data ext4 defaults 0 0'|sudo tee -a /etc/fstab

验证是否写入
cat /etc/fstab

重启验证是否自动挂载

4.8 从卷组扩容逻辑卷
假设需要扩容逻辑卷my_lv的大小
4.8.1 确认VG的剩余空间
sudo vgs
看到剩余19.99g的空间

4.8.2 扩容逻辑卷大小,增加19.99g
sudo lvextend -L +19.99G /dev/my_vg/my_lv

4.8.3 扩容文件系统
ext4文件系统扩容:
sudo resize2fs /dev/my_vg/my_lv

查看是否扩容成功 df -hT

xfs文件系统扩容:
sudo xfs_growfs /my_data
4.9 将新硬盘扩容到逻辑卷中
当逻辑卷组(VG)剩余空间不足时,用户可以购买新的硬盘并扩容到相应的卷组及逻辑卷中
4.9.1 先将新硬盘sdd初始化为物理卷
sudo pvcreate /dev/sdd

查看物理卷状态
我们可以看到多了一个sdd的PV

4.9.2 将新的物理卷加入到之前创建的VG中,也就是my_vg
sudo vgextend my_vg /dev/sdd
验证vg是否扩容成功,可以看到由原来的40g变成了60g
sudo vgs
4.9.3 扩容逻辑卷
重复上面4.8.1-4.8.3的步骤即可
4.10 逻辑卷缩容
先卸载挂载点
sudo umount /my_data
缩减文件系统:
sudo e2fsck -f /dev/my_vg/my_lv sudo resize2fs /dev/my_vg/my_lv 20G

缩减逻辑卷
sudo lvreduce -L 20G /dev/my_vg/my_lv

重新挂载逻辑卷
sudo mount /dev/my_vg/my_lv /my_data

4.11 删除逻辑卷、卷组、物理卷
卸载挂载点
sudo umount /my_data
删除逻辑卷
sudo lvremove /dev/my_vg/my_lv
删除卷组
sudo vgremove my_vg
删除物理卷
sudo pvremove /dev/sdb /dev/sdc
五、LVM常用命令总结
功能
|
命令
|
示例
|
查看磁盘状态
|
lsblk
|
lsblk
|
初始化 PV
|
pvcreate
|
pvcreate /dev/sdb
|
查看 PV 信息
|
pvs
/
pvdisplay
|
pvs
|
创建 VG
|
vgcreate
|
vgcreate my_vg /dev/sdb /dev/sdc
|
查看 VG 信息
|
vgs
/
vgdisplay
|
vgs
|
创建 LV
|
lvcreate
|
lvcreate -L 100G -n my_lv my_vg
|
查看 LV 信息
|
lvs
/
lvdisplay
|
lvs
|
扩展 LV
|
lvextend
+
resize2fs
|
lvextend -L +50G /dev/my_vg/my_lv
|
删除 LV
|
lvremove
|
lvremove /dev/my_vg/my_lv
|
六、总结
通过以上步骤,您可以灵活地使用 LVM 管理磁盘存储。LVM 提供了强大的功能,包括动态调整分区大小、创建快照和扩展卷组容量等,是现代 Linux 系统中磁盘管理的核心工具之一。
注意事项:
备份数据:任何涉及磁盘调整的操作都有潜在风险。
监控存储使用情况:确保 VG 和 LV 的空间分配合理。
快照使用:不要长时间保留快照,以免影响性能。