16- LVM 逻辑卷管理与快照 🗄️
前提条件 ✅
- 已完成磁盘分区与文件系统创建(上一章添加的 /dev/sdb1 或新磁盘已格式化并挂载)
- 以 ops 用户登录(具有 sudo 权限)
- 系统运行在 Debian 12 Bookworm
- VMware Workstation Pro 环境:建议至少 2 块虚拟磁盘(系统盘 + 数据盘 ≥40GB)
详细步骤 🛠️
-
安装 LVM 工具
Debian 默认已包含,但确认安装:sudo apt update sudo apt install -y lvm2 -
查看当前 LVM 状态
sudo pvdisplay # 物理卷 sudo vgdisplay # 卷组 sudo lvdisplay # 逻辑卷 sudo pvs # 简洁版物理卷 sudo vgs # 简洁版卷组 sudo lvs # 简洁版逻辑卷 -
创建物理卷(PV)
假设使用上一章的分区 /dev/sdb1(或整盘 /dev/sdb):sudo pvcreate /dev/sdb1 sudo pvs -
创建卷组(VG)
sudo vgcreate vg_data /dev/sdb1 # 或添加多个 PV # sudo vgcreate vg_data /dev/sdb1 /dev/sdc1 sudo vgs -
创建逻辑卷(LV)
创建 20GB 逻辑卷用于 /data:sudo lvcreate -L 20G -n lv_data vg_data sudo lvs -
格式化并挂载逻辑卷
sudo mkfs.xfs -f -L data_lv /dev/vg_data/lv_data sudo mkdir /data sudo mount /dev/vg_data/lv_data /data df -h /data
永久挂载(fstab):
sudo blkid /dev/vg_data/lv_data # 获取 UUID
sudo nano /etc/fstab
添加:
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data xfs defaults,noatime 0 2
测试:
sudo mount -a
- LVM 快照创建与恢复(核心生产功能)
创建快照(假设 /data 上有测试数据):# 先创建一些测试数据 sudo touch /data/testfile{1..5}.txt # 创建快照(预留 5GB 空间给 COW) sudo lvcreate -L 5G -s -n lv_data_snap /dev/vg_data/lv_data sudo lvs
模拟数据破坏:
sudo rm -f /data/testfile*.txt
ls /data
回滚快照:
sudo umount /data
sudo lvconvert --merge /dev/vg_data/lv_data_snap
# 确认合并(会提示重启或 umount)
sudo reboot # 或 lvconvert 完成后重新 mount
重启后验证:
sudo mount /dev/vg_data/lv_data /data
ls /data # testfile* 应该恢复
- 扩展逻辑卷(在线扩容,无需 downtime)
扩展 LV 10GB:sudo lvextend -L +10G /dev/vg_data/lv_data sudo xfs_growfs /data df -h /data
实践任务 🎯
- 创建物理卷、卷组 vg_data、逻辑卷 lv_data(20GB),格式化为 xfs 并挂载到 /data
- 在 /data 上创建 5 个测试文件
- 创建 5GB 快照 lv_data_snap,删除 /data 中的测试文件,然后合并快照恢复数据
- 将 lv_data 扩展 10GB 并用 xfs_growfs 在线扩容,验证 df -h 显示正确大小
自测问题 ❓
- LVM 快照基于什么机制实现(COW),空间不足时会发生什么?
- 如何在线扩展 XFS 文件系统上的逻辑卷而不卸载?
- lvcreate -s 命令中的 -s 参数代表什么?
- 如果卷组 vg_data 空间不足,如何添加新物理卷?
总结 📌
LVM 是 Debian 生产环境中数据盘管理的事实标准,提供灵活的扩容、快照回滚、迁移能力。
快照功能特别适合数据库备份前一致性快照、测试环境回滚、误删恢复等场景。
后续章节的 NFS、备份、数据库数据目录都将优先使用 LVM 逻辑卷。