LVM 解决什么
普通分区 = 固定大小,满了就要重新分区(停机 + 数据迁移)。
LVM(Logical Volume Manager)= 在物理盘和文件系统中间加一层抽象:
物理盘 PV(Physical Volume)
↓ 组成
VG(Volume Group)
↓ 分出
LV(Logical Volume)
↓ 格式化
文件系统
↓ 挂载
/data
好处:
- 多盘组合成大池子
- 在线扩容(不停机)
- 快照(备份用)
- 精简配置(thin provisioning)
完整流程
1. 装 LVM
sudo apt install lvm2
2. 把物理盘转 PV
sudo pvcreate /dev/sdb /dev/sdc
sudo pvs
# PV VG Fmt Attr PSize PFree
# /dev/sdb lvm2 --- 100.00g 100.00g
# /dev/sdc lvm2 --- 100.00g 100.00g
3. 多个 PV 组成 VG
sudo vgcreate datavg /dev/sdb /dev/sdc
sudo vgs
# VG #PV #LV #SN Attr VSize VFree
# datavg 2 0 0 wz--n- 200.00g 200.00g
4. 从 VG 分 LV
sudo lvcreate -L 50G -n datalv datavg
# 或按百分比
sudo lvcreate -l 50%FREE -n applv datavg
sudo lvs
# LV VG Attr LSize
# datalv datavg -wi-a----- 50.00g
5. 格式化 + 挂载
sudo mkfs.ext4 /dev/datavg/datalv
sudo mkdir /data
sudo mount /dev/datavg/datalv /data
加到 fstab(用 LV 路径,不是 UUID):
/dev/datavg/datalv /data ext4 defaults 0 2
在线扩容(LVM 最爽的功能)
数据盘满了——VG 还有空间:
# 1. 扩 LV(多分 50G)
sudo lvextend -L +50G /dev/datavg/datalv
# 2. 扩文件系统
sudo resize2fs /dev/datavg/datalv # ext4
sudo xfs_growfs /data # xfs
# 完成!不停机不卸载
df -h /data
VG 加新盘
# 新插了 /dev/sdd
sudo pvcreate /dev/sdd
sudo vgextend datavg /dev/sdd
# 现在 VG 多 100G 可用
快照(备份神器)
# 建一个 10G 的快照
sudo lvcreate -L 10G -s -n datasnap /dev/datavg/datalv
# 用快照备份(数据库 / 大文件备份不停机)
sudo mount -o ro /dev/datavg/datasnap /mnt/snap
cp -a /mnt/snap/important /backup/
sudo umount /mnt/snap
# 删快照
sudo lvremove /dev/datavg/datasnap
⚠ 快照的"大小"是预留变化空间——原 LV 改的越多,快照占用越多。改超过快照大小 → 快照失效。
缩 LV(少用 + 危险)
sudo umount /data
sudo e2fsck -f /dev/datavg/datalv
sudo resize2fs /dev/datavg/datalv 30G # 先缩文件系统
sudo lvreduce -L 30G /dev/datavg/datalv # 再缩 LV
sudo mount /data
先缩文件系统再缩 LV,反过来数据丢光。操作前必须备份。
删除(清干净)
sudo umount /data
sudo lvremove /dev/datavg/datalv
sudo vgremove datavg
sudo pvremove /dev/sdb /dev/sdc
实战:云上扩盘的标准做法
1. 云控制台扩盘 100G → 150G
2. 服务器看到 /dev/vda(系统盘)已经 150G 但分区还是 100G
3. sudo growpart /dev/vda 1 # 扩分区
4. sudo resize2fs /dev/vda1 # 扩文件系统
5. df -h # 验证
云上系统盘通常用普通分区不用 LVM——growpart + resize2fs 直接搞定。数据盘建议 LVM。
下一篇:磁盘配额。