滚动新闻 →
陕西商南凶案嫌犯逃亡两日后深山自尽 俄方以制裁为由接管日烟资产 日本敦促立即撤销 《白衣逆行者》撤档引争议 电影方未回应集体抵制 男子向警车投掷汽油瓶引发火灾 警方跨区追捕10小时擒凶 中国女厕偷拍黑产蔓延 超14万女性受害 河北中学厕所冲突致13岁学生死亡 4人获刑 从古典文学看中国人的时间观念 内部人士曝马兴瑞接班饭局内幕 触犯习大忌 经络理论在传统医学中的形成 印章上的篆书为什么特别多 中共大搞3C检查 多地五金店“恐慌式闭店” 巴拉圭银行倒闭 总统潘尼亚抢先国会弹劾提离职 赖均辅逆转许皓鋐 玄乐杯决赛第三局上演惊天逆转 刘云平将成美国国会亚裔最高职位者 民主党夺回国会布局完成 医药高官余艳红主动投案 涉及与习御医曾益新密切关联 如何教育孩子为自己的行为承担后果 欧洲多国航班接连遭遇炸弹恐吓 超25架客机受影响 进化骗局(34) 造假打磨 世界认可 陆配亚亚返乡后展示卫星影像 引发两岸舆论争议 民主党内部派系博弈加剧 四大政治挑战浮现 为什么剪辑不是简单地把片段拼起来 纽约布鲁克林住宅火灾致6人遇难 锂电池或成主因 台湾AI产业带动经济回暖 百货业预期景气延续至2027年 万斯直指伊朗战争影响选情 赫格塞斯或遭弹劾 台股重挫逾3700点失守年线 新台币跌破33元创逾1年半新低 退休夫妇邮轮退休梦破灭 突发停运令203名住户陷入困境 美国国会权力更迭 或重塑全球外交格局 APEC暗潮涌动 美中俄会晤能否成行留悬念 晚清为什么不断出现改革与失败 加拿大公布新预算案 卡尼推动经济自主 赤字引发关注 台湾退役军官涉中共选举干预遭限制出境 中共对台跨境镇压升级 九大手段威胁民主自由 美军加速部署无人机防御体系 涉及超2.5万套装备 纽约布鲁克林木质排屋火灾致6死9伤 美股四大指数重挫 AI科技股集体暴跌 英伟达特斯拉跌逾9% 小户型如何利用墙角空间 欧洲多架航班遭遇炸弹威胁 战斗机紧急护航 加拿大面临中共渗透风险 专家呼吁加强安全审查 马兴瑞贪腐25年被起诉 习彭人脉遭冲击 黄之锋被判十年监禁 国际社会谴责中共人权问题

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

发布时间: 2026-09-25 07:00:02    最后更新: 2026-11-05 21:57:26    阅读:94  约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