【问题标题】:How can size of the root disk in Google Compute Engine be increased?如何增加 Google Compute Engine 中根磁盘的大小?
【发布时间】:2023-03-31 13:29:01
【问题描述】:

GCE 中的根磁盘大小为 10 gig。我该如何增加这个?我在控制台或 gcutil 标志中找不到该选项。这可以在 AWS 中轻松完成。

【问题讨论】:

标签: cloud google-compute-engine google-cloud-platform


【解决方案1】:
推荐的答案 Google Cloud

从 2016 年 3 月 31 日起,您可以在线调整永久性磁盘的大小,而无需停止或重新启动虚拟机,无需拍摄快照,也无需将其恢复到更大的磁盘。

blog post announcing the feature 有详细信息,您可以通过控制台查看the docs 了解如何执行此操作:

在 Google Cloud Platform Console 中调整永久磁盘的大小:

  1. 转到Compute Engine page
  2. 点击侧边栏中的“磁盘”
  3. 单击要调整大小的磁盘的名称。
  4. 在磁盘详细信息页面的顶部,单击“编辑”。
  5. 在“大小”字段中,输入磁盘的新大小。
  6. 在磁盘详细信息页面底部,单击“保存”以将更改应用到磁盘。
  7. 调整磁盘大小后,您必须调整磁盘分区的大小,以便操作系统可以访问额外的空间。

或通过 CLI:

gcloud compute disks resize example-disk --size 250

然后,在 Debian/Ubuntu/etc 上。运行:

$ sudo apt install -y cloud-utils         # Debian jessie
$ sudo apt install -y cloud-guest-utils   # Debian stretch, Ubuntu
$ sudo growpart /dev/sda 1
$ sudo resize2fs /dev/sda1

或者,对于 RedHat/Fedora/CentOS/等:

$ sudo dnf install -y cloud-utils-growpart
$ sudo growpart /dev/sda 1
$ sudo xfs_growfs -d /                    # CentOS 6 needs `resize2fs`

请注意,some operating systems 将在重新启动时自动调整分区大小,而无需您使用 fdiskresize2fsxfs_growfs 等工具执行任何手动步骤,因此只需调整磁盘大小和重新启动 VM 以使更改生效。

【讨论】:

  • @AftabNaveed - 请参阅this page,了解支持在重启期间自动调整分区大小的操作系统。您可以使用resize2fs 即时调整非根分区的大小而无需重新启动,但如果它是启动分区,则需要重新启动,并且不需要额外的命令。
  • 感谢回复,我只好重启了。
  • @user1700890 — 您是否在项目中打开了list of disks,然后先单击了特定磁盘?然后,您应该会在该特定磁盘的页面顶部看到一个编辑按钮。
  • 不重启:sudo growpart /dev/sda 1 && sudo resize2fs /dev/sda1
  • 不用 centos/xfs 重启:dnf install cloud-utils-growpart -y && growpart /dev/sda 1 && xfs_growfs -d /
【解决方案2】:
  1. 从快照创建新磁盘,但这样做时会增加大小
  2. 使用新的扩展磁盘创建一个新实例
  3. 扩大分区以识别新空间(https://cloud.google.com/compute/docs/disks/persistent-disks#repartitionrootpd)(注意:要特别注意起始扇区,不要盲目点击回车,可以,但在结束扇区盲目点击回车)
  4. sudo resize2fs /dev/sda1(注意,谷歌云文档中没有提到这一步)

【讨论】:

  • 酷。工作。但请注意需要重新启动。
  • 云文档中也提到了第四步。 ` 将文件系统调整为分区的完整大小:user@mytestinstance:~$ sudo resize2fs /dev/sda1 resize2fs 1.42.5(2012 年 7 月 29 日)/dev/sda1 的文件系统安装在 / 上;需要在线调整大小 old_desc_blocks = 1, new_desc_blocks = 4 /dev/sda1 上的文件系统现在是 13106944 个块长。`
  • 是的,第 4 步已经完成了,但在我写这篇文章的时候还没有。
  • 一个真正有趣的答案。
  • 请注意,下面 Misha Brukman 的回答提供了一个更简单、更快捷的选项。
【解决方案3】:

在大多数情况下,创建第二个您想要大小的数据磁盘和attach it to the instance 会更简单、更灵活。

要调整永久磁盘(包括根磁盘)的大小,请对磁盘进行快照,然后create a new larger disk from the snapshot

【讨论】:

    【解决方案4】:

    这更像是@user1130176 的回答的后续,但如果您运行的是 CentOS 7+,则需要对步骤 4 执行以下操作(扩展文件系统): xfs_growfs /dev/sda1

    CentOS 7 上的新磁盘类型为xfs。希望这会有所帮助,周围的所有链接都不是很清楚。

    【讨论】:

    • -bash: xfs_growfs: command not found,这个命令在哪里?
    • 如果您使用的是 CentOS,您可能使用的是不同/旧版本的 CentOS。基本上,如果您使用 CentOS 6,您将拥有 resize2fs,而使用 CentOS,您将拥有 xfs_growfs
    • 你可以查看这个自动化脚本:gist.github.com/OmarTrigui/7d6ec92c8f2ef83ba15b80e30fb6a5be
    【解决方案5】:

    由于新的 GCoud 命令行工具,您可以在创建实例时选择启动磁盘大小和类型:

    gcloud compute instances create foo-instance --boot-disk-size 100 --image "xxxxxx"
    

    然后使用以下说明调整根分区的大小:https://cloud.google.com/compute/docs/disks#repartitionrootpd

    文档:https://cloud.google.com/sdk/gcloud/reference/compute/instances/create

    编辑: 调整根分区大小后,您必须重新启动实例以强制系统重新读取分区表。这使得这个技巧在启动脚本中无法使用(在每次启动/重新启动时执行)。

    【讨论】:

    • 可用作启动脚本,但您必须小心区分您所处的当前状态,并根据磁盘的状态。有关更多详细信息,请参阅 my answer 链接到我编写的 fdisk.sh 脚本,该脚本正是这样做的。
    【解决方案6】:

    我知道这是一个老话题,但我只是使用比上面解释的方法更简单的方法来做到这一点。全部来自云控制台用户界面,无需担心或在几分钟内执行任何特殊命令并单击。

    但是,它需要创建一个新实例,而不是在已经运行的实例上调整磁盘大小

    1. 创建要放大的磁盘的快照

      单击实例,然后单击磁盘,然后您将“创建快照”,为其命名,然后等待创建快照。 (您不需要为此关闭实例)

    2. 从快照创建一个新实例并指定新的大小

      点击快照,然后你有“创建实例”,然后你可以看到启动磁盘选项,点击更改,然后将其调整为新的大小。 (您可能还想将所有默认实例设置更改为您想要的)

    这是一种在不引起任何分区错误的情况下扩大磁盘的简单方法,不需要任何命令或特殊操作。

    唯一的缺点是您需要创建一个新实例。您不能只在已有的实例上执行此操作。

    【讨论】:

    • 这样做了,但由于内存不足,仍然无法登录到新实例
    【解决方案7】:

    现在你可以resize a Persistent Disk in place:

    gcloud compute disks resize DISK_NAME [DISK_NAME …] --size SIZE [--zone ZONE]
    

    这只会重新调整物理设备的大小。文件系统(之后可能还需要调整分区)

    【讨论】:

      【解决方案8】:

      首先使用您想要的任何大小和映像创建一个磁盘,然后使用现有磁盘作为您的启动源来创建您的实例。

      【讨论】:

        【解决方案9】:

        对于其他无法找到有效答案的人,我发现有人好心地发布了这个脚本:

        https://gist.github.com/xelwarto/6f5c6556613c9215b1e1

        # Requires cloud-utils-growpart to be installed
        
        # Resize ROOT FS
        part=`df --output=source / |grep "/dev/"`
        if [ ! -z "$part" ] ; then
          len=${#part}
          p=`echo $part|cut -c$len`
          d=`echo $part|cut -c1-$(($len-1))`
        
          growpart "$d" "$p"
          xfs_growfs "$part"
        fi
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-01-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-09-20
          • 1970-01-01
          相关资源
          最近更新 更多