服务器(LVM)存储扩容全流程学习手册

本手册基于 银河麒麟(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 卷组,扩展逻辑卷。

前置准备
  1. 确认新增磁盘 登录服务器,检查新磁盘是否被系统识别(无分区、无挂载)

    复制代码
    # 查看磁盘列表,确认新增磁盘(如 vdb、vdc)
    lsblk
    # 检查磁盘是否有数据/分区(无输出则为干净磁盘)
    fdisk -l /dev/vdb
  2. 备份关键数据 对根目录、数据库目录等核心数据进行备份(如 tar 打包 /etc/var/lib/mysql),避免操作失误导致数据丢失。

  3. 选择操作时机 务必在 业务低峰期 执行(如凌晨),LVM 扩容为在线操作,不影响业务运行,但需避免高负载时操作。

步骤 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)存在未划分的空闲空间,无需新增硬件。

核心步骤
  1. 调整分区表 :使用 fdiskgdisk 删除原有分区,重新创建更大的分区(需注意分区类型为 8e(LVM))。

    复制代码
    # 进入 fdisk 工具
    fdisk /dev/vda
    # 输入 p 查看分区表 → d 删除现有 LVM 分区 → n 创建新分区 → t 修改类型为 8e → w 保存
  2. 扩展物理卷 :更新 PV 大小,使其识别新增的分区空间

    复制代码
    pvresize /dev/vda2
  3. 后续步骤:重复 「场景 1 步骤 2 - 步骤 5」(扩展 VG → 扩展 LV → 扩展文件系统)。

场景 3:云服务器云盘扩容

适用于阿里云、华为云等云平台的云主机,需先在控制台扩容云盘,再在系统内操作。

核心步骤
  1. 云平台控制台扩容:登录云平台 → 找到目标云盘 → 执行「扩容」操作(如将 100G 扩容为 500G)。

  2. 系统内扫描磁盘 :刷新磁盘信息,使系统识别扩容后的容量

    复制代码
    # 重新扫描 SCSI 总线(通用命令)
    echo 1 > /sys/class/block/vda/device/rescan
  3. 后续步骤

    • 若云盘为 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

3. 重要注意事项

  1. 扩容前必备份:无论何种场景,扩容前必须备份核心数据,避免分区表损坏或命令错误导致数据丢失。
  2. 区分文件系统类型 :XFS 和 Ext4 的扩容命令不同,需先用 df -Th 确认类型,避免用错命令。
  3. 避免缩容操作:XFS 文件系统不支持缩容,Ext4 缩容风险极高(易导致数据损坏),生产环境尽量不执行缩容。
  4. 记录操作步骤:扩容过程中记录每一步命令和输出,便于出现问题时回滚排查。

四、扩容后维护建议

  1. 定期检查存储状态 :每周执行 df -hvgdisplay 检查磁盘使用率和 LVM 状态,提前预警空间不足。
  2. 监控告警配置:在 Zabbix、Prometheus 等监控平台配置磁盘使用率告警(如使用率超过 80% 触发告警)。
  3. 文档归档:将本次扩容的步骤、命令、验证结果归档,作为后续扩容的参考模板。
相关推荐
星火开发设计3 小时前
变量与常量:C++ 中 const 关键字的正确使用姿势
开发语言·c++·学习·const·知识
qiuiuiu4134 小时前
正点原子RK3568学习日志21-实验1-字符设备点亮led
linux·学习
世人万千丶4 小时前
鸿蒙跨端框架 Flutter 学习 Day 3:综合实践——多维数据流与实时交互实验室
学习·flutter·华为·交互·harmonyos·鸿蒙
世人万千丶4 小时前
鸿蒙跨端框架 Flutter 学习 Day 3:工程实践——数据模型化:从黑盒 Map 走向强类型 Class
学习·flutter·ui·华为·harmonyos·鸿蒙·鸿蒙系统
Darkershadow4 小时前
蓝牙学习之Provision(7)bind (1)
学习·蓝牙·ble·mesh
2501_945837434 小时前
零信任架构落地,云服务器全生命周期安全防护新体系
服务器
这儿有一堆花4 小时前
服务器安全:防火墙深度配置指南
服务器·安全·php
PNP Robotics4 小时前
PNP机器人分享具身操作策略和数据采集
大数据·人工智能·学习·机器人
xiaoxiaoxiaolll4 小时前
从结构到性能|《Adv. Funct. Mater.》MOF基电催化剂的设计策略与应用前沿
学习
Q16849645154 小时前
红帽Linux-文件权限管理
linux·运维·服务器