GCP海外版 谷歌云如何增加磁盘容量

谷歌云GCP / 2026-04-17 20:03:22

你有没有过这种体验?凌晨两点,盯着监控告警疯狂刷新——磁盘使用率98%,日志写不进去了,数据库开始报错,而你的GCP虚拟机里,那块20GB的启动盘,正用它单薄的身躯,扛着一个本该跑在100GB硬盘上的Spring Boot全家桶。

别慌。这不是世界末日,只是你和谷歌云之间,少了一次心平气和的「扩容对话」。

先划重点:扩容 ≠ 拉伸一张贴纸

很多人以为在GCP控制台点几下“增大磁盘”,重启一下VM,空间就自动长出来了——结果重启完df -h一看,还是老样子。不是谷歌云耍流氓,是你漏掉了最关键的两步:底层块设备扩容 + 文件系统重挂载。这就像给汽车换了个更大的油箱,但忘了把输油管接上,油还在那儿,车就是不走。

第一步:确认磁盘类型和挂载方式

打开你的GCP控制台 → Compute Engine → VM实例 → 点击目标实例 → 滚到「磁盘」区域。注意两个关键信息:

  • 磁盘类型:是 pd-standard(机械盘)还是 pd-balanced/pd-ssd(SSD)?扩容都支持,但SSD性能更好,价格稍高;
  • 是否为启动盘:启动盘扩容要额外小心——不能在线扩容(必须关机),且不能缩小(GCP政策铁律)。

顺手在VM里执行:
lsblk —— 看清哪个是根分区(通常是sda1nvm0n1p1);
df -Th —— 记下当前文件系统类型(大概率是ext4,也可能是xfs);
sudo fdisk -l /dev/sda —— 查看分区表结构(MBR or GPT?这点后面扩容分区时会救命)。

第二步:关机,扩容磁盘(控制台 or CLI)

⚠️重要提醒:启动盘扩容必须关机! 数据盘可在线扩容(但建议仍停机操作,更稳妥)。

控制台操作路径
Compute Engine → 磁盘 → 找到对应磁盘 → 点「编辑」→ 修改「大小」→ 保存 → 等待状态变「正在使用」→ 再启动VM。

命令行党请掏出终端(需提前配置gcloud并授权):
gcloud compute disks resize my-disk-name --size=50GB --zone=us-central1-a
执行后你会看到类似:Updating disk [my-disk-name]...done. —— 别急着欢呼,这只是让磁盘「物理变大」了,Linux还蒙在鼓里。

第三步:让Linux看见新空间(核心!)

启动VM后,SSH进去,先执行:
sudo lsblk

对比扩容前后输出:

# 扩容前
sda      8:0    0   20G  0 disk
└─sda1   8:1    0   20G  0 part /

# 扩容后(注意!sda显示50G,但sda1还是20G)
sda      8:0    0   50G  0 disk
└─sda1   8:1    0   20G  0 part /

看到了吗?sda已变成50G,但sda1这个分区还卡在20G。这就叫「磁盘扩容完成,分区尚未跟上」。

GCP海外版 第四步:扩展分区(根据磁盘类型二选一)

情况A:MBR分区表(老式磁盘,fdisk可用)
执行:
sudo fdisk /dev/sda
输入:
d(删除分区)→ n(新建主分区)→ 回车三次(默认起始扇区+全部剩余空间)→ w(写入)

⚠️注意:删除分区不会删数据!fdisk只改分区表,只要你不格式化,数据纹丝不动。但——务必确认只删sda1,别手抖删了sda2(swap)

情况B:GPT分区表(较新实例,默认GPT,fdisk不友好)
parted更稳:
sudo parted /dev/sda
输入:
print(查看分区编号)→ resizepart 1 100%(把第1个分区拉满)→ quit

执行完后,再跑一遍lsblk,你会发现sda1已经涨到50G了。

第五步:扩展文件系统(最后临门一脚)

分区扩完了,但文件系统还不知道「地盘变大了」。这里分两种主流情况:

如果是ext4(最常见):
sudo resize2fs /dev/sda1
(无需卸载,热扩容!输出类似:Resizing the filesystem on /dev/sda1 to 13107200 (4k) blocks.

如果是xfs(常用于高性能场景):
sudo xfs_growfs /
(注意:xfs_growfs作用于挂载点/,不是设备名!且必须已挂载)

完成后,再敲一遍df -h——恭喜,那个久违的「Available」数字,终于从1.2G跳到了30.5G。

Bonus:数据盘扩容(可在线!)

假设你挂了另一块/dev/sdb作为数据盘:

  1. 控制台或gcloud扩容磁盘(无需关机);
  2. 执行sudo growpart /dev/sdb 1(自动扩展sdb1分区);
  3. 再执行sudo resize2fs /dev/sdb1sudo xfs_growfs /mnt/data(根据挂载点)。

真实踩坑现场回放(血泪总结)

  • 坑1:扩容后df没变化? → 忘了resize2fs/xfs_growfs;
  • 坑2:resize2fs报错「The filesystem is already mounted」? → 别慌,ext4支持热扩容,这个提示是告诉你「正在挂载中,我这就扩」,不是报错;
  • 坑3:parted resizepart报错「Error: Partition(s) 1 on /dev/sda have been written, but we have been unable to inform the kernel…」? → 执行sudo partprobe刷新内核分区表,再试;
  • 坑4:扩容后启动失败? → 大概率MBR误删了bootloader分区(/dev/sda未分配的前512字节)。此时需用GCP串口日志定位,或从另一个实例挂载修复。

终极建议:养成三个好习惯

  1. 扩容前快照:哪怕只是点一下「创建快照」,30秒的事,能救你两小时;
  2. 监控磁盘趋势:用Cloud Monitoring配个「磁盘使用率 > 85%」告警,别等爆了才想起扩容;
  3. 初始化即留余量:新实例别抠门选20GB启动盘,直接32GB起步,省去未来半夜爬起来折腾的力气。

最后说句掏心窝的:云计算的魅力,从来不是「永不宕机」,而是「出了问题,你还有至少三种方式把它修好」。扩容这事,第一次像拆弹,第二次像煮面,第三次——你甚至能边听播客边敲完所有命令。

现在,去你的GCP控制台,找那块可怜的磁盘,给它一次长大成人的机会吧。

下载.png
Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系