Linux 磁盘管理实战:LVM 逻辑卷扩容与日常维护


阿里云特惠 - 新用户专享

Linux 磁盘管理实战:LVM 逻辑卷扩容与日常维护

磁盘空间不足是运维日常最常遇到的问题之一。传统分区方式扩容麻烦、需要停机;而 LVM(逻辑卷管理)可以在线扩容,灵活应对业务增长。本文讲解磁盘基础操作、LVM 架构和在线扩容实战。

一、磁盘基础命令速查

df -hT                         # 查看文件系统使用情况(包含类型)
lsblk -f                       # 块设备树形视图(含文件系统和挂载点)
fdisk -l                       # 查看所有磁盘分区信息
du -sh /var/log/* | sort -rh   # 查找 /var/log 下占用最大的目录
ncdu /                         # 交互式磁盘使用分析工具(更直观)
iostat -xd 1 5                 # 查看磁盘 IO 实时数据

二、传统分区(MBR/GPT)操作

# 对新硬盘 /dev/sdb 进行分区
fdisk /dev/sdb  # MBR 格式,适合 < 2TB 的磁盘
# 或
gdisk /dev/sdb  # GPT 格式,支持 > 2TB

# 格式化为 ext4
mkfs.ext4 /dev/sdb1

# 手动挂载
mount /dev/sdb1 /data

# 开机自动挂载(写入 /etc/fstab)
echo '/dev/sdb1  /data  ext4  defaults  0  2' >> /etc/fstab
mount -a  # 测试 fstab 配置是否正确

三、LVM 架构三层模型

LVM 在物理磁盘和文件系统之间增加了一个抽象层,实现灵活的空间管理:

物理磁盘分区(/dev/sdb1, /dev/sdc1)
      ↓ 初始化为
物理卷(PV: Physical Volume)
      ↓ 加入
卷组(VG: Volume Group)  ← 池化所有物理卷的空间
      ↓ 从中划分
逻辑卷(LV: Logical Volume)  ← 对上层文件系统的抽象磁盘
      ↓ 格式化 + 挂载
文件系统(ext4 / xfs)

灵活性的关键:可以随时向 VG 中添加新 PV,再扩展 LV 的大小,而不需要重新分区。

四、LVM 创建实战

# 步骤一:初始化物理卷(假设新磁盘为 /dev/sdb 和 /dev/sdc)
pvcreate /dev/sdb /dev/sdc
pvdisplay  # 查看 PV 状态

# 步骤二:创建卷组 vg_data
vgcreate vg_data /dev/sdb /dev/sdc
vgdisplay vg_data  # 查看总大小

# 步骤三:创建逻辑卷(从 vg_data 中划分 200G 给 lv_app)
lvcreate -n lv_app -L 200G vg_data
# 或者使用全部剩余空间:lvcreate -n lv_app -l 100%FREE vg_data

# 步骤四:格式化并挂载
mkfs.ext4 /dev/vg_data/lv_app
mkdir /opt/app
mount /dev/vg_data/lv_app /opt/app

# 步骤五:写入 fstab 开机自挂
echo '/dev/vg_data/lv_app  /opt/app  ext4  defaults  0  2' >> /etc/fstab

五、LVM 在线扩容(生产环境最常用操作)

# 场景:/opt/app 空间不够了,需要扩容到 300G

# 1. 先确认 VG 有足够的剩余空间
vgdisplay vg_data | grep "Free"

# 2. 如果 VG 空间不足,添加新磁盘到 VG
pvcreate /dev/sdd           # 初始化新磁盘为 PV
vgextend vg_data /dev/sdd   # 将新 PV 加入 VG

# 3. 扩展 LV(增加 100G)
lvextend -L +100G /dev/vg_data/lv_app
# 或扩展到指定大小:lvextend -L 300G /dev/vg_data/lv_app

# 4. 在线扩展文件系统(不需要停机!)
# ext4 文件系统:
resize2fs /dev/vg_data/lv_app
# xfs 文件系统:
xfs_growfs /opt/app

# 5. 验证
df -h /opt/app

六、LVM 快照(数据备份利器)

# 创建快照(需要预留快照空间,与原卷相同的 IO 量)
lvcreate -n lv_app_snap -L 20G -s /dev/vg_data/lv_app

# 挂载快照(可以读取某一时刻的数据状态)
mount -o ro /dev/vg_data/lv_app_snap /mnt/snapshot

# 备份完成后删除快照
umount /mnt/snapshot
lvremove /dev/vg_data/lv_app_snap

七、常用 LVM 命令速查

对象 查看 创建 删除 扩展
PV pvdisplay / pvs pvcreate pvremove
VG vgdisplay / vgs vgcreate vgremove vgextend
LV lvdisplay / lvs lvcreate lvremove lvextend

八、磁盘 IO 性能调优小贴士

  • SSD 磁盘选择 noopnone 调度算法;HDD 选 deadline
  • 数据库日志目录(MySQL binlog、WAL)和数据目录分开挂载,防止日志写满影响数据目录
  • 挂载参数加 noatime 可以减少访问时间更新的 IO 开销(对读多写少的场景有效)

总结

LVM 是每个 Linux 运维人员必须掌握的技能。掌握 PV→VG→LV 三层模型后,在线扩容、快照备份都变得得心应手。强烈建议新服务器安装系统时就用 LVM 管理数据盘,为将来的扩容留下余地。

发表评论