本文档是一份面向新手的 Linux 服务器磁盘分区扩容傻瓜式操作指南,每条命令均附带中文解释,按顺序执行即可完成扩容。

⚠️ 操作前必读

  1. 扩容前请备份重要数据,尤其是生产环境,防止操作失误导致数据丢失。
  2. 操作时建议先在测试环境验证完整流程。
  3. 注意区分 ext4​ 和 xfs​ 文件系统,使用对应的扩展命令。
  4. 如果是根分区扩容,确保系统有足够的内存和 swap,避免操作中断。

一、整体流程概览

磁盘扩容一般分为 4 个层级,需要依次完成:

底层磁盘 → 分区 → LVM(PV/VG/LV)→ 文件系统
  • 底层磁盘:在云平台 / 虚拟化平台把磁盘容量调大
  • 分区:让操作系统识别新增的磁盘空间
  • LVM:把新空间分配给逻辑卷(如果是 LVM 方式)
  • 文件系统:让文件系统识别新的容量,空间才真正可用

二、第一步:查看当前磁盘和分区情况

在扩容前,先了解当前系统的磁盘、分区、LVM 和文件系统状态。

lsblk

列出所有块设备及其挂载关系,查看磁盘和分区结构,确认要扩容的磁盘名(如 sda​)和分区号。

df -h

以人类可读格式显示文件系统使用情况,查看挂载点和剩余空间。

df -T

显示文件系统类型,Type 列会显示 ext4​ 或 xfs​ 等,这一步很重要,决定后续用哪个命令扩容文件系统

pvdisplay

显示 Physical Volume(物理卷)的详细信息,包括 PV 名称、大小、所属 VG。如果没有任何输出,说明没有使用 LVM。

vgdisplay

显示 Volume Group(卷组)的详细信息,包括 VG 名称、总大小、剩余 PE 数。记下 VG 名称(如 centos​)。

lvdisplay

显示 Logical Volume(逻辑卷)的详细信息,包括 LV 路径、大小。记下要扩容的 LV 路径(如 /dev/centos/root​)。

三、第二步:扩展底层磁盘(在云平台 / 虚拟化平台操作)

先在 VMware、VirtualBox 或云服务商控制台(阿里云、腾讯云、华为云等)将磁盘容量调大,然后刷新磁盘,让 Linux 系统识别新增空间。

echo 1 > /sys/class/scsi_device/0\:0\:0\:0/device/rescan

向 SCSI 设备发送重新扫描指令,使系统识别新增磁盘空间。注意:路径中的 0\:0\:0\:0​ 需要根据实际情况修改,可通过 ls /sys/class/scsi_device/​ 查看实际编号。

echo 1 > /sys/block/sda/device/rescan

向指定磁盘(sda​)发送重新扫描指令,刷新磁盘容量信息。把 sda​ 替换为实际磁盘名。


四、第三步:创建新分区或扩展现有分区

⚠️ 重要:方式 A 和方式 B 是「二选一」,千万不要两种都执行!

先看你的情况,再选择执行哪种方式:

  • 选方式 A 的场景:你想把新增的磁盘空间创建为一个全新的分区(例如原来只有 sda1、sda2,新增空间后创建为 sda3)。使用 LVM 的系统通常选这种方式。
  • 选方式 B 的场景:你想直接把原有的某个分区扩大(例如直接把 sda1 或 sda3 扩展到磁盘末尾),不新建分区。

👉 不管选了哪种方式,最后都要执行「刷新分区表」那一步。

方式 A:使用 fdisk 新建分区(二选一|把新增空间创建为全新的分区)

fdisk /dev/sda

打开 fdisk 分区工具,对 /dev/sda​ 磁盘进行分区操作。

在 fdisk 交互界面中依次输入以下命令:

命令作用
n新建分区
p选择主分区(primary)
回车使用默认起始扇区
回车使用默认结束扇区(使用全部剩余空间)
t修改分区类型
分区号选择刚创建的分区号
8e设置为 Linux LVM 类型
w保存分区表并退出

方式 B:使用 parted 扩展现有分区(二选一|直接把原有分区扩大)

parted /dev/sda

启动 parted 分区工具,操作 /dev/sda​ 磁盘。

(parted) resizepart 3 100%

将第 3 号分区扩展到磁盘末尾,100%​ 表示使用全部剩余空间。把 3​ 替换为实际分区号。

(parted) quit

退出 parted。

刷新分区表(方式 A 或方式 B 执行完后,都必做这一步)

partprobe /dev/sda

通知内核重新读取 /dev/sda​ 的分区表,使新分区立即生效,无需重启系统。

五、第四步:LVM 扩容(仅 LVM 方式需要)

如果第一步 pvdisplay​ 有输出,说明使用了 LVM,需要执行本步骤。如果没有使用 LVM,请跳到第六步。

⚠️ 本步骤分两条路径,取决于你在第三步选了方式 A 还是方式 B,请「对号入座」只执行对应路径,不要两条都做:

  • 第三步选了方式 A(新建分区) → 执行下面的「路径 A」
  • 第三步选了方式 B(扩展现有分区) → 执行下面的「路径 B」

两条路径最后都要执行「扩展 LV」。

路径 A:第三步选了「方式 A - 新建分区」时执行(下面两条命令都要做)

pvcreate /dev/sda3

/dev/sda3​ 分区初始化为 Physical Volume(物理卷),供 LVM 使用。把 sda3​ 替换为实际分区名。

路径 A 第 2 条:将新 PV 加入到 VG(卷组)

vgextend centos /dev/sda3

将物理卷 /dev/sda3​ 加入到名为 centos​ 的 Volume Group(卷组)中,扩展 VG 容量。把 centos​ 替换为第一步查到的 VG 名称。

(⬆️ 以上是「路径 A」,仅适用于第三步选了方式 A 的情况。如果你选的是方式 B,请跳过路径 A,直接执行下面的路径 B。)

路径 B:第三步选了「方式 B - 扩展现有分区」时执行

pvresize /dev/sda3

通知 PV 重新识别分区大小,扩展 PV 容量。适用于扩展现有分区的场景。

两种路径都要做:扩展 LV(逻辑卷)

lvextend -l +100%FREE /dev/centos/root

将 VG 中 100% 剩余空间分配给 LV。-l​ 表示以 PE 数量为单位,100%FREE​ 表示所有剩余空间。把 /dev/centos/root​ 替换为第一步查到的 LV 路径。

lvextend -L +50G /dev/centos/root

给 LV 增加 50GB 空间。-L​ 表示以具体大小为单位,+​ 表示在原有基础上增加。可按需修改 50G​。

lvextend -L 100G /dev/centos/root

将 LV 扩展到 100GB(绝对大小)。不带 +号表示设置为绝对大小,不是增加。


六、第五步:扩展文件系统

这一步让文件系统识别新的容量,空间才真正可用。请根据第一步 df -T​ 查到的文件系统类型选择对应命令。

ext4 文件系统

resize2fs /dev/centos/root

在线扩展 ext4 文件系统,使其识别 LV 扩容后的新空间。参数为 LV 设备路径。适用于 CentOS 6、Ubuntu 早期版本等。

xfs 文件系统(CentOS 7+ 默认)

xfs_growfs /

在线扩展 xfs 文件系统。参数是挂载点(这里是 /​ 根目录),不是设备路径。适用于 CentOS 7+、RHEL 7+。

七、第六步:验证扩容结果

df -h

查看文件系统容量,确认已成功扩容。对比扩容前后的容量变化。

lsblk

查看块设备树,确认 LV 和文件系统大小已更新。


八、非 LVM 方式扩容(普通分区)

如果第一步 pvdisplay​ 没有输出,说明没有使用 LVM,是普通分区,流程更简单:

parted /dev/sda

启动 parted 分区工具。

(parted) resizepart 1 100%

将第 1 号分区扩展到磁盘末尾。把 1​ 替换为实际分区号。

(parted) quit

退出 parted。

partprobe /dev/sda

通知内核重新读取分区表,使扩容立即生效。

resize2fs /dev/sda1

在线扩展 ext4 文件系统。把 sda1​ 替换为实际分区名。

xfs_growfs /dev/sda1

在线扩展 xfs 文件系统(参数为设备路径或挂载点)。


九、快速一键扩容命令(云服务器推荐)

适用于云服务器(阿里云、腾讯云、华为云等)的标准扩容流程,使用 growpart​ 工具简化操作:

yum install -y cloud-utils-growpart

CentOS/RHEL 系统安装 growpart 工具。如果已安装可跳过。

apt install -y cloud-guest-utils

Ubuntu/Debian 系统安装 growpart 工具。如果已安装可跳过。

growpart /dev/sda 1

growpart 会自动扩展指定分区,无需手动操作 fdisk/parted。/dev/sda 1​ 表示扩展 sda 磁盘的第 1 个分区。

pvresize /dev/sda1

通知 PV 重新识别分区大小,扩展 PV 容量(LVM 方式才需要)。

lvextend -l +100%FREE /dev/mapper/centos-root

将 VG 中所有剩余空间分配给根 LV。把 /dev/mapper/centos-root​ 替换为实际 LV 路径。

xfs_growfs /

在线扩展 xfs 文件系统,使新空间可用。如果是 ext4 文件系统,改用 resize2fs /dev/mapper/centos-root​。

十、常见问题与解决方案

问题解决方案
分区后磁盘未识别执行 partprobe /dev/sda​ 刷新分区表,或重启系统
xfs_growfs​ 报错xfs 只能扩展不能缩小,且挂载点必须存在且已挂载
resize2fs​ 报错ext4 可以在线扩展,但缩小需要先卸载文件系统
swap 分区占用空间先关闭 swap:swapoff -v /dev/centos/swap​,删除该 LV 后再重新创建较小的 swap
根分区无法操作使用 growpart​ 工具:growpart /dev/sda 1​,专门用于扩展根分区
pvdisplay​ 无输出说明没有使用 LVM,走非 LVM 扩容流程(第八步)
vgextend​ 报错找不到 VGvgdisplay​ 确认正确的 VG 名称,区分大小写

十一、命令速查表

命令作用使用场景
lsblk查看块设备树查看磁盘和分区结构
df -h查看文件系统使用情况查看挂载点和剩余空间
df -T查看文件系统类型确定用 resize2fs 还是 xfs_growfs
pvdisplay查看物理卷确认是否使用 LVM
vgdisplay查看卷组获取 VG 名称
lvdisplay查看逻辑卷获取 LV 路径
pvcreate创建物理卷新分区初始化为 PV
pvresize扩展物理卷扩展现有分区场景
vgextend扩展卷组将 PV 加入 VG
lvextend扩展逻辑卷给 LV 分配更多空间
resize2fs扩展 ext4 文件系统ext4 文件系统扩容
xfs_growfs扩展 xfs 文件系统xfs 文件系统扩容
partprobe刷新分区表分区操作后生效
growpart自动扩展分区云服务器根分区扩容

十二、安全建议

  1. 扩容前备份重要数据,尤其是生产环境,防止操作失误导致数据丢失。
  2. 操作时建议先在测试环境验证完整流程,确认无误后再在生产环境执行。
  3. 注意区分 ext4​ 和 xfs​ 文件系统,使用对应的扩展命令(resize2fs​ vs xfs_growfs​)。
  4. 如果是根分区扩容,确保系统有足够的内存和 swap,避免操作过程中断。
  5. 操作前建议执行 sync​ 命令,将内存中的数据写入磁盘。
  6. xfs 文件系统只能扩展不能缩小,操作时务必注意。

#运维 #Linux #磁盘扩容 #LVM