Linux 磁盘管理实操:LVM 与 fdisk 笔记

背景

服务器上磁盘空间不够用了,需要扩容。这看似是个简单操作,但如果不熟悉磁盘管理的工具链,很容易出错。这篇文章记录完整的操作流程。

查看当前磁盘状态

# 查看磁盘使用情况
df -h

# 查看磁盘分区表
fdisk -l

# 查看 LVM 状态
vgs    # 查看卷组
lvs    # 查看逻辑卷
pvs    # 查看物理卷

fdisk 分区操作

新挂载一块 500GB 的数据盘,需要先分区:

fdisk /dev/sdb

# 交互操作:
# n  - 新建分区
# p  - 主分区
# 1  - 分区号
# 回车 - 使用默认起始扇区
# 回车 - 使用默认结束扇区(整块盘)
# w  - 写入并退出

# 格式化
mkfs.ext4 /dev/sdb1

# 挂载
mkdir /data
mount /dev/sdb1 /data

# 写入 fstab 实现开机自动挂载
echo '/dev/sdb1 /data ext4 defaults 0 0' >> /etc/fstab

LVM 逻辑卷管理

LVM 的优势在于可以动态扩缩容,比传统分区灵活得多。

创建 LVM

# 创建物理卷
pvcreate /dev/sdc

# 创建卷组(命名为 data_vg)
vgcreate data_vg /dev/sdc

# 创建逻辑卷(100GB)
lvcreate -L 100G -n data_lv data_vg

# 格式化并挂载
mkfs.ext4 /dev/data_vg/data_lv
mount /dev/data_vg/data_lv /data2

在线扩容

# 扩展逻辑卷到 200GB(同时扩展文件系统)
lvextend -L 200G -r /dev/data_vg/data_lv

# 或者增加 50GB
lvextend -L +50G -r /dev/data_vg/data_lv

-r 参数会自动扩展文件系统,省去了单独执行 resize2fs 的步骤。

向卷组添加新磁盘

# 将新磁盘加入已有卷组
pvcreate /dev/sdd
vgextend data_vg /dev/sdd

# 然后就可以继续扩展逻辑卷了

常见问题

  1. 扩容后 df -h 看不到变化:没有加 -r 参数,需要手动执行 resize2fs /dev/data_vg/data_lv
  2. fdisk 看不到新分区:执行 partprobe 刷新分区表
  3. LVM 命令找不到:安装 lvm2

总结

磁盘管理是运维的基本功。fdisk 适合简单的分区需求,LVM 适合需要灵活扩容的场景。生产环境推荐使用 LVM。