如何在Google Compute Engine上获得更大的启动盘

时间:2014-06-03 17:17:54

标签: google-compute-engine disk-partitioning

默认图片有10GB,但我需要更多(约30GB)。如果我使用其中一个默认图像创建30GB的磁盘,则可用空间为10GB,而不是30GB。我知道我可以使用像debootstrap这样的工具安装发行版,但这似乎不必要地复杂化。还有其他办法吗?

9 个答案:

答案 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 diskattach it to your instance,但在使用之前,您还需要format and mount it

答案 1 :(得分:5)

这可能是撰写本文时的新功能,但请转到

  1. https://console.cloud.google.com/compute/
  2. 点击左侧菜单中的磁盘
  3. 在加载的主窗格中,单击您的实例
  4. 在加载的上方水平菜单中,点击修改
  5. 以前的磁盘大小将变为可编辑状态。将磁盘大小更改为所需大小。
  6. 重新启动您的实例(sudo restart -r now)。在重新启动时,df -h会列出您的新磁盘大小。
  7. 因此,回答问题的一种方法是使用默认磁盘创建实例,并通过Compute Engine GUI调整其大小。

答案 2 :(得分:1)

您可以轻松地执行此操作,而无需手动调整大小/分区/格式化磁盘或StackOverflow上所有其他答案中引入的任何复杂情况。你真正需要做的就是:

  1. 根据您要使用的图像,分别创建具有所需容量的新磁盘。
  2. 选择该磁盘作为您正在创建的实例的启动磁盘。
  3. 以下是使用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

分区将在下次启动时自动调整大小。

注意:

  • 这是内置于Ubuntu中的,这就是为什么你没有看到那里的问题。
  • RedHat& CentOS拥有大多数预先构建的图像,而不仅仅是Google Cloud。这种方法可以在任何地方使用。

答案 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云计算实例大小的步骤。仅仅使用更大的磁盘创建新实例是不够的,还需要修改分区并扩展文件系统,如下所示:

  • 在原始实例上创建新磁盘快照
  • 使用基于具有新所需大小的快照的启动盘创建新的计算实例
  • ssh到您的新计算实例
  • 以root身份使用fdisk来调整分区大小
  • 以root身份使用resize2fs来扩展根分区

这里详细介绍了最后两个步骤:

https://cloud.google.com/compute/docs/disks/persistent-disks#manualrepartition

然后,您需要根据需要切换到新实例,或者使用新创建的磁盘映像重新启动原始实例。