服务器磁盘从40G扩容到80G后,执行 df -h 仍然显示原来的容量,常见原因是系统中的分区或文件系统尚未扩展。
完成扩容通常需要依次确认:系统识别新磁盘容量、分区或逻辑卷扩展、文件系统扩展。
操作前请完成重要数据备份,并确认恢复方式。以下设备名和容量均为示例,必须根据实际检查结果替换。
1. 确认容量停留在哪一层
登录服务器,查看磁盘结构:
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
查看根目录对应的设备和文件系统:
findmnt -no SOURCE,FSTYPE /
查看根文件系统容量:
df -hT /
如果扩容的是数据盘,请将 / 替换为实际挂载目录,例如 /data。
根据结果判断:
| 检查结果 | 说明 | 后续处理 |
|---|---|---|
| 整块磁盘仍显示原容量 | 系统尚未识别新增空间 | 先检查扩容状态和设备识别 |
| 磁盘变大,分区未变 | 新增空间尚未分配给分区 | 扩展目标分区 |
分区变大,df容量未变 |
文件系统尚未扩展 | 使用对应文件系统工具扩容 |
结构中出现lvm |
使用了LVM逻辑卷 | 按第5节检查 |
| 只有面板显示旧容量 | 可能是统计未刷新 | 以系统检查结果进一步核对 |
例如,vda 显示80G,下面的 vda1 仍显示40G,说明系统已经识别磁盘扩容,但分区还没有使用新增空间。
如果系统较旧,不支持 MOUNTPOINTS 字段,可以改用 MOUNTPOINT。

2. 磁盘仍显示旧容量时,先检查扩容状态
如果 lsblk 中整块磁盘的容量没有变化,应先确认:
-
扩容操作是否已经完成。
-
扩容的是当前检查的磁盘,还是另一块数据盘。
-
当前磁盘类型是否需要重新扫描或重启后识别。
-
是否误把新增数据盘当成了原磁盘扩容。
此时不应直接反复执行分区或文件系统扩容命令,因为系统尚未看到可以使用的新空间。
不同磁盘总线的重新扫描方式不同,不要直接套用其他设备的扫描路径。需要重启时,应先安排业务维护;如果不确定识别方式,可以联系莱卡云协助核实。
3. 扩展普通磁盘分区
本节以 非LVM、分区上直接使用ext4或XFS 的情况为例。使用LVM时,请按第5节处理。
假设已经确认:
-
磁盘为
/dev/vda,容量已增加。 -
目标分区为
/dev/vda1。 -
分区后方存在可供扩展的连续空闲空间。
先预览分区调整:
sudo growpart -N /dev/vda 1
-N 表示预览,不写入分区表。确认目标分区及调整范围正确后,再执行:
sudo growpart /dev/vda 1
注意,growpart 的参数是整块磁盘设备名和分区编号,两者之间有空格。
不同设备的对应关系如下:
| 目标分区 | 扩展命令 |
|---|---|
/dev/vda1 |
sudo growpart /dev/vda 1 |
/dev/sda2 |
sudo growpart /dev/sda 2 |
/dev/nvme0n1p1 |
sudo growpart /dev/nvme0n1 1 |
这些命令是不同设备的示例,只执行与实际情况相符的一条。
如果提示找不到 growpart,Ubuntu通常可以安装对应工具:
sudo apt update
sudo apt install cloud-guest-utils
扩展后再次检查:
lsblk -o NAME,SIZE,TYPE /dev/vda
确认分区容量已经变大,再进行下一步。如果提示内核无法更新分区信息,应停止后续操作,在维护窗口重新识别设备或重启,并再次核对。
如果目标分区后方紧接着其他分区,growpart 无法越过它使用磁盘末尾的空间。不要直接删除中间分区,应先制定迁移或调整方案。

4. 根据文件系统类型扩容
分区变大后,df -h 仍可能显示旧容量,因为文件系统还没有扩展。
先确认类型:
findmnt -no SOURCE,FSTYPE /
如果是ext4:
假设根文件系统直接位于 /dev/vda1:
sudo resize2fs /dev/vda1
未指定目标大小时,resize2fs 默认使用底层设备可提供的容量。它不会自动扩大磁盘分区,因此需要先完成分区扩展。
如果是XFS:
根目录挂载点为 / 时执行:
sudo xfs_growfs -d /
如果扩容的是挂载在 /data 的XFS数据盘:
sudo xfs_growfs -d /data
XFS扩容时文件系统需要处于挂载状态。这里使用的是实际挂载点,不是随意填写的目录。
两类命令应按实际文件系统选择,不能全部执行。
如果文件系统直接建立在整块磁盘上,没有分区层,则不需要执行 growpart。确认结构后,直接针对相应设备或挂载点扩展文件系统。
5. 使用LVM时,逐层扩展
如果 lsblk 中出现 LVM2_member 或 lvm,需要继续检查物理卷、卷组和逻辑卷:
sudo pvs
sudo vgs
sudo lvs -o lv_path,lv_size,vg_name,segtype
下面是一个独立的LVM示例:
-
物理卷位于
/dev/vda3。 -
根逻辑卷为
/dev/vg0/root。 -
使用普通线性逻辑卷,文件系统为ext4或XFS。
如果物理卷所在分区还没有扩大,应先核对分区后方空间,然后预览并扩展:
sudo growpart -N /dev/vda 3
sudo growpart /dev/vda 3
以上两条应逐条执行,检查预览结果后再执行第二条。
确认系统已经识别扩大的分区后,更新物理卷容量:
sudo pvresize /dev/vda3
再检查卷组空闲空间:
sudo vgs
如果卷组至少有20G可用空间,并且计划给根逻辑卷增加20G,可执行:
sudo lvextend -r -L +20G /dev/vg0/root
其中:
-
+20G表示在原容量上增加20G。 -
-r表示同时尝试扩展文件系统。 -
/dev/vg0/root必须替换为实际目标逻辑卷路径。
如果卷组本来就有足够空闲空间,可以直接从扩展逻辑卷开始。
如果命令显示逻辑卷已经扩大,但文件系统调整失败,应重新检查两层容量,再处理文件系统问题,不要重复执行 +20G 命令。
本例不适用于精简池、LVM RAID、加密设备等复杂结构。也不要对 LVM2_member 分区直接执行 resize2fs,文件系统通常位于其上层逻辑卷中。
6. 验证扩容结果
完成后检查:
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
df -hT /
findmnt -no SOURCE,FSTYPE /
数据盘请替换为对应挂载点。使用LVM的服务器还应检查:
sudo pvs
sudo vgs
sudo lvs
确认目标文件系统容量增加,同时检查网站、数据库等业务是否正常。
磁盘标称容量与 df 显示的容量可能存在一定差异,原因包括单位换算、分区布局及文件系统开销。应重点确认新增空间是否进入目标文件系统,以及剩余可用空间是否符合预期。
如果系统容量已更新,而管理面板仍显示旧值,可以刷新统计或等待采集更新,无需重复执行扩容命令。

常见问题
1. 重启服务器能自动完成扩容吗?
部分云镜像配置了自动扩容功能,但是否执行取决于镜像和相关配置。重启后仍需检查磁盘、分区和文件系统,不能只凭重启判断扩容完成。
2. growpart 提示 NOCHANGE 怎么办?
先检查目标分区是否已经占满可用空间、后方是否存在其他分区,以及系统是否识别了新磁盘容量。NOCHANGE 不代表一定需要强制操作。
3. 是否需要格式化磁盘?
对现有文件系统进行扩容,通常不需要格式化。不要执行 mkfs 来处理容量未更新的问题,否则可能破坏原有数据。
4. 扩容工具提示文件系统错误怎么办?
暂停后续操作,保留完整报错,并安排文件系统检查。不要在已挂载的业务文件系统上直接执行离线修复命令,也不要通过强制参数跳过异常。
注意事项
扩容前应完成备份并核对设备名称、分区编号和挂载点。本文仅介绍扩容,不适用于缩容。
出现只读文件系统、I/O错误、分区表异常或无法识别的存储结构时,应先处理异常,再继续扩容。
如果仍无法确定下一步,可向莱卡云提交工单,提供扩容前后容量、目标磁盘、lsblk、df -hT 和相关报错;使用LVM时补充 pvs、vgs、lvs 结果,便于协助核查。