腾讯云 Linux 云硬盘在线扩容实战指南(Ubuntu)
在日常运维中,随着业务数据的增长,服务器系统盘或数据盘空间告急是常见问题。本文记录了在腾讯云控制台完成云硬盘容量升级后,如何在 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%。整个扩容过程无需重启服务器,业务零中断。