滚动新闻 →
中企高管集体缺席白宫国宴 揭美中深层博弈 知情人:中共扩大出境管控 旁系亲属也被拦 电动车发生碰撞后为什么需要检查高压系统 习致辞称美国官员为“领导们” 翻译忙“圆场” 防尘口罩适合哪些装修维修工作 36年首败!中国男乒九连冠梦碎 二人受关注 HBM 容量有限时大型模型应该怎样处理,显存不足有哪些常见解决方案 Google Cloud 磁盘扩容后系统看不到空间怎么办,Linux 文件系统还需要哪些操作 多租户系统最容易出现哪些数据库问题,开发时这些地方需要特别小心 川习会90分钟雨声大雨点小 川普:AI发展不放缓 电脑满载运行时突然掉电,电源功率不足有哪些常见表现 才抵美就收传票!习近平被“圈养”在酒店 川普当面酸中媒! Windows 11 笔记本电池健康怎么检查?掌握这些方法了解电池状态 Composer install 和 composer update 有什么区别?实际开发中应该怎样选择 司马迁为什么能够写出如此鲜活的人物 习近平白宫国宴出糗 现场抗议声都听到 第一夫人亲自筹划川习会国宴 黑白造型吸睛 疑山雨路滑 台籍女山友登奥黑部山区遇难 川普晚宴赠大礼:一座秃鹰雕像 出游花莲遇车祸 祖孙三代1死5轻重伤 《黄帝内经》中的睡眠观念 川习会国宴名单曝光 科技巨头云集 中企高管未现身 围棋中“厚势”是什么意思 孩子拿了别人的东西不觉得有问题怎么办 四川女子酒后自杀 父母向同饮者索赔32万 拍视频为什么容易出现画面过曝 《一笑倾城》郑爽被AI换脸 新女主惹议后火速回应 深圳男17楼扔猪骨砸中一女子 获刑6个月 胡塞持续攻击 沙土巴召开紧急高层会议 西安为什么曾经长期成为中国政治中心 床头插座应该如何规划才方便 中国人的敬酒习惯从何而来 “习近平”被活捉、殴打 纽约抗议五花八门 家庭旅行选择住宿时应该注意什么 发动机排气有明显汽油味怎么处理 中秋节“极阴日” 命理师提醒:4生肖要躲月 新能源汽车为什么越来越重视电池安全 护目镜为什么是家庭维修必备工具 4年前酿50万死 埃塞俄比亚再濒临全面内战 凯恩竞逐金球奖 上赛季62进球领跑众射手

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

发布时间: 2026-09-25 07:00:02    最后更新: 2026-09-25 08:21:39    阅读:4  约12 分钟阅读     

在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 的最新报道 ›
★ 我的收藏 查看已经收藏的文章
关于文章收藏 收藏不需要注册帐号,收藏信息仅保存在当前浏览器中。 删除收藏请进入「我的收藏」进行管理。
分享这篇报道

分享 Facebook | X | WhatsApp | LinkedIn

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