售前咨询400-838-0503

磁盘扩容后容量不变怎么办?

发布:2026-10-28 14:37

搜索全部帮助分类的文档

服务器磁盘从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。

使用lsblk和df检查Linux磁盘扩容后的分区与文件系统容量

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 无法越过它使用磁盘末尾的空间。不要直接删除中间分区,应先制定迁移或调整方案。

使用growpart扩展Linux磁盘分区并检查分区大小

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 显示的容量可能存在一定差异,原因包括单位换算、分区布局及文件系统开销。应重点确认新增空间是否进入目标文件系统,以及剩余可用空间是否符合预期。

如果系统容量已更新,而管理面板仍显示旧值,可以刷新统计或等待采集更新,无需重复执行扩容命令。

使用resize2fs扩展ext4文件系统并通过df验证容量

常见问题

1. 重启服务器能自动完成扩容吗?

部分云镜像配置了自动扩容功能,但是否执行取决于镜像和相关配置。重启后仍需检查磁盘、分区和文件系统,不能只凭重启判断扩容完成。

2. growpart 提示 NOCHANGE 怎么办?

先检查目标分区是否已经占满可用空间、后方是否存在其他分区,以及系统是否识别了新磁盘容量。NOCHANGE 不代表一定需要强制操作。

3. 是否需要格式化磁盘?

对现有文件系统进行扩容,通常不需要格式化。不要执行 mkfs 来处理容量未更新的问题,否则可能破坏原有数据。

4. 扩容工具提示文件系统错误怎么办?

暂停后续操作,保留完整报错,并安排文件系统检查。不要在已挂载的业务文件系统上直接执行离线修复命令,也不要通过强制参数跳过异常。

注意事项

扩容前应完成备份并核对设备名称、分区编号和挂载点。本文仅介绍扩容,不适用于缩容。

出现只读文件系统、I/O错误、分区表异常或无法识别的存储结构时,应先处理异常,再继续扩容。

如果仍无法确定下一步,可向莱卡云提交工单,提供扩容前后容量、目标磁盘、lsblk、df -hT 和相关报错;使用LVM时补充 pvs、vgs、lvs 结果,便于协助核查。

按文档操作后还是不行,把机器编号、出问题的时间点和现象截图一起提工单,能少来回一轮。

提交工单