Linux 服务器 LVM 根分区在线动态扩容

文章目录

    • [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 required
  • The 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. 常见问题与注意事项

  1. 权限问题:
  • 在非 root 权限下运行 vgs 或 lvs 会提示 Permission denied 或 Functionality may be unavailable,所有 LVM 相关指令建议使用 sudo 或在 root 用户下执行。
  1. 逻辑卷路径识别错误:
  • 默认 Ubuntu 安装程序自动生成的 LV 名称可能为 lv-0 而非 ubuntu-lv。在执行 lvextend 前务必先通过 sudo lvs 确认准确的 LV 名称,避免出现 Logical volume ... not found 错误。
  1. 文件系统命令选择:
  • 本例中使用 resize2fs 适用于 Ext2/Ext3/Ext4 文件系统。
  • 若服务器根分区采用的是 XFS 文件系统,则需使用 xfs_growfs <挂载点> 命令进行在线扩展(如 xfs_growfs /)。
相关推荐
未济4 天前
linux 配置环境变量
linux
傲世仙尊4 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
虎头金猫4 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
这个DBA有点耶4 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G4 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备4 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远4 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
_艾伦 耶格尔.4 天前
进程间通信
linux
Liuqy-054 天前
Linux IO编程——静态库、动态库
linux
彧azz4 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试