LVM即逻辑卷管理器,是Linux系统下用于动态管理磁盘分区的机制,它打破了传统分区固定大小的限制,让磁盘空间的分配和调整更加灵活。传统分区在划分后就很难修改大小,而LVM可以把多个物理磁盘或者分区整合起来,按需分配存储空间,适配不同的业务场景需求。

LVM分区的核心组成结构
LVM分区的管理依赖三个核心层级,自下而上分别是物理卷、卷组和逻辑卷,三者的关系决定了存储资源的调度方式。
物理卷(PV)
物理卷是LVM的基础存储单元,通常是普通的磁盘分区或者完整的物理磁盘,需要先将这些设备初始化为LVM支持的物理卷格式,才能被LVM管理。初始化过程会写入LVM的元数据,标记该设备可用于LVM存储池。
卷组(VG)
卷组是由一个或多个物理卷组成的存储池,相当于把多个物理卷的存储空间整合到一起,形成一个统一的可用空间集合。卷组的大小等于所有组成它的物理卷的总容量,后续的逻辑卷都从卷组中划分空间。
逻辑卷(LV)
逻辑卷是从卷组中划分出来的可用存储空间,相当于传统意义上的分区,但是它可以动态调整大小。用户可以在逻辑卷上创建文件系统,挂载到系统的目录中使用,和普通分区的使用方式没有区别。
LVM分区相比传统分区的优势
- 动态调整容量:逻辑卷的大小可以随时扩容或者缩容,不需要重新分区和格式化磁盘,也不会影响已有数据,适配业务存储需求的变化。
- 跨磁盘整合:可以把多个不同磁盘的存储空间整合到同一个卷组中,避免单个磁盘容量不足的问题,充分利用所有磁盘的存储资源。
- 快照功能:LVM支持给逻辑卷创建快照,快照可以保存某一时刻的数据状态,用于数据备份或者恢复,不会影响原逻辑卷的正常使用。
- 灵活迁移:逻辑卷可以在不同的物理卷之间迁移数据,方便磁盘替换或者存储性能优化,不需要中断业务服务。
LVM分区基础操作示例
以下是创建LVM分区的基础流程示例,假设我们有两块磁盘/dev/sdb和/dev/sdc,需要整合它们的空间创建一个可动态扩容的逻辑卷。
1. 初始化物理卷
先把两块磁盘初始化为LVM物理卷:
# 初始化/dev/sdb为物理卷 pvcreate /dev/sdb # 初始化/dev/sdc为物理卷 pvcreate /dev/sdc # 查看物理卷状态 pvs
2. 创建卷组
把两个物理卷加入到名为vg_data的卷组中:
# 创建卷组vg_data,包含/dev/sdb和/dev/sdc vgcreate vg_data /dev/sdb /dev/sdc # 查看卷组状态 vgs
3. 创建逻辑卷
从vg_data卷组中划分10G空间,创建名为lv_storage的逻辑卷:
# 创建大小为10G的逻辑卷lv_storage lvcreate -L 10G -n lv_storage vg_data # 查看逻辑卷状态 lvs
4. 格式化和挂载逻辑卷
给逻辑卷创建ext4文件系统,挂载到/data目录使用:
# 格式化逻辑卷为ext4文件系统 mkfs.ext4 /dev/vg_data/lv_storage # 创建挂载目录 mkdir /data # 挂载逻辑卷 mount /dev/vg_data/lv_storage /data # 查看挂载状态 df -h /data
5. 逻辑卷扩容操作
如果后续/data目录空间不足,可以从卷组中再划分5G空间扩容逻辑卷:
# 给lv_storage逻辑卷扩容5G lvextend -L +5G /dev/vg_data/lv_storage # 刷新文件系统大小,让扩容生效 resize2fs /dev/vg_data/lv_storage # 再次查看挂载状态,确认容量变化 df -h /data
注意事项
使用LVM分区时需要注意,物理卷损坏会导致整个卷组的数据不可用,重要数据建议做好备份。另外缩容逻辑卷存在数据丢失风险,操作前一定要确认数据已经备份,并且文件系统支持缩容操作。如果是在生产环境使用,建议提前规划好卷组和逻辑卷的大小,减少不必要的调整操作。