本手册基于 银河麒麟(ARM64)LVM 环境编写,涵盖运维中常见的存储扩容场景、完整操作步骤、文件系统适配知识及避坑要点,可作为长期学习和参考指南。
一、扩容核心概念与分类
1. 存储扩容的核心目标
解决服务器根目录、数据目录等分区空间不足的问题,分为 LVM 扩容(推荐,灵活可扩展)和 非 LVM 扩容(直接调整分区,灵活性差)两类,本手册以企业主流的 LVM 扩容 为主。
2. LVM 核心组件(必须掌握)
LVM(逻辑卷管理)通过将物理磁盘抽象为逻辑卷,实现存储的灵活扩容 / 缩容,核心组件关系:物理磁盘 → 物理卷(PV) → 卷组(VG) → 逻辑卷(LV) → 文件系统
| 物理卷(PV) | Physical Volume | 将物理磁盘 / 分区初始化为 LVM 可识别的格式,是 LVM 的底层存储单元 |
| 卷组(VG) | Volume Group | 将多个 PV 合并为一个 “存储池”,可动态添加 / 移除 PV |
| 逻辑卷(LV) | Logical Volume | 从 VG 中划分的逻辑分区,可直接格式化挂载,支持动态扩容 |
| 文件系统 | File System | 格式化 LV 的格式(如 XFS、Ext4),需单独扩容才能识别 LV 新增空间 |
3. 常见扩容场景
| 新增物理磁盘扩容 | 服务器有空闲磁盘槽位 / 可挂载新磁盘(如本次 vdb/vdc 扩容) | 最常用、无风险,不影响现有数据 |
| 现有磁盘未分配空间扩容 | 已挂载的磁盘存在未划分的空闲分区(如 /dev/vda 有剩余空间) | 无需新增硬件,需调整分区表 |
| 云服务器云盘扩容 | 云主机挂载的云盘容量不足(如阿里云 EBS、华为云 EVS) | 需先在云平台控制台扩容云盘,再在系统内操作 |
二、不同场景下的 LVM 扩容全步骤
场景 1:新增物理磁盘扩容(本次操作场景)
适用于服务器新增物理磁盘 / 云盘,需将新磁盘加入现有 LVM 卷组,扩展逻辑卷。
前置准备
# 查看磁盘列表,确认新增磁盘(如 vdb、vdc)
lsblk
# 检查磁盘是否有数据/分区(无输出则为干净磁盘)
fdisk -l /dev/vdb
步骤 1:创建物理卷(PV)
将新增的空白磁盘初始化为 LVM 物理卷
# 初始化单块磁盘(如 vdb)
pvcreate /dev/vdb
# 批量初始化多块磁盘(如 vdb、vdc)
pvcreate /dev/vdb /dev/vdc
# 验证 PV 创建结果(显示 vdb、vdc 状态为 available)
pvdisplay
常见问题:若提示 device is busy,说明磁盘已被挂载或有分区,需先执行 umount /dev/vdb 卸载或 fdisk /dev/vdb 删除分区。
步骤 2:扩展卷组(VG)
将新创建的 PV 加入现有卷组(本次卷组名为 klas)
# 查看现有卷组信息(确认卷组名、剩余空间)
vgdisplay
# 将 PV 加入卷组 klas
vgextend klas /dev/vdb
# 批量加入多块 PV
vgextend klas /dev/vdb /dev/vdc
# 验证 VG 扩展结果(Free PE / Size 会增加新磁盘容量)
vgdisplay klas
步骤 3:扩展逻辑卷(LV)
从卷组中分配空间,扩展目标逻辑卷(本次目标 LV 为 /dev/mapper/klas-root)
# 方式1:使用卷组内所有剩余空间(推荐)
lvextend -l +100%FREE /dev/mapper/klas-root
# 方式2:指定扩容大小(如给根目录扩容 200G)
lvextend -L +200G /dev/mapper/klas-root /dev/vdb
# 验证 LV 扩展结果(LV Size 显示扩容后容量)
lvdisplay /dev/mapper/klas-root
参数说明:
- -l +100%FREE:使用卷组内全部空闲空间;
- -L +200G:指定扩容大小(+ 表示新增,无 + 表示设置为目标大小)。
步骤 4:扩展文件系统
LV 扩容后,文件系统并未识别新增空间,需执行对应命令扩展文件系统(关键步骤!)
| XFS(本次使用) | xfs_growfs /dev/mapper/klas-root | 仅支持在线扩容,不支持缩容 |
| Ext4 | resize2fs /dev/mapper/klas-root | 支持在线扩容 / 缩容,需先执行 e2fsck -f 检查 |
# 查看文件系统类型(确认根目录为 XFS)
df -Th /
# XFS 文件系统扩容
xfs_growfs /dev/mapper/klas-root
步骤 5:扩容验证
# 1. 查看文件系统容量(根目录容量应显示为扩容后大小)
df -h /
# 2. 查看 LVM 各组件状态(确认 PV/VG/LV 均正常)
pvdisplay && vgdisplay klas && lvdisplay /dev/mapper/klas-root
✅ 预期结果:根目录容量从 83G 扩展至 483G,业务运行无异常。
场景 2:现有磁盘未分配空间扩容
适用于已挂载的磁盘(如 /dev/vda)存在未划分的空闲空间,无需新增硬件。
核心步骤
# 进入 fdisk 工具
fdisk /dev/vda
# 输入 p 查看分区表 → d 删除现有 LVM 分区 → n 创建新分区 → t 修改类型为 8e → w 保存
pvresize /dev/vda2
场景 3:云服务器云盘扩容
适用于阿里云、华为云等云平台的云主机,需先在控制台扩容云盘,再在系统内操作。
核心步骤
# 重新扫描 SCSI 总线(通用命令)
echo 1 > /sys/class/block/vda/device/rescan
- 若云盘为 LVM 格式:重复「场景 2 步骤 1 – 步骤 5」;
- 若云盘为非 LVM 格式:使用 resize2fs/xfs_growfs 直接扩展文件系统。
三、关键知识补充与避坑指南
1. 在线扩容 vs 离线扩容
| 在线扩容 | LVM 扩容、XFS/Ext4 文件系统扩容 | 无需卸载分区,不影响业务运行,推荐生产环境使用 |
| 离线扩容 | 非 LVM 分区扩容、文件系统缩容 | 需卸载分区,会中断业务,需提前停机维护 |
2. 常见问题排查
| df -h 显示容量未变化 | 仅扩展了 LV,未扩展文件系统 | 执行 xfs_growfs/resize2fs 命令 |
| pvcreate 提示 device is busy | 磁盘已挂载或存在分区 | 执行 umount /dev/vdb 卸载,或 fdisk 删除分区 |
| lvextend 提示 insufficient free space | 卷组剩余空间不足 | 检查 VG 剩余空间,或新增 PV 加入 VG |
网硕互联帮助中心




评论前必须登录!
注册