磁盘快满、又不想停机,就是云磁盘热扩容的用武之地:控制台把盘调大,系统里再把分区和文件系统跟着拉长,全程服务不中断。这篇以 50GB 扩到 100GB 为例走一遍完整流程。整个操作分两半:平台侧只负责把盘变大,系统内的三步——确认、分区拉长、文件系统扩展——才是决定扩容成败的部分。

实测说明:文中流程已在 Rocky Linux 9.3 容器用环回设备完整复现(50M 盘扩到 100M,growpart、resize2fs 输出均为实测),命令与真实云盘一致。环回实验需要 --privileged 容器:losetup、mount 都要特权位。

什么是热扩容,什么场景用

热扩容指在不关闭系统、不终止服务的情况下动态增加存储容量。云环境里尤其常用——服务要保高可用,不能为了加块盘停一次机。典型场景:数据快速增长的业务平台、不允许停机的数据库、需要动态扩容的大数据分析、以及容器宿主机。共同点是”存储跟着业务长,服务不能停”。

前提条件:root 或 sudo 权限;文件系统支持在线扩展(ext4、xfs 都支持);系统里有 growpart(cloud-utils-growpart 包,没有先 yum install cloud-utils-growpart)。

步骤 1:在云平台增加磁盘容量

  1. 登录云平台管理控制台;
  2. 进入”存储”或”磁盘”管理页面;
  3. 选中要扩容的磁盘并修改容量,例如从 50GB 加到 100GB;
  4. 提交操作,等平台完成扩容。

步骤 2:确认新的磁盘空间

回到 Linux 系统里用 lsblk 确认:

1
lsblk

预期 sda 显示为 100G——盘大了但分区还是 98G,说明平台侧扩容已到位,接下来把分区拉长。

步骤 3:扩展分区

用 growpart 把分区拉到整盘可用空间:

1
sudo growpart /dev/sda 2

输出 CHANGED: partition=2 ... 即成功。再执行一次 lsblk,确认 sda2 的大小已经更新到 98G 附近。

步骤 4:扩展文件系统

分区变大不等于文件系统变大,最后一步按文件系统类型选命令。

ext4:

1
sudo resize2fs /dev/sda2

xfs(注意 xfs_growfs 的参数是挂载点,不是设备):

1
sudo xfs_growfs /

用 df -h 确认结果,Avail 一列涨上去,扩容就完成了。

实测:环回设备模拟全流程

用 50M 的环回设备把上面四步完整走了一遍(磁盘镜像文件代替云盘,其余命令不变):

1
2
3
4
truncate -s 50M /tmp/disk.img
losetup -f --show /tmp/disk.img # 得到 /dev/loopN
echo "start=2048, type=83" | sfdisk /dev/loopN
mkfs.ext4 /dev/loopNp1 && mount /dev/loopNp1 /mnt/demo

配图1

然后按流程扩容:truncate -s 100M 放大镜像、losetup -c 同步环回设备、growpart 拉长分区——lsblk 里盘和分区先后从 50M 变 100M/99M:

配图2

最后 resize2fs 扩文件系统,df 前后对照验收:

配图3

扩容前后 df -h 的对比是最直接的验收:Avail 从 38M 涨到 83M,文件系统真的变大了。真实的 50GB→100GB 云盘扩容,看到的数字等比例放大。

错误写法对比:止步于 growpart

最常见的半途而废是做完 growpart 就收工——分区确实变大了(lsblk 看得到),但文件系统没跟上,df -h 里 Avail 纹丝不动,告警照样响。记住验收标准只有一个:df -h 的容量涨上去。另一个易错点是给 xfs 用 resize2fs,它只认 ext 系文件系统,对 xfs 无效且报错;xfs 的入口是 xfs_growfs 挂载点。

注意事项

  • 动磁盘前先备份重要数据——热扩容一般不影响数据,但保险起见。
  • 确认文件系统(ext4、xfs)支持在线扩展,个别老文件系统仍需离线操作。
  • 各云平台对磁盘扩容的限制和入口不一样,有的需要先卸载磁盘,先查自家平台的文档。
  • 注意每次扩容的最小值和最大值限制,部分平台对扩容频次也有约束。
  • growpart、resize2fs 等工具的版本要能支持你的操作系统和文件系统。

小结

回到开头的场景:盘满了不停机,靠的就是”平台扩盘、系统跟扩”这套组合拳。lsblk 确认盘到位,growpart 拉分区,resize2fs 或 xfs_growfs 扩文件系统,最后 df -h 验收——四步走完,容量落袋。


本文由作者 2020-2024 年间的 CSDN 博客文章重构而来,原发布于 CSDN。