使用LVM逻辑卷
约 791 字
LVM(逻辑卷管理)把物理磁盘抽象成三层:物理卷(PV)→ 卷组(VG)→ 逻辑卷(LV)。多块数据盘可以合成一个存储池,逻辑卷从池里划分,后续加盘、扩容都在线完成,不用挪数据。适合"单盘不够用、未来还要加"的业务盘场景。
pvcreate 会清空目标盘
把一块盘/分区做成物理卷,上面的数据会被清掉,操作前确认目标盘是空盘或数据已备份。
准备:确认磁盘与安装工具
sudo lsblk -f # 看 FSTYPE 列:为空的盘是未初始化的空盘,可直接做 PV
sudo apt install -y lvm2 # Debian/Ubuntu
sudo dnf install -y lvm2 # RHEL 系(多数镜像已预装)lsblk -f 中 FSTYPE 非空的盘已有文件系统,不能直接 pvcreate;若盘上已有分区,PV 要建在分区上(如 /dev/vdc1)。
创建:PV → VG → LV
以两块空盘 /dev/vdb、/dev/vdc(各 40G)合成 80G 卷组为例:
# 1. 创建物理卷
sudo pvcreate /dev/vdb /dev/vdc
# 2. 合成卷组(命名自定义,如 vg_data)
sudo vgcreate vg_data /dev/vdb /dev/vdc
sudo vgs # VFree = 卷组剩余可分配容量
# 3. 从卷组划出逻辑卷(-L 指定大小,或 -l 100%FREE 吃掉全部剩余)
sudo lvcreate -L 55g -n lv01 vg_data
sudo lvdisplay # 记下 LV Path,如 /dev/vg_data/lv01
# 4. 格式化并挂载
sudo mkfs -t ext4 /dev/vg_data/lv01 # 或 mkfs -t xfs
sudo mkdir /data && sudo mount /dev/vg_data/lv01 /data
df -Th开机自动挂载写 /etc/fstab,用 UUID(blkid /dev/vg_data/lv01 查询),完整步骤见Linux服务器挂载数据盘。
扩容(最常用)
路径一:卷组还有剩余(VFree > 0)
sudo vgs # 确认 VFree
sudo lvextend -L +10G /dev/vg_data/lv01 # 加 10G;或 -l +100%FREE 全部吃掉
# 扩文件系统(二选一,按文件系统类型):
sudo resize2fs /dev/vg_data/lv01 # ext4,对 LV 路径执行
sudo xfs_growfs /data # xfs,对挂载点执行
df -Th # 验证路径二:卷组满了 → 先扩卷组
# 方式A:新加一块空盘加入卷组
sudo pvcreate /dev/vdd
sudo vgextend vg_data /dev/vdd
# 方式B:原盘已在控制台扩容(见 Linux服务器数据盘扩容),通知 LVM:
sudo growpart /dev/vdc 1 # 盘上有分区时先扩分区,整盘做 PV 则跳过
sudo pvresize /dev/vdc # 物理卷感知新容量
sudo vgs # VFree 增加后,回到路径一扩 LV缩容与删除
xfs 不能缩容
ext4 缩容需要先卸载文件系统、按顺序 resize2fs → lvreduce,操作繁琐且易翻车;xfs 完全不支持缩小。规划容量时宁大勿小,真要缩就备份数据重建。
sudo umount /data
sudo lvremove /dev/vg_data/lv01 # 删逻辑卷(会删数据)
sudo vgremove vg_data # 删卷组
sudo pvremove /dev/vdb /dev/vdc # 删物理卷(按需)常用查看命令
| 命令 | 作用 |
|---|---|
pvs / vgs / lvs | 三层概览,看容量与剩余空间 |
pvdisplay / vgdisplay / lvdisplay | 详细信息(PV 对应哪块盘、LV Path 等) |
lsblk -f | 盘/分区/文件系统/挂载点全貌 |
cat /proc/mdstat | ——(这是 RAID 的,别混) |
