CentOS系统用LVM动态管理磁盘空间

LVM(逻辑卷管理,Logical Volume Manager)是CentOS系统内置的磁盘管理工具,它提供了一种逻辑上的磁盘分区管理方式,允许用户动态调整磁盘空间的分配和使用,而无需重新分区或重启系统。LVM通过将物理磁盘划分为物理卷(PV)、卷组(VG)和逻辑卷(LV),为用户提供了更高的灵活性和可扩展性。

物理卷、卷组和逻辑卷概念

物理卷(Physical Volume, PV)

  • 定义:LVM 管理的基本存储单元,可以是整块物理磁盘(如 /dev/sdb)或磁盘分区(如/dev/sdb1)。
  • 作用:通过 pvcreate 命令初始化为 LVM 可识别的物理卷,提供底层存储空间。
  • 特点:不直接存储数据,需加入卷组(VG)后使用。可动态扩展或移除,支持多块磁盘整合。

卷组(Volume Group, VG)

  • 定义:由多个物理卷(PV)组成的逻辑存储池,统一管理物理存储资源。
  • 作用:通过 vgcreate 命令创建,从 PV 中抽象出可用空间,供逻辑卷(LV)分配。
  • 特点:可动态添加/删除 PV(如 vgextendvgreduce)。突破单块物理磁盘容量限制,实现空间聚合。

逻辑卷(Logical Volume, LV)

  • 定义:从卷组(VG)中划分的逻辑存储单元,可动态调整大小,类似传统分区但更灵活。
  • 作用:通过 lvcreate 命令创建,格式化后挂载到文件系统(如 ext4、xfs)使用。
  • 特点:支持动态扩展(lvextend)或缩小(lvreduce,需文件系统支持)。可创建快照(Snapshot)、跨磁盘分配空间,满足多样化存储需求。

了解物理卷(PV)、卷组(VG)和逻辑卷(LV)概念,开始动手操作lvm。

1. 初始化物理卷(PV)

# 初始化三块硬盘为物理卷(确保硬盘无重要数据!)
sudo pvcreate /dev/sdb /dev/sdc /dev/sdd

# 验证物理卷状态
sudo pvs
PV         VG   Fmt  Attr PSize   PFree
/dev/sdb       lvm2 ---  20.00g 20.00g
/dev/sdc       lvm2 ---  20.00g 20.00g
/dev/sdd       lvm2 ---  20.00g 20.00g
  • 注意pvcreate 将硬盘标记为 LVM 可管理的物理卷。若使用分区(如 /dev/sdb1),需先分区并设置类型为 8e(Linux LVM)。

非8e格式的分区可以用于LVM,但可能会导致系统识别问题、兼容性问题、性能和功能限制以及数据安全风险。为了避免这些问题,建议始终将LVM分区类型设置为8e,使用FDISK命令设置8e分区格式:

2. 创建卷组(VG)

# 创建卷组 lvm_test_vg,包含所有三块物理卷
sudo vgcreate lvm_test_vg /dev/sdb /dev/sdc /dev/sdd

# 查看卷组信息(总容量为三块硬盘之和)
sudo vgdisplay lvm_test_vg
  • 注意:卷组 lvm_test_vg 整合了三块硬盘的存储空间(总容量 ≈ 60G)。后续可随时通过 vgextend lvm_test_vg /dev/sde 添加新硬盘。

3. 创建逻辑卷(LV)

# 创建名为 lvm_test_lv 的逻辑卷,占用全部卷组空间
sudo lvcreate -n lvm_test_lv -l 20 lvm_test_vg
sudo lvcreate -n lvm_test_lv -L 10G lvm_test_vg

# 查看逻辑卷路径
sudo lvs
  • 注意
  • '-n lvm_test_lv':指定创建的逻辑卷名称lvm_test_lv
  • '-l 20':使用%比分配空间,示例为分配20%空间
  • '-L 10G':使用指定单位分配空间,单位为M、G

4. 格式化并挂载逻辑卷

# 格式化为 ext4 文件系统(根据需求选 xfs)
sudo mkfs.ext4 /dev/lvm_test_vg/lvm_test_lv

# 创建挂载点
sudo mkdir /opt/lvm_dat

# 临时挂载
sudo mount /dev/lvm_test_vg/lvm_test_lv /opt/lvm_dat

# 永久挂载(编辑 /etc/fstab)
echo "/dev/lvm_test_vg/lvm_test_lv /opt/lvm_dat ext4 defaults 0 0" | sudo tee -a /etc/fstab
  • 注意:使用 mount -a 重新加载 /etc/fstab 验证配置。推荐使用 UUID 挂载(通过 blkid /dev/lvm_test_vg/lvm_test_lv 获取)。

5. 动态调整逻辑卷

# 移除故障物理卷
sudo vgreduce lvm_test_vg /dev/sdb
sudo pvmove /dev/sdb     # 迁移数据到其他 PV

# 添加新硬盘 /dev/sdf 并扩展卷组
sudo pvcreate /dev/sdf
sudo vgextend datavg /dev/sdf

# 扩展逻辑卷(增加 20G)
sudo lvextend -L +20G /dev/lvm_test_vg/lvm_test_lv

# 调整文件系统大小(ext4)
sudo resize2fs /dev/lvm_test_vg/lvm_test_lv
  • 注意
  • 若使用 xfs,需用 xfs_growfs/opt/dat 扩展文件系统。扩容期间无需卸载文件系统或停机。
  • pvmove 需确保卷组有足够剩余空间容纳迁移数据。
  • 先扩展逻辑卷(lvextend),再扩展文件系统(resize2fsxfs_growfs)。
  • 物理卷故障时需及时替换,避免数据丢失。
  • 删除顺序:先删 LV → 再删 VG → 最后删 PV。删除操作不可逆,确保数据已备份

6. 创建快照(备份数据)

# 创建快照卷(分配 5G 空间)
sudo lvcreate -s -n data_snap -L 5G /dev/datavg/data_lv

# 挂载快照(只读)
sudo mount -o ro /dev/datavg/data_snap /mnt/snapshot
  • 注意
  • 快照卷用于备份或恢复数据,需分配足够空间存储原始卷的变更数据。
  • 快照空间不足时,快照将自动失效。快照操作期间,原始卷性能可能受影响。
  • 备份完成后删除快照:sudo lvremove /dev/datavg/data_snap

使用LVM(Logical Volume Manager,逻辑卷管理),可以实现动态的存储管理,灵活应对业务需求变化。适用于需要弹性存储、高可用性和高效运维的场景。

LVM(逻辑卷管理)优势显著:无需停机,在线调整逻辑卷大小,灵活应对存储需求变化;将多块物理磁盘合并为统一资源池,突破单盘容量限制;瞬间创建数据快照,支持安全备份与快速恢复;抽象物理存储层,逻辑卷命名直观,简化运维操作;支持逻辑卷跨多块磁盘,提升存储利用率和扩展性。

原文链接:,转发请注明来源!