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