LVM 三层抽象

物理盘 → PV(Physical Volume)
              ↓ 组成
        VG(Volume Group,"池子")
              ↓ 分出
        LV(Logical Volume,"逻辑分区")
              ↓ 格式化 + 挂载
        文件系统 → /data

详见 linux/40-lvm

装 + 完整流程

sudo apt install lvm2

# 1. 物理盘 → PV
sudo pvcreate /dev/sdb /dev/sdc

# 2. PV → VG
sudo vgcreate datavg /dev/sdb /dev/sdc

# 3. VG 分出 LV
sudo lvcreate -L 50G -n datalv datavg
# 或按百分比
sudo lvcreate -l 50%FREE -n applv datavg

# 4. 格式化 + 挂载
sudo mkfs.ext4 /dev/datavg/datalv
sudo mkdir /data
sudo mount /dev/datavg/datalv /data

查看

# 看 PV / VG / LV
sudo pvs                       # PV 简短
sudo pvdisplay                  # PV 详细
sudo vgs
sudo vgdisplay
sudo lvs
sudo lvdisplay

在线扩容(LVM 最爽功能)

# VG 还有空间时扩 LV
sudo lvextend -L +50G /dev/datavg/datalv

# 扩文件系统
sudo resize2fs /dev/datavg/datalv        # ext4
sudo xfs_growfs /data                     # xfs(注意:是挂载点不是设备)

# 一步搞定(lvextend + 文件系统)
sudo lvextend -r -L +50G /dev/datavg/datalv

# 完成!不停机不卸载
df -h /data

加新盘到 VG

sudo pvcreate /dev/sdd
sudo vgextend datavg /dev/sdd
# VG 多 100G 可用

快照(数据库备份用)

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(少用 + 危险)

sudo umount /data
sudo e2fsck -f /dev/datavg/datalv
sudo resize2fs /dev/datavg/datalv 30G    # 先缩 fs
sudo lvreduce -L 30G /dev/datavg/datalv  # 再缩 LV
sudo mount /data

先缩 fs 再缩 LV——反过来数据丢光操作前必须备份

删除

sudo umount /data
sudo lvremove /dev/datavg/datalv
sudo vgremove datavg
sudo pvremove /dev/sdb /dev/sdc

云上常见:扩盘后让分区跟上

云控制台扩盘 100G → 150G,但服务器看到分区还是 100G:

sudo growpart /dev/vda 1               # 扩分区
sudo resize2fs /dev/vda1               # 扩文件系统
df -h                                   # 验证

云系统盘通常不用 LVM——直接 growpart + resize2fs 搞定。

  • LVM 增加了一层抽象——故障定位更复杂
  • 系统盘上 LVM 失败 = 系统起不来——救援盘救
  • 小项目 / 单盘不需要 LVM——直接 ext4 简单