返回列表

腾讯云 Linux 云硬盘在线扩容实战指南(Ubuntu)

2026-11-12 Linux 腾讯云 运维

在日常运维中,随着业务数据的增长,服务器系统盘或数据盘空间告急是常见问题。本文记录了在腾讯云控制台完成云硬盘容量升级后,如何在 Ubuntu 系统中进行无损在线扩容分区与文件系统的完整步骤。

参考官方文档:腾讯云 - 扩展分区和文件系统(Linux)

前提条件与环境说明

  • 操作系统:Ubuntu 18.04 LTS (内核版本 4.15.0)
  • 分区格式:MBR (dos)
  • 文件系统:ext4
  • 扩容目标:将系统盘 /dev/vda 从 50 GiB 扩容至 100 GiB
  • 安全建议:在控制台扩容云硬盘前,强烈建议先为云硬盘创建快照以备份数据,防止误操作导致数据丢失。

操作步骤

1. 查看当前磁盘与分区状态

登录服务器后,首先确认当前的磁盘挂载情况、容量使用率以及分区表信息。

查看文件系统使用情况:

df -h

输出示例(已省略无关的临时文件系统与容器挂载点):

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        50G   47G  727M  99% /

可以看到,根分区 /dev/vda1 容量为 50G,使用率已达 99%。

💡 友情提示:如果发现磁盘使用率已经接近或达到 100%,强烈建议在继续后续步骤前,先手动清理掉一些无用的临时文件、旧日志或 Docker 悬空镜像,为系统预留出几十到几百 MB 的可用空间。因为后续步骤需要安装扩容工具,且分区调整过程中系统需要写入临时数据,如果硬盘空间完全耗尽,后续操作大概率会直接报错失败。

查看磁盘总容量与分区表:

fdisk -l

输出示例:

Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x********

Device     Boot Start       End   Sectors Size Id Type
/dev/vda1  *     2048 104857566 104855519  50G 83 Linux

关键信息确认: * 磁盘 /dev/vda 的总大小已经变为 100 GiB(控制台扩容已生效)。 * 分区 /dev/vda1 仍为 50G。 * 分区类型为 dos(即 MBR 分区表)。

确认文件系统类型:

file -s /dev/vda1

输出示例:

/dev/vda1: Linux rev 1.0 ext4 filesystem data, UUID=********-****-****-****-************ (needs journal recovery) (extents) (64bit) (large files) (huge files)

确认文件系统为 ext4(后续需要使用 resize2fs 命令扩展文件系统;如果是 xfs,则需使用 xfs_growfs)。

2. 安装扩容工具

Ubuntu 系统通常需要 cloud-guest-utils(提供 growpart 命令)和 gdisk 工具来在线调整分区大小。

apt-get update
apt-get install -y gdisk cloud-guest-utils

(注:部分云镜像可能已预装 cloud-guest-utils,执行上述命令会自动跳过或更新至最新版本。)

3. 扩展分区(growpart)

使用 growpart 命令将 /dev/vda 的第 1 个分区扩展至磁盘剩余的全部可用空间。

注意:为了避免系统语言环境(Locale)非英文导致 growpart 执行报错,建议在命令前加上 LC_ALL=en_US.UTF-8。注意 /dev/vda 和 1 之间有空格。

sudo LC_ALL=en_US.UTF-8 growpart /dev/vda 1

执行成功会输出类似如下提示:

CHANGED: partition=1 start=2048 old: size=104855519 end=104857567 new: size=209713119,end=209715167

此时再次执行 fdisk -l 验证分区大小,可以看到 /dev/vda1 的容量已经成功变为 100G:

Device     Boot Start       End   Sectors  Size Id Type
/dev/vda1  *     2048 209715166 209713119  100G 83 Linux

4. 扩展文件系统(resize2fs)

分区扩展完成后,操作系统层面的文件系统尚未感知到新增的空间,需要执行以下命令在线扩展 ext4 文件系统:

resize2fs /dev/vda1

输出示例:

resize2fs 1.44.1 (24-Mar-2018)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 7, new_desc_blocks = 13
The filesystem on /dev/vda1 is now 26214139 (4k) blocks long.

5. 最终验证

再次使用 df -h 查看磁盘空间挂载情况:

df -h

输出示例:

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        99G   47G   48G  50% /

可以看到,根目录 / 的总容量已成功更新为 99G,可用空间增加至 48G,使用率降至 50%。整个扩容过程无需重启服务器,业务零中断。