滚动新闻 →
【学英语】最后一个学期结束了,我却不知道下一步该往哪里走 PHP 网站如何防范 XSS?从输出过滤理解跨站脚本攻击 苏轼笔下的赤壁为什么成为文学经典 被控替中共搜集情报 光明日报记者布拉格受审 加国华裔侨领将被遣返 专家:中共渗透再敲警钟 雄鹿队老板遭勒索案 华裔女认罪 或涉中共渗透 胡塞企图秘制导弹? 多个货柜藏大量零组件 中共严查社保欠费 专家指背后收支缺口巨大 美9月PPI创四年半最大增幅 通胀持续升温 存在严重潜逃风险 张婉莹保释申请再被驳回 山药在中国传统饮食文化中的传统用途 一幅书法作品的布局应该怎么看 许皓鋐、赖均辅会师玄乐杯决赛 争百万冠军奖金 “看短剑降智”登顶热搜 网民叹“电子鸦片” 如何教育孩子不要成为校园欺凌的旁观者 码率对视频画质有什么影响 隋朝灭亡究竟是因为大运河还是战争 黑海商船频遭袭 俄超级无人机基地曝光 黄奇帆落马 重庆书记袁家军被指不妙 人权专家:中共实施跨国镇压 是全球头号威胁 OpenAI财务长:使用中国AI模型 恐面临安全风险 特斯拉新跑车将亮相 百公里加速不到一秒 力抗中企长鑫存储 全球芯片大厂结盟 国外车评人评中国电动汽车:缺乏个性 互相抄袭 巴基斯坦校舍坍塌致35死 暴露廉价私校隐患 10月15日维权动态 因言获罪 湖北维权人士周远志贫病中离世 深圳APEC力邀 美企高层反应冷淡 台湾买美国天然气 增大中共封锁台海代价 美财长要求改革世银 停止向中国贷款 延宕12年终通车 中朝大桥背后的三角博弈 超市遭网攻冰箱变烤箱 黑客离你有多远? 美检新增酷刑罪指控 马杜罗夫妇将在纽约应讯 美军拟用“炸弹之母”轰炸伊朗 川普:泄密者应枪决 工卡自动延期取消 最终规则生效 大闸蟹价格大跌 养殖户:今年最难熬 中国免疫系统疾病和心脑血管疾病病例暴增 浙江2医院员工赴泰旅游溺亡 官方称意外引质疑 魔幻! 深圳“花呗”也能缴社保 湖北还推出社保贷 卫生间小空间如何避免产生拥挤感 酱油为什么几乎影响了整个东亚饮食

Google Cloud 磁盘扩容后系统看不到空间怎么办,Linux 文件系统还需要哪些操作

发布时间: 2026-09-25 07:00:02    最后更新: 2026-10-14 17:56:26    阅读:66  约12 分钟阅读     

Google Cloud 磁盘扩容后系统看不到空间怎么办,Linux 文件系统还需要哪些操作
图片说明:示意图   图片来源:Public Domain(公有领域)
在Google Cloud Compute Engine中,Persistent Disk扩容本身并不等于Linux文件系统已经获得了新增容量。Google Cloud可以在线增加Persistent Disk的容量,但操作系统内部仍然存在块设备、分区、LVM以及文件系统几个不同层次。扩容以后究竟还需要执行什么命令,取决于你的磁盘到底采用了哪一种布局。

因此,遇到“Google Cloud控制台已经从100GB改成200GB,但Linux里的df -h还是100GB”时,不应该直接重复执行某个扩容命令,而应该先确定容量到底停在哪一层。

最简单的判断方法是同时查看lsblk、df -hT和findmnt:

lsblk
df -hT
findmnt

如果需要进一步确认磁盘和分区表:

sudo fdisk -l
sudo parted -l

这里要区分三个完全不同的数字。lsblk主要反映块设备和分区大小,df反映文件系统已经可以使用的容量,而findmnt告诉你哪个文件系统挂载到了哪个目录。如果Google Cloud控制台已经显示200GB,lsblk里的磁盘也已经变成200GB,但分区仍然只有100GB,那么问题在分区层;如果分区已经200GB而df仍然只有100GB,问题就进入文件系统层。如果中间还有LVM,那么还要再经过PV、VG和LV三个层次。

这也是Google Cloud磁盘扩容最容易被误解的地方:扩容操作增加的是Persistent Disk本身的容量,不会在所有Linux磁盘布局中自动把每一层都扩大。Google官方文档明确说明,非启动Persistent Disk在扩容以后通常还需要在操作系统内部扩展文件系统;某些启动盘则可以由Compute Engine和镜像提供的自动扩容机制完成。

设备名称也不能写死成/dev/sda。传统SCSI设备可能显示为/dev/sda、/dev/sda1,而采用NVMe接口时可能看到/dev/nvme0n1、/dev/nvme0n1p1。Google官方示例也特别区分了这两种命名方式。

假设执行:

lsblk

看到类似:

NAME SIZE TYPE MOUNTPOINT
nvme0n1 200G disk
└─nvme0n1p1 100G part /

这说明Google Cloud层面的磁盘已经扩容到200GB,但分区仍然只有100GB。此时直接执行df -h当然不会看到新增的100GB,因为文件系统实际上仍然位于100GB的分区里面。

这种情况下可以使用growpart扩展分区。例如:

sudo growpart /dev/nvme0n1 1

对于SCSI设备则可能是:

sudo growpart /dev/sda 1

growpart的作用是扩展已有分区,而不是扩展文件系统。执行之后再次查看:

lsblk

如果分区已经从100GB扩大到200GB,下一步才是文件系统扩展。

也可以直接使用parted完成分区调整,例如:

sudo parted /dev/nvme0n1

然后在交互环境中使用:

resizepart 1 100%

这里不应该把“GPT”写成resizepart的必要条件。GPT和MBR是分区表类型,parted是否能够调整分区取决于具体磁盘布局、分区位置和工具支持,而不是简单地说“必须是GPT”。Google Cloud的公开镜像目前通常使用GPT,而从其他环境导入的MBR磁盘还存在2TB限制,因此判断分区表类型仍然很有必要。

如果分区已经扩大,而df -hT仍然没有变化,就进入文件系统层。

对于ext4,常用命令是:

sudo resize2fs /dev/nvme0n1p1

对于XFS,则应该针对挂载点执行:

sudo xfs_growfs /

如果数据盘挂载在/mnt/data:

sudo xfs_growfs /mnt/data

Google Cloud官方文档目前同样采用这种区分:ext4使用resize2fs,XFS使用xfs_growfs,btrfs则使用相应的btrfs filesystem resize命令。

这里还有一个经常被写错的细节:不能简单说“ext4必须挂载以后才能resize2fs”。ext4支持在线扩容,在已挂载的文件系统上可以扩大;离线情况下也可以进行相应操作。XFS则不能缩小,在线扩容是其常见工作方式。工程上真正应该关注的是文件系统类型、当前状态以及扩容目标,而不是背一个“必须挂载”或“必须卸载”的固定规则。

如果磁盘使用LVM,处理路径又完全不同。比如:

/dev/nvme0n1
└─/dev/nvme0n1p1
└─PV
└─VG
└─LV
└─ext4/XFS

这时候不能看到磁盘变大以后直接执行resize2fs /dev/nvme0n1p1。因为文件系统可能根本不直接位于这个分区上,而是位于Logical Volume。

典型流程首先确认:

lsblk
sudo pvs
sudo vgs
sudo lvs
df -hT

如果分区需要扩大,可以先:

sudo growpart /dev/nvme0n1 1

然后让LVM看到新增空间:

sudo pvresize /dev/nvme0n1p1

再扩展逻辑卷:

sudo lvextend -l +100%FREE /dev/mapper/vg0-lv0

最后扩展文件系统。如果是ext4,可以使用:

sudo resize2fs /dev/mapper/vg0-lv0

如果是XFS,则针对挂载点:

sudo xfs_growfs /

实际设备名称当然必须根据pvs、vgs、lvs的输出确定,不能照抄示例路径。

还有一种情况反而更简单:Google Cloud的非启动数据盘可能没有分区表,而是直接在整个块设备上创建文件系统。Google官方文档甚至建议,在不需要多个独立卷的情况下,可以使用单个文件系统、不创建分区表的Persistent Disk,这样扩容路径更简单。

例如:

/dev/nvme0n2
└─XFS
└─/mnt/data

此时Google Cloud把磁盘从100GB扩展到200GB后,Linux看到的块设备可能已经是200GB,但文件系统仍然是100GB。因为没有中间的分区层,所以可以直接扩展文件系统:

sudo xfs_growfs /mnt/data

或者ext4:

sudo resize2fs /dev/nvme0n2

这也是为什么处理GCE磁盘时,第一步不是“执行growpart”,而是先看lsblk。有没有分区、有没有LVM,决定了后面的命令。

df -h与lsblk必须结合起来看。比如:

lsblk
nvme0n1 200G
└─nvme0n1p1 200G /

但:

df -h
/dev/nvme0n1p1 100G

这说明块设备和分区已经完成扩容,文件系统没有扩容。

反过来,如果:

lsblk
nvme0n1 200G
└─nvme0n1p1 100G

那么根本还没有走到文件系统阶段,继续执行resize2fs不会解决分区只有100GB的问题。

如果使用了LVM,则应该进一步比较:

sudo pvs
sudo vgs
sudo lvs
df -hT

这几个命令能够把容量究竟卡在PV、VG、LV还是文件系统层面显示出来。

另一个容易误导管理员的建议是“扩容以后重启”。对于GCE Persistent Disk,扩容通常可以在线进行,并不意味着必须重启VM。Google官方文档明确说明Persistent Disk可以在实例运行时增加容量;对于使用公开镜像的启动盘,很多情况下分区和文件系统也会自动扩展。

如果系统没有识别新的块设备容量,可以先检查:

lsblk
sudo dmesg | tail -100

以及重新读取分区表:

sudo partprobe

或者:

sudo partx -u /dev/nvme0n1

但如果lsblk已经显示新的磁盘容量,就没有必要为了“让系统识别”而盲目重启。此时问题通常已经从块设备层进入分区、LVM或文件系统层。

/etc/fstab也经常被错误地列为“扩容必须修改的地方”。实际上,如果只是扩大原有分区或原有文件系统,通常不需要因为容量变化而修改fstab。fstab主要解决的是系统启动时如何识别和挂载文件系统的问题。如果设备UUID、挂载点和文件系统没有变化,仅仅是容量从100GB变成200GB,原来的挂载配置通常仍然有效。真正需要检查fstab的场景,是出现挂载失败、设备路径变化、UUID错误或者新增加了需要持久化挂载的文件系统。

生产环境执行扩容操作之前,Google也建议先创建磁盘Snapshot。尤其是即将修改分区表或文件系统结构时,备份的价值远远高于节省几分钟操作时间。Google官方的磁盘扩容故障排查文档明确把创建Snapshot列为执行文件系统故障排查前的重要步骤。

另外,不要把“磁盘扩容”与“磁盘性能提升”完全混为一谈。Google Cloud Persistent Disk的性能与配置容量存在关联,某些磁盘类型随着容量增加可以获得更高的性能上限,但这并不意味着所有业务瓶颈都能通过扩大容量解决。数据库遇到IOPS、吞吐、队列深度或者VM侧限制时,需要分别分析磁盘类型、实例限制和实际I/O模式。Google目前也明确建议根据工作负载选择不同Persistent Disk类型。

还有一个工程上很重要的判断:如果扩容以后lsblk、df -hT全部已经显示正确,但应用仍然报告“磁盘空间不足”,就不要继续折腾分区。此时应该检查inode:

df -i

因为文件系统可能还有大量物理空间,却已经耗尽inode。日志目录存在大量小文件时,这种情况尤其常见。

还可以检查删除但仍被进程打开的文件:

sudo lsof +L1

如果某个服务删除了几十GB日志,但进程仍然保持文件描述符打开,那么df显示的已使用空间可能不会立即下降。这个问题与Google Cloud磁盘扩容没有直接关系,却经常在“我已经扩容了,为什么空间还是满的”这类故障中混在一起。

最终诊断可以按照一条非常稳定的路径进行:先确认Google Cloud控制台中的Persistent Disk容量,再用lsblk确认Linux看到的块设备容量,然后判断是否存在分区;如果存在分区,再确认分区是否已经扩大;如果使用LVM,则继续检查PV、VG和LV;最后根据ext4、XFS或btrfs选择对应的文件系统扩容工具;完成以后用df -hT、df -i以及应用实际写入测试进行验证。

Google Cloud磁盘扩容并不是一个“执行一条命令就结束”的操作。它实际上涉及云平台块设备、Linux分区表、LVM和文件系统四个不同层次。专业运维人员处理这类问题时,最有效的方法不是记住某个固定命令,而是先确定新增容量究竟停在哪一层,再只修改这一层。只要把lsblk、df -hT、pvs/vgs/lvs和文件系统工具串起来,绝大多数“磁盘已经扩容但Linux看不到空间”的问题都可以迅速定位。

喜欢这篇报道?

使用下面的功能,方便以后继续阅读和分享 MNewsTV

设为 Google 新闻首选来源 让 Google 新闻优先显示 MNewsTV 的最新报道 ›
★ 我的收藏 查看已经收藏的文章
关于文章收藏 收藏不需要注册帐号,收藏信息仅保存在当前浏览器中。 删除收藏请进入「我的收藏」进行管理。
分享这篇报道

捐助(Paypal): https://www.paypal.me/observeccp
订阅中国观察电报 Telegram : https://t.me/s/ObserveCCP