🔧 Linux运维实战 - Linux磁盘管理与LVM实战
在企业运维中,磁盘管理是最基础也最容易踩坑的环节。无论是服务器扩容、数据迁移,还是应对磁盘故障,LVM(逻辑卷管理) 都是运维工程师必须掌握的核心技能。今天我们就从实际场景出发,手把手带你搞定磁盘分区、LVM创建、扩容与缩容操作。
一、磁盘管理基础:从分区到文件系统
在开始LVM之前,我们先快速回顾Linux磁盘管理的基本流程。假设你有一块新硬盘 /dev/sdb,需要初始化为可用空间。
1. 查看磁盘信息
# 查看所有磁盘及分区
lsblk
# 查看磁盘详细信息
fdisk -l /dev/sdb
2. 创建分区(传统MBR方式)
fdisk /dev/sdb
# 交互命令:
# n -> 新建分区
# p -> 主分区
# 选择分区号(默认1)
# 指定起始扇区(默认)
# 指定结束扇区(如 +20G 或 回车使用全部空间)
# w -> 保存退出
注意:生产环境建议使用GPT分区表(parted 工具),支持超过2TB的磁盘。
3. 创建文件系统并挂载
# 格式化分区为ext4
mkfs.ext4 /dev/sdb1
# 创建挂载点并挂载
mkdir /data
mount /dev/sdb1 /data
# 查看挂载结果
df -h
但问题来了:如果未来磁盘空间不足怎么办? 传统分区无法动态调整大小,这正是LVM的用武之地。
二、LVM核心概念与实战操作
LVM将物理磁盘抽象为三个层次:PV(物理卷)→ VG(卷组)→ LV(逻辑卷)。你可以把VG想象成一个“存储池”,LV则是从池中划出的“逻辑分区”,可以随时扩容或缩容。
1. 创建物理卷(PV)
# 将整块磁盘或分区初始化为PV
pvcreate /dev/sdb /dev/sdc
# 查看PV状态
pvs
pvdisplay
2. 创建卷组(VG)
# 将两个PV加入同一个VG
vgcreate data_vg /dev/sdb /dev/sdc
# 查看VG信息
vgs
vgdisplay data_vg
3. 创建逻辑卷(LV)
# 从data_vg中划出50G创建LV
lvcreate -L 50G -n data_lv data_vg
# 查看LV
lvs
lvdisplay /dev/data_vg/data_lv
4. 格式化并挂载LV
# 创建文件系统(推荐xfs用于大文件,ext4通用性更好)
mkfs.xfs /dev/data_vg/data_lv
# 挂载
mkdir /data
mount /dev/data_vg/data_lv /data
# 设置开机自动挂载(写入/etc/fstab)
echo "/dev/data_vg/data_lv /data xfs defaults 0 0" >> /etc/fstab
三、LVM扩容实战:在线增加磁盘空间
假设 /data 目录已满,我们需要将LV从50G扩大到80G。
步骤1:扩展物理层
# 新增一块磁盘/dev/sdd
pvcreate /dev/sdd
# 将新PV加入卷组
vgextend data_vg /dev/sdd
步骤2:扩展逻辑卷
# 将LV扩大到80G
lvextend -L 80G /dev/data_vg/data_lv
# 或者增加30G(不指定总量)
lvextend -L +30G /dev/data_vg/data_lv
步骤3:文件系统感知新空间
关键点:不同文件系统命令不同!
# XFS文件系统
xfs_growfs /data
# ext4文件系统
resize2fs /dev/data_vg/data_lv
验证结果:df -h 应该能看到 /data 已变为80G。
四、LVM缩容:高风险操作需谨慎
缩容比扩容复杂得多,必须离线操作(卸载文件系统),且建议先备份数据。
# 1. 卸载文件系统
umount /data
# 2. 检查文件系统(ext4必须)
e2fsck -f /dev/data_vg/data_lv
# 3. 缩小文件系统(先缩小文件系统,再缩小LV)
resize2fs /dev/data_vg/data_lv 60G
# 4. 缩小LV
lvreduce -L 60G /dev/data_vg/data_lv
# 5. 重新挂载
mount /dev/data_vg/data_lv /data
注意:XFS文件系统不支持缩容!如果生产环境使用XFS,缩容的唯一方式是:备份数据 → 重建LV → 恢复数据。因此,规划时建议对频繁变动的数据使用ext4。
五、企业级最佳实践
1.预留元数据空间:创建VG时使用 `-s` 参数指定PE大小(默认4MB),大文件场景建议调大(如16MB)以减少元数据开销。
2.快照备份:LVM支持创建快照(`lvcreate -s`),可在秒级生成数据一致性副本,用于备份前冻结。
3.监控磁盘使用率:使用 `df -h` 和 `lvs` 定期检查,配合脚本告警(如超过80%触发邮件通知)。
# 示例:创建快照(20G快照空间)
lvcreate -L 20G -s -n data_snap /dev/data_vg/data_lv
总结
LVM让Linux磁盘管理从“静态”变为“动态”,无论是应对业务增长、数据迁移还是快速恢复,它都是运维工具箱中的利器。掌握PV→VG→LV三层抽象,配合文件系统特性(XFS只扩不减,ext4可扩可缩),你就能在企业级环境中灵活调度存储资源。