4

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

4

9 回答 9

7

这可能是撰写本文时的一项新功能,但请访问

  1. https://console.cloud.google.com/compute/
  2. 单击左侧菜单中的磁盘
  3. 在加载的主窗格中,单击您的实例
  4. 在加载的上部水平菜单中,单击编辑
  5. 以前的磁盘大小将变为可编辑。将磁盘大小更改为所需的大小。
  6. 重新启动您的实例(sudo restart -r now)。重新启动时, df -h 列出您的新磁盘大小。

因此,回答您的问题的一种方法是使用默认磁盘创建一个实例,然后通过 Compute Engine GUI 简单地调整它的大小。

于 2016-01-20T17:38:31.920 回答
6

您可以创建大于 10GB 的启动磁盘,但您需要重新分区,因为默认情况下,提供的 VM 映像会扩展为 10GB,因此您需要使用这些说明并运行fdisk、重新启动,然后运行resize2fs以扩展可用空间为磁盘的完整大小。您可以使用启动脚本将其自动化,使其作为实例创建的一部分运行。

编辑 1:我已经开源了我的脚本,这些脚本会在启动时使用startup-script元数据自动为您执行此操作。您可以在我专门为这个问题创建的GitHub 存储库中找到示例代码,该代码已被验证可与 CentOS 和 Debian 一起使用。有关fdisk.sh重新分区和gcloud.sh部署命令,请参阅。

编辑 2:或者,您也可以创建一个额外的磁盘并将其附加到您的实例,但您还需要格式化并安装它,然后才能使用它。

于 2014-06-08T03:17:25.107 回答
1

您可以轻松地做到这一点,而无需手动调整磁盘大小/分区/格式化磁盘或 StackOverflow 上所有其他答案中引入的任何并发症。您真正需要做的就是:

  1. 根据要使用的映像单独创建具有所需容量的新磁盘。
  2. 选择该磁盘作为您正在创建的实例的引导磁盘。

以下是如何使用 Google Developers Console 执行此操作的详细说明:

首先,您必须创建一个新的空白磁盘用作新实例的根分区。为此,请转到Compute / Compute Engine / Disks并单击“ New disk ”。请记住确保磁盘与您要启动的实例位于同一区域,否则您将无法使用它。接下来,将磁盘的“ Source Type ”更改为“ Image ”。然后选择适当的图像并指定所需的磁盘大小并点击Create

现在您已准备好启动磁盘,请创建新实例(Compute / Compute Engine / VM Instances并单击“ New instance ”)。在新的实例表单中,将Boot Source更改为Existing Disk并选择您刚刚创建的磁盘。

gcloud使用几个命令来做同样的事情应该相对简单。

于 2015-01-25T13:29:16.443 回答
1

比直接编辑分区更安全且不需要维护自己的图像的方法是 dracut 的 growroot 模块和 cloud-init。

我已经在 Google Compute、AWS 和 Azure 上将它与 CentOS 6 和 7 一起使用。

## 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。这种方法应该适用于任何地方。
于 2015-08-31T17:37:50.177 回答
0

首先使用现有图像从 UI 创建一个磁盘。现在在创建实例时使用此图像。

于 2015-03-09T07:21:59.823 回答
0

考虑向您的实例添加额外的持久性磁盘,该磁盘将保存用户应用程序数据。以后可能会很有用。因为您的应用程序数据可能会以不同的方式发展和扩展,当然也与所选的操作系统无关。例如,您可以独立制作该附加光盘的快照。有了它,您就可以在云中获得数据的完全灵活性,并且您不需要将操作系统与您的数据一起使用;) PS 当然,新的快照 Desics 可以更大。请参阅上面的说明

于 2014-08-19T11:51:40.690 回答
0

当您创建实例并指定比默认值更大的根磁盘大小时,您的实例仍然会以 10GB 的分区表和文件系统大小结束。

为了使用额外的空间,您需要扩展 /dev/sda1 分区,然后调整其上的文件系统的大小。

要调整 /dev/sda1 分区的大小(这是危险的,只能在全新的 CLEAN 实例中完成):

echo "16," | sudo sfdisk /dev/sda
sudo reboot

要调整根文件系统的大小:

sudo resize2fs /dev/sda1

你应该很好去追求这个。

于 2014-06-06T18:10:51.163 回答
0

我已将以下内容添加到实例的“启动脚本”元数据中,以便在前两次启动时调整大小:

# 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虚拟硬盘允许的最大大小并重新启动。下次启动时,检查文件系统大小并将大小调整为分区的最大大小。一旦执行了这两个操作,它将在后续重新启动时被跳过。

于 2015-01-15T16:12:51.513 回答
0

以下是我调整 Google Cloud 计算实例大小的步骤。仅仅创建一个更大磁盘的新实例是不够的,您还需要修改分区并扩展文件系统,如下所示:

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

最后两个步骤在这里详细描述:

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

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

于 2015-09-02T05:45:57.033 回答