默认图片有10GB,但我需要更多(约30GB)。如果我使用其中一个默认图像创建30GB的磁盘,则可用空间为10GB,而不是30GB。我知道我可以使用像debootstrap这样的工具安装发行版,但这似乎不必要地复杂化。还有其他办法吗?
答案 0 :(得分:6)
您可以创建大于10GB的启动盘但是您需要对其进行重新分区,因为默认情况下,提供的VM映像会扩展到10GB,因此您需要使用these instructions和运行fdisk
,重新启动,然后运行resize2fs
以将可用空间扩展到磁盘的完整大小。您可以使用startup scripts将其自动化,以便作为实例创建的一部分运行。
编辑1:我已经开源了我的脚本,这些脚本会在启动时使用startup-script
元数据自动执行此操作。您可以在我专门针对此问题创建的GitHub repo中找到示例代码,该代码已经过验证可与CentOS和Debian配合使用。有关重新分区的信息,请参阅fdisk.sh
;有关部署命令,请参阅gcloud.sh
。
编辑2 或者,您也可以创建an additional disk和attach it to your instance,但在使用之前,您还需要format and mount it。
答案 1 :(得分:5)
这可能是撰写本文时的新功能,但请转到
因此,回答问题的一种方法是使用默认磁盘创建实例,并通过Compute Engine GUI调整其大小。
答案 2 :(得分:1)
您可以轻松地执行此操作,而无需手动调整大小/分区/格式化磁盘或StackOverflow上所有其他答案中引入的任何复杂情况。你真正需要做的就是:
以下是使用Google Developers Console详细解释如何执行此操作的方法:
首先,您必须创建一个新的空白磁盘,以用作新实例的根分区。为此,请转到计算 / 计算引擎 / 磁盘,然后点击" 新磁盘&# 34 ;.请记住确保磁盘与要启动的实例位于同一区域,否则您将无法使用它。接下来,更改" 来源类型"磁盘到" 图像"。然后选择适当的图像并指定所需的磁盘大小,然后按创建。
现在您已准备好启动盘,请创建新实例(计算 / 计算引擎 / VM实例,然后点击& #34; 新实例")。在新实例表单中,将引导源更改为现有磁盘,然后选择刚刚创建的磁盘。
使用几个gcloud
命令执行相同操作应该相对简单。
答案 3 :(得分:1)
比直接编辑分区更安全的方法并且不需要维护自己的图像,是dracut的growroot模块&云初始化
我在CentOS 6& 7 Google Compute,AWS&天青。
## you'll need to be root or use sudo
yum -y install epel-release
yum -y install cloud-init cloud-initramfs-tools dracut-modules-growroot cloud-utils-growpart
rpm -qa kernel | sed -e 's/^kernel-//' | xargs -I {} dracut -f /boot/initramfs-{}.img {}
# reboot for the resize to take affect
分区将在下次启动时自动调整大小。
注意:
答案 4 :(得分:0)
当您创建实例并指定比默认值更大的根磁盘大小时,您的实例仍将以分区表和文件系统大小10GB结束。
为了使用额外的空间,您需要扩展/ dev / sda1分区,然后在其上调整文件系统的大小。
调整/ dev / sda1分区的大小(这是危险的,只能在全新的清洁实体内完成):
echo "16," | sudo sfdisk /dev/sda
sudo reboot
调整根文件系统的大小:
sudo resize2fs /dev/sda1
你应该好好追求这个。
答案 5 :(得分:0)
考虑添加aditional persitance disc toyour实例,它将保存用户应用程序数据。 以后迁移非常有用。因为您的应用程序数据可能会以不同的方式发展和扩展,当然也与选择的操作系统无关。 你可以独立完成该附加光盘的快照。有了这些,您可以在云中获得数据的完全灵活性,而且您不需要将OS与数据一起使用;) 附:新的快照概念可以更大。见abowe说明
答案 6 :(得分:0)
我已将以下内容添加到实例的'startup-script'元数据中,因此它会在前两个启动时调整大小:
# Resize /dev/sda1 primary disk partition to use full space if not already done
if [[ "$(fdisk -l /dev/sda1 | grep '^Disk.*10\.[0-9] GB' | sed 's/.*, \([0-9]*\) bytes$/\1/')" -eq 10735321600 ]]; then
echo -e "c\nu\nd\nn\np\n1\n\n\nw\n" | fdisk /dev/sda
reboot
elif [[ "$(df -P /dev/sda1 | tail -n +2 | awk '{print $2}')" -le 10319160 ]]; then
resize2fs /dev/sda1
fi
根据您的需求进行调整,并先测试一下!我只在CentOS 6上进行了测试。此外,如果你想将实例磁盘保持在10 GB(IOPS最好是200 GB或更大,那么这不一定有效,所以,除非你不关心IO,我建议总是创造更大的磁盘。)
一般的想法可以应用于您的启动脚本:检查磁盘分区大小,看它是否大于Google提供的图像的默认值。如果它与Google的默认值相同,请运行fdisk
以获取虚拟硬盘上允许的最大大小并重新启动。在下次引导时,检查文件系统大小并调整为分区的最大大小。执行这两个操作后,将在后续重新启动时跳过它。
答案 7 :(得分:0)
首先使用现有图像从UI创建磁盘。现在在创建实例时使用此图像。
答案 8 :(得分:0)
以下是我调整Google云计算实例大小的步骤。仅仅使用更大的磁盘创建新实例是不够的,还需要修改分区并扩展文件系统,如下所示:
这里详细介绍了最后两个步骤:
https://cloud.google.com/compute/docs/disks/persistent-disks#manualrepartition
然后,您需要根据需要切换到新实例,或者使用新创建的磁盘映像重新启动原始实例。