在Google控制台中增加磁盘容量后,磁盘已满99.8%的GCP VM尚未调整其文件系统的大小。
我在GCP上有一个基于公共映像ubuntu-2004-focal-v20220419
的小VM。有一个10GB的磁盘,带有根分区和文件系统。一些日志占用了99.8%的磁盘容量。我将磁盘大小增加到15GB(没有删除任何数据),并重新启动VM。文档显示:
对于具有公共映像的虚拟机,在您增加 Boot 磁盘的大小并重新启动虚拟机后,计算引擎会自动调整根分区和文件系统的大小。
但是,我可以看到文件系统没有调整大小
~$ sudo lsblk
sda 8:0 0 15G 0 disk
├─sda1 8:1 0 9.9G 0 part /
├─sda14 8:14 0 4M 0 part
└─sda15 8:15 0 106M 0 part /boot/efi
我想知道为什么会这样?我预计额外的5GB将根据上述文档自动与sda1
合并。会不会是,磁盘太满了,所以一些GCP后台进程无法调整文件系统的大小?
1条答案
按热度按时间jmo0nnb31#
我给出这个回应是为了帮助其他社区解决这个问题,@John汉利在评论区做出了合适的回应。
重要说明:
步骤1 -在Google控制台中创建一个默认示例以进行测试。
默认磁盘大小为10 GB。
步骤2 -连接到示例。
进入Google控制台-〉计算引擎。将显示VM示例列表。在示例所在的行上,单击“SSH”。您也可以使用CLI:“gcloud计算ssh<instance_name>“。
执行“df”命令并记录输出。
步骤3 -关闭示例。
步骤4 -将磁盘大小调整为16 GB。
进入Google控制台-〉计算引擎-〉磁盘。选择示例的磁盘。单击编辑按钮并将磁盘大小调整为16 GB。
步骤5 -启动示例并使用SSH连接。
步骤6 -再次执行“df”命令。
通过比较/dev/sda 1这一行,可以确认Google Compute上的Debian 9 Stretch确实会自动调整根文件系统的大小。
步骤7 -获取串行端口控制台输出。
gcloud compute instances get-serial-port-output的文档。
步骤8 -分析控制台输出。
这产生了大约1,000行。为了减少这个输出,我使用grep来搜索可能与调整文件系统大小有关的输出。注意我是如何拼写“resiz”的。我希望搜索包括“resize”和“resizing”。
结果如下:
步骤9 -确定使用什么命令来调整根文件系统的大小。
从控制台输出中,我可以看到命令“expand-root.sh“。使用命令“which expand-root.sh”,我发现此命令位于“/usr/bin/expand-root.sh”。
Debian 9 Stretch运行在Google Cloud Compute Engine上,如果你调整根磁盘的大小,它会自动调整根卷的大小。非常好。
Google Cloud提供了在VM示例运行时调整磁盘大小的功能。您可以在系统运行时调整根磁盘和根文件系统的大小吗?如果可以,如何调整?
步骤1 -进入Google控制台-〉计算引擎-〉磁盘。选择示例的磁盘。
步骤2 -单击“CREATE SNAPSHOT”(创建快照)按钮创建恢复快照。
步骤3 -单击编辑按钮并将磁盘大小调整为25 GB。
步骤4 -连接到示例。
步骤5 -执行以下命令以查看磁盘大小和分区布局:
此命令生成以下输出:
请注意,磁盘大小报告为“25 Gib”,但分区大小仍为“15 G”。这意味着磁盘驱动器的大小调整为25 GB,但根分区(文件系统)保持相同大小。让我们尝试在系统运行时调整根文件系统的大小。
自动调整大小
现在,让我们更进一步,从命令行或脚本完全自动调整VM磁盘大小和根文件系统大小。
步骤1 -快照磁盘。
首先,我们将为磁盘创建快照以防万一。
gcloud compute disks snapshot的文档。
第2步-调整磁盘大小。
此命令将调整VM示例磁盘的大小。修改所需的大小、磁盘名称和区域。请注意-quiet标志。这将阻止提示确认调整大小。
gcloud compute disks resize的文档。
步骤3 -调整根文件系统的大小。
此命令将使用SSH连接到示例并远程执行expand-root.sh程序。
gcloud compute ssh的文档。
第4步-验证调整大小。
在虚拟机示例上执行最后一个“df”命令,结果显示新的根文件系统为30 GB(30,896,016个数据块)。
这是完整的blog-link to @John汉利的文档。