LVM 逻辑卷管理:创建、扩容与快照
用 PV/VG/LV 三层模型管理磁盘,实现在线扩容和快照备份,比直接分区灵活得多。
在服务器或物理机上,磁盘一旦按传统方式分好区,想再调整大小往往要卸载、重新分区甚至重装。LVM(Logical Volume Manager,逻辑卷管理)在磁盘和文件系统之间加了一层抽象,让你可以在线扩容、跨盘拼容量、给数据打快照,是长期运维数据盘的推荐做法。
三个核心概念
LVM 有三层结构,从底到上依次是:
- PV(物理卷):被 LVM 接管的裸盘或分区,如 /dev/vdb,是容量的来源。
- VG(卷组):一个或多个 PV 组成的"存储池",容量在这里汇总。
- LV(逻辑卷):从 VG 里划出来、真正拿去格式化挂载的"虚拟分区"。
简单说:PV 提供空间,VG 汇总空间,LV 分配空间。
从裸盘搭建 LVM
假设你新挂载了一块空盘 /dev/vdb,先用 lsblk 确认设备名,再依次执行:
# 1. 把裸盘变成物理卷(无需先分区)
sudo pvcreate /dev/vdb
# 2. 用 PV 创建卷组,取名 data_vg
sudo vgcreate data_vg /dev/vdb
# 3. 从卷组划出逻辑卷:指定大小,或用尽全部空闲
sudo lvcreate -L 20G -n data_lv data_vg
# sudo lvcreate -l 100%FREE -n data_lv data_vg
逻辑卷的设备路径是 /dev/datavg/datalv。接着格式化并挂载:
sudo mkfs.ext4 /dev/data_vg/data_lv
sudo mkdir -p /mnt/data
sudo mount /dev/data_vg/data_lv /mnt/data
# 写入 fstab 实现开机自动挂载
echo '/dev/data_vg/data_lv /mnt/data ext4 defaults 0 2' | sudo tee -a /etc/fstab
用 pvs、vgs、lvs 可随时查看三层的用量。
在线扩容
这是 LVM 最实用的能力:业务不停机就能加容量。若卷组还有空闲,直接扩逻辑卷;若空间不够,先加一块新盘进卷组:
# 卷组空间不足时,加入新盘
sudo pvcreate /dev/vdc
sudo vgextend data_vg /dev/vdc
# 扩容逻辑卷,-r 会自动同步扩展文件系统
sudo lvextend -r -L +10G /dev/data_vg/data_lv
# 或用尽全部空闲:
sudo lvextend -r -l +100%FREE /dev/data_vg/data_lv
-r(--resizefs)会替你调用 resize2fs 或 xfsgrowfs,ext4 和 xfs 都支持在线增大。注意:xfs 只能扩不能缩;ext4 可缩小但必须离线操作。
快照:备份与回滚
快照(snapshot)用写时复制(COW)记录原卷的变化量,给你一个某一时刻的"冻结视图",适合备份前或高风险升级前使用:
# 创建快照,-s 表示 snapshot,-L 5G 是留给变化量的空间
sudo lvcreate -s -L 5G -n data_snap /dev/data_vg/data_lv
# 挂载快照做一致性备份(rsync/tar)
sudo mount /dev/data_vg/data_snap /mnt/snap
若升级失败要回滚,把快照合并回原卷即可(需先卸载,重启后生效):
sudo umount /mnt/data
sudo lvconvert --merge /dev/data_vg/data_snap
注意事项
- 快照空间存的是"变化量",一旦被写满快照即失效,用 lvs 盯住 Snap% 使用率。
- 快照会拖慢原卷写性能,它是临时手段,用完及时 lvremove 删除。
- 快照和原卷在同一卷组,不是异地备份,替代不了真正的离线/异地备份。
小结
LVM 把"物理盘"和"用起来的分区"解耦:PV/VG/LV 三层让你随时加盘扩容、在线增大文件系统,还能用快照做备份和回滚。相比直接分区那种"分好就固定"的僵硬模式,LVM 的代价只是多几条命令,换来的却是长期运维的极大灵活性——数据盘建议默认走 LVM。