文章目录
-
- [1. 扩容背景与现状排查](#1. 扩容背景与现状排查)
-
- [1.1 容量与设备检查](#1.1 容量与设备检查)
- [1.2 LVM 卷组检查](#1.2 LVM 卷组检查)
- [2. 扩容操作步骤](#2. 扩容操作步骤)
-
- [步骤一:创建物理卷(Physical Volume)](#步骤一:创建物理卷(Physical Volume))
- [步骤二:扩展卷组(Volume Group)](#步骤二:扩展卷组(Volume Group))
- [步骤三:按需扩展逻辑卷(Logical Volume)](#步骤三:按需扩展逻辑卷(Logical Volume))
- [步骤四:在线调整文件系统大小(Resize Filesystem)](#步骤四:在线调整文件系统大小(Resize Filesystem))
- [3. 扩容结果校验与服务恢复](#3. 扩容结果校验与服务恢复)
-
- [3.1 磁盘空间校验](#3.1 磁盘空间校验)
- [3.2 受影响服务重启与状态核查](#3.2 受影响服务重启与状态核查)
- [4. 常见问题与注意事项](#4. 常见问题与注意事项)
1. 扩容背景与现状排查
服务器根分区出现容量告警(空间使用率达到 100%),导致相关数据库及容器服务异常或写入受限。需要通过添加新硬盘并在不停机、不影响数据的前提下对根分区进行在线扩容。
1.1 容量与设备检查
使用 df 及 lsblk 命令确认当前存储使用情况与磁盘设备分布:
| 对比维度 | lsblk (List Block Devices) | df (Disk Free) |
|---|---|---|
| 关注对象 | 硬件与逻辑结构(块设备、分区、LVM 卷) | 已挂载的文件系统(磁盘空间使用率) |
| 视角 | 物理/逻辑设备的"树状结构图" | 挂载点上的"剩余空间统计表" |
| 未挂载设备 | 能识别(即使没有挂载也能列出) | 无法识别(只统计已挂载的分区) |
| 显示指标 | 设备名、容量大小、设备类型(disk/part/lvm)、挂载点 | 总容量、已用空间、可用空间、使用率、挂载点 |


- 磁盘现状:
- 原系统盘
/dev/sda为 80G,根分区/dev/mapper/ubuntu--vg-lv--0仅 76G 且已满(使用率 100%)。 - 新增物理磁盘
**<font style="color:#DF2A3F;">/dev/sdb</font>**(容量 1000G/1TB),目前未格式化且未分配。
1.2 LVM 卷组检查
检查当前卷组(Volume Group)状态:
bash
sudo vgs
- 卷组现状 :卷组名称为
ubuntu-vg,目前仅由 1 个 PV 组成,剩余可分配空间仅约 1GB。

2. 扩容操作步骤
步骤一:创建物理卷(Physical Volume)
将新加入的块设备 /dev/sdb 初始化为 LVM 物理卷:
bash
sudo pvcreate /dev/sdb
- 输出验证 :
Physical volume "/dev/sdb" successfully created.

步骤二:扩展卷组(Volume Group)
将新建的物理卷 /dev/sdb 加入到目标卷组 ubuntu-vg 中:
bash
sudo vgextend ubuntu-vg /dev/sdb
- 输出验证 :
Volume group "ubuntu-vg" successfully extended - 状态核查 :运行
sudo vgs可查看到ubuntu-vg的容量已由 78G 扩充至约 1.05T,未分配空间(VFree)增加约 1000G。


步骤三:按需扩展逻辑卷(Logical Volume)
查看当前的逻辑卷名称:
bash
sudo lvs
- 确认识别 :卷组
ubuntu-vg下的根分区逻辑卷名称为lv-0(对应设备路径/dev/ubuntu-vg/lv-0或/dev/mapper/ubuntu--vg-lv--0)。
针对逻辑卷分配新增空间(例如分配未分配空间的 50%):
bash
sudo lvextend -l +50%FREE /dev/ubuntu-vg/lv-0
- 输出验证 :
Size of logical volume ubuntu-vg/lv-0 changed from 77.00 GiB ... to <577.50 GiB
补充说明 :若需使用剩余的全部空闲空间,可执行
sudo lvextend -l +100%FREE /dev/ubuntu-vg/lv-0。

步骤四:在线调整文件系统大小(Resize Filesystem)
将逻辑卷扩容的空间同步扩展至底层 Ext4 文件系统:
bash
sudo resize2fs /dev/mapper/ubuntu--vg-lv--0
- 输出验证:
Filesystem at /dev/mapper/ubuntu--vg-lv--0 is mounted on /; on-line resizing requiredThe filesystem on /dev/mapper/ubuntu--vg-lv--0 is now 151387136 (4k) blocks long.
3. 扩容结果校验与服务恢复
3.1 磁盘空间校验
再次检查挂载点空间:
bash
df -h
- 结果分析 :根分区
/dev/mapper/ubuntu--vg-lv--0容量已成功由 76G 扩充至 568G,使用率降至 14%,扩容完成。

3.2 受影响服务重启与状态核查
由于磁盘空间曾经耗尽,需对依赖磁盘写入的基础服务(如 PostgreSQL)进行重启与集群在线状态确认:
bash
# 重启 PostgreSQL 服务
sudo systemctl restart postgresql
# 查看 PostgreSQL 服务状态
sudo systemctl status postgresql
# 检查 PostgreSQL 集群运行状态
pg_lsclusters
- 状态确认 :PostgreSQL 12 (main) 状态显示为
online,端口5432正常监听,数据文件目录/opt/postgres/data读写恢复正常。
4. 常见问题与注意事项
- 权限问题:
- 在非 root 权限下运行
vgs或lvs会提示Permission denied或Functionality may be unavailable,所有 LVM 相关指令建议使用sudo或在 root 用户下执行。
- 逻辑卷路径识别错误:
- 默认 Ubuntu 安装程序自动生成的 LV 名称可能为
lv-0而非ubuntu-lv。在执行lvextend前务必先通过sudo lvs确认准确的 LV 名称,避免出现Logical volume ... not found错误。
- 文件系统命令选择:
- 本例中使用
resize2fs适用于 Ext2/Ext3/Ext4 文件系统。 - 若服务器根分区采用的是 XFS 文件系统,则需使用
xfs_growfs <挂载点>命令进行在线扩展(如xfs_growfs /)。