添加区域级永久性磁盘或调整其大小


本页面介绍了如何在实例上添加新的区域级永久性磁盘并对其设置格式,另外还介绍了如何调整地区永久性启动磁盘和辅助(非启动)地区永久性磁盘的大小。

地区永久性磁盘可以标准硬盘 (HDD)固态硬盘 (SSD) 的形式提供。如需更加概括地了解地区永久性磁盘以及可用的永久性磁盘类型,请参阅永久性磁盘概览。如果地区标准永久性磁盘或地区 SSD 永久性磁盘无法满足您的所有性能或灵活性要求,您可以为实例添加其他存储方案

您可以创建空白磁盘,也可以通过来源创建磁盘。如果您创建空白磁盘,则新的地区永久性磁盘最初没有任何数据或文件系统。将这些磁盘挂接到实例后,您必须自行格式化磁盘。

您可以通过以下来源创建新的永久性磁盘:

限制

  • 地区永久性磁盘只能增加容量,不能减少容量。 Compute Engine 会管理地区永久性磁盘背后的硬件,因此您可以添加磁盘以及调整其大小,而无需处理分割或冗余。您可挂接一个大型辅助磁盘并在需要额外空间时调整其大小,或者挂接多个较小的磁盘以将数据分布到多个卷中。

  • 最佳做法是使用快照备份磁盘,防止意外丢失数据。

准备工作

将空白地区永久性磁盘添加到您的实例

您可以创建地区标准永久性磁盘或地区 SSD 永久性磁盘并将其挂接到现有实例。如果您没有任何实例,请创建并启动新实例。 在创建实例期间,您最多可以挂接 127 个辅助非启动地区永久性磁盘,以将应用、数据文件、数据库和日志存储在不同的卷上。每个实例可以挂接的总容量为 257 TB。如需了解如何在使用大容量卷时确保最高性能,请参阅较大的逻辑卷性能

使用 Google Cloud Consolegcloud 命令行工具Compute Engine API 创建并挂接地区永久性磁盘。

控制台

您可以在 Google Cloud Console 中创建并挂接地区永久性磁盘:

  1. 转到虚拟机实例页面。

    转到“虚拟机实例”页面

  2. 选中相应复选框,然后点击您要添加磁盘的实例的名称。

  3. 虚拟机实例详情页面上,点击修改

  4. 额外磁盘下,点击添加新磁盘

  5. 指定磁盘名称,配置磁盘属性,然后选择空白作为来源类型

  6. 点击完成以完成磁盘的配置。

  7. 点击保存以将更改应用于实例并添加新磁盘。

  8. 创建新磁盘并将其挂接到实例后,您必须格式化并装载磁盘,以便操作系统可以使用可用的存储空间。

gcloud

使用 gcloud 工具创建并挂接地区永久性磁盘:

  1. 使用 gcloud compute disks create 命令创建地区永久性磁盘。如果您需要地区 SSD 永久性磁盘以实现更高的吞吐量或 IOPS,请添加 --type 标志并指定 pd-ssd

    gcloud compute disks create DISK_NAME \
      --size DISK_SIZE \
      --type DISK_TYPE
    

    替换以下内容:

    • DISK_NAME:新磁盘的名称。
    • DISK_SIZE:新磁盘的大小(以 GB 为单位)。可接受的大小范围介于 10 GB 到 65536 GB(含边界值)之间并以 1 GB 为增量。
    • DISK_TYPE:永久性磁盘的类型。例如 pd-ssd
  2. 创建磁盘后,将其挂接到任何正在运行或已停止的实例。 使用 gcloud compute instances attach-disk 命令:

    gcloud compute instances attach-disk INSTANCE_NAME \
      --disk DISK_NAME
    

    替换以下内容:

    • INSTANCE_NAME:要向其中添加新地区永久性磁盘的实例的名称
    • DISK_NAME:您要挂接到实例的新磁盘的名称

    创建新磁盘并将其挂接到实例后,您必须格式化并装载磁盘,以便操作系统可以使用可用的存储空间。

  3. 使用 gcloud compute disks describe 命令查看磁盘的说明。

API

  1. 在 API 中,构建一个 POST 请求以使用 disks.insert 方法创建地区永久性磁盘。请添加 namesizeGbtype 属性。如果想要创建一个空白且未格式化的非启动磁盘,请不要为此磁盘指定来源映像或来源快照。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks
    
    {
     "name": "DISK_NAME",
     "sizeGb": "DISK_SIZE",
     "type": "zones/ZONE/diskTypes/DISK_TYPE"
    }
    

    替换以下内容:

    • PROJECT_ID:您的项目 ID。
    • ZONE:您的实例和新磁盘所在的区域。
    • DISK_NAME:新磁盘的名称。
    • DISK_SIZE:新磁盘的大小(以 GB 为单位)。可接受的大小范围介于 10 GB 到 65536 GB(含边界值)之间并以 1 GB 为增量。
    • DISK_TYPE:永久性磁盘的类型。例如 pd-ssd
  2. 构建一个向 compute.instances.attachDisk 方法发出的 POST 请求,并在其中添加您刚创建的地区永久性磁盘的网址:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/attachDisk
    
    {
     "source": "/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME"
    }
    

    替换以下内容:

    • PROJECT_ID:您的项目 ID
    • ZONE:您的实例和新磁盘所在的地区
    • INSTANCE_NAME:您要向其中添加新永久性磁盘的实例的名称
    • DISK_NAME:新磁盘的名称

创建新磁盘并将其挂接到实例后,必须格式化并装载磁盘,以便操作系统可以使用可用的存储空间。

格式化并装载地区永久性磁盘

新的空白地区永久性磁盘最初没有任何数据或文件系统。在将此磁盘挂接到实例后,您必须自行格式化磁盘。Linux 实例与 Windows 实例之间的格式化过程有所不同。

Linux 实例

在 Linux 实例上格式化并装载新磁盘。您可以使用任何想要的分区格式和配置,但我们建议您使用单个 ext4 文件系统,而不使用分区表。如果您需要更多存储空间,可以稍后调整磁盘大小

  1. 转到虚拟机实例页面。

    转到“虚拟机实例”页面

  2. 点击挂接了新磁盘的实例旁的 SSH 按钮。浏览器会建立连到实例的终端连接。

  3. 在终端中,使用 lsblk 命令列出挂接到您的实例的磁盘,并找到您要格式化和挂接的磁盘。

    $ sudo lsblk
    
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   10G  0 disk
    └─sda1   8:1    0   10G  0 part /
    sdb      8:16   0  250G  0 disk
    

    在本示例中,sdb 是新的地区永久性磁盘的设备 ID。

  4. 格式化磁盘。您可以使用任何想要的文件格式,但我们建议您使用单个 ext4 文件系统,而不使用分区表。如果您以后要调整地区永久性磁盘的大小,则可以调整文件系统大小,无需修改磁盘分区。

    使用 mkfs 工具格式化磁盘。此命令会删除指定磁盘中的所有数据,因此请确保正确指定磁盘设备。 为了最大限度地提高磁盘性能,请在 -E 标志中使用推荐的格式化选项。无需在此辅助磁盘上为 root 保留空间,因此请指定 -m 0 以使用所有可用的磁盘空间。

    $ sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/DEVICE_ID
    

    DEVICE_ID 替换为您要格式化的地区永久性磁盘的设备 ID。对于本示例,请指定 sdb 以格式化整个磁盘而不创建分区表。

  5. 创建用作新磁盘装载点的目录。您可以使用任何想要的目录。以下示例在 /mnt/disks/ 下创建了一个目录。

    $ sudo mkdir -p /mnt/disks/MNT_DIR
    

    MNT_DIR 替换为要在其中装载区域永久性磁盘的目录。

  6. 使用 mount 工具将磁盘装载到实例,并启用 discard 选项:

    $ sudo mount -o discard,defaults /dev/DEVICE_ID /mnt/disks/MNT_DIR
    

    替换以下内容:

    • DEVICE_ID:要装载的地区永久性磁盘的设备 ID
    • MNT_DIR:要在其中装载地区永久性磁盘的目录
  7. 配置对设备的读写权限。对于本示例,请为所有用户授予对设备的写入访问权限。

    $ sudo chmod a+w /mnt/disks/MNT_DIR
    

    MNT_DIR 替换为您在其中装载了地区永久性磁盘的目录。

    您可以根据情况选择将地区永久性磁盘添加到 /etc/fstab 文件中,以使该设备在实例重启时自动重新装载。

  8. 创建当前 /etc/fstab 文件的备份。

    $ sudo cp /etc/fstab /etc/fstab.backup
    
  9. 使用 blkid 命令查找地区永久性磁盘的 UUID。在您格式化磁盘时,系统会生成此 UUID。请使用 UUID 装载地区永久性磁盘,因为在系统之间移动磁盘时,UUID 不会更改。

    $ sudo blkid /dev/DEVICE_ID
    
    /dev/DEVICE_ID: UUID="UUID_VALUE" TYPE="ext4"
    

    替换以下内容:

    • DEVICE_ID:您要自动装载的区域永久性磁盘的设备 ID。如果您在磁盘上创建了分区表,请指定您要装载的分区。
    • UUID_VALUE:区域永久性磁盘的 UUID;您必须将此 UUID 添加到 /etc/fstab 文件中。
  10. 在文本编辑器中打开 /etc/fstab 文件,并创建一个包含此 UUID 的条目。例如:

    UUID=UUID_VALUE /mnt/disks/MNT_DIR ext4 discard,defaults,NOFAIL_OPTION 0 2
    

    替换以下内容:

    • UUID_VALUE:区域永久性磁盘的 UUID;您必须将此 UUID 添加到 /etc/fstab 文件中。
    • MNT_DIR:您在其中装载了地区永久性磁盘的目录。
    • NOFAIL_OPTION:一个变量,用于指定操作系统在启动时无法装载地区永久性磁盘的情况下执行的操作。如需让系统在永久性磁盘不可用的情况下也能启动,请使用 nofail 选项(适用于大多数发行版)或 nobootwait 选项(适用于 Ubuntu 12.04 和 Ubuntu 14.04)。

    您可以选择使用单条命令完成此步骤。例如,以下命令会在 /etc/fstab 中创建一个条目,以使用 /dev/sdb 地区永久性磁盘的 UUID 将该磁盘装载到 /mnt/disks/MNT_DIR

    $ echo UUID=`sudo blkid -s UUID -o value /dev/sdb` /mnt/disks/MNT_DIR ext4 discard,defaults,NOFAIL_OPTION 0 2 | sudo tee -a /etc/fstab
    
    UUID=c994cf26-1853-48ab-a6a5-9d7c0250fed4 /mnt/disks/MNT_DIR ext4 discard,defaults,NOFAIL_OPTION 0 2
    
    
  11. 使用 cat 命令验证您的 /etc/fstab 条目内容正确:

    $ cat /etc/fstab
    
    LABEL=cloudimg-rootfs   /        ext4   defaults        0 0
    UUID=d761bdc5-7e2a-4529-a393-b9aefdb623b6 /mnt/disks/MNT_DIR ext4 discard,defaults,NOFAIL_OPTION 0 2
    
    

如果您分离了此区域永久性磁盘,或根据此实例的启动磁盘创建了一个快照,请修改 /etc/fstab 文件并移除此区域永久性磁盘所对应的条目。即使将 NOFAIL_OPTION 设置为 nofailnobootwait,您也应该使 /etc/fstab 文件与挂接到实例的设备保持同步,并在您创建启动磁盘快照之前或分离区域永久性磁盘时移除这些条目。

Windows 实例

使用 Windows 磁盘管理在 Windows 实例上格式化和装载新磁盘。

  1. 转到虚拟机实例页面。

    转到“虚拟机实例”页面

  2. 点击已调整大小的磁盘所在实例旁的 RDP 按钮。浏览器将会建立连到该实例的 RDP 连接。

  3. 右键点击 Windows“开始”按钮并选择磁盘管理

    右键点击 Windows“开始”按钮并选择“磁盘管理”。

  4. 如果之前尚未初始化地区永久性磁盘,则“磁盘管理”工具会提示您为新磁盘选择分区方案。选择 GPT,然后点击确定

    在磁盘初始化窗口中选择分区方案。

  5. 磁盘初始化后,右键点击未分配的磁盘空间,然后选择新建简单卷

    从所挂接的磁盘创建新的简单卷。

  6. 按照新建简单卷向导中的说明配置新卷。您可以使用任何想要的分区格式,但对于本示例,请选择 NTFS。另外,请勾选执行快速格式化以加快格式化过程。可以选择在分配单元大小字段中设置集群大小。集群大小会限制分区的大小上限。如果您稍后尝试调整地区永久性磁盘和此分区的大小,请牢记这一点。

    在“新建简单卷”向导中选择分区格式类型。

  7. 完成向导步骤并且完成卷格式化后,请检查所挂接磁盘列表中的 Status 列,确保新磁盘的状态为 Healthy

    检查磁盘是否处于联机状态且运行状况良好。

您现在可以将文件写入地区永久性磁盘。

通过来源磁盘创建永久性磁盘克隆

即使现有的永久性磁盘已挂接到虚拟机实例,您也可以通过该磁盘创建新的永久性磁盘克隆。克隆来源磁盘后,您可以删除来源磁盘,而无需担心克隆会被删除。

磁盘克隆对于以下操作很有用:复制生产数据以便在不干扰生产的情况下进行调试;横向扩容虚拟机时复制磁盘;为数据库备份验证创建副本。您还可以使用磁盘克隆将非启动磁盘数据移动到新项目。对于需要保护数据以实现额外弹性的场景(例如备份和灾难恢复),我们建议使用快照,而不是磁盘克隆。

限制

  • 克隆与来源磁盘的地区、区域和磁盘类型(pd-standardpd-ssd)必须相同。
  • 您不能通过区域磁盘创建地区磁盘克隆,也不能通过地区磁盘创建区域磁盘克隆。
  • 克隆的大小必须至少为来源磁盘的大小。如果您使用 Google Cloud Console 创建克隆,则不能指定磁盘大小,并且克隆的大小与来源磁盘的大小相同。
  • 如果您使用 CSEK(客户提供的加密密钥)CMEK(客户管理的加密密钥)对来源磁盘进行加密,则必须使用同一密钥对克隆进行加密。如需了解详情,请参阅创建加密来源磁盘的克隆
  • 您每 30 秒最多可以创建给定来源磁盘的一个克隆。
  • 总共最多可以创建给定来源磁盘的 1000 个磁盘克隆。如果超出此限制,则系统会返回 internalError

创建磁盘克隆

控制台

  1. 在 Google Cloud Console 中,转到磁盘页面以查看项目中的地区永久性磁盘列表。

    转到“磁盘”

  2. 找到您要克隆的磁盘。

  3. 点击操作下的菜单按钮,然后选择克隆磁盘

创建克隆。

  1. 克隆磁盘面板中,指定新磁盘的名称。
  2. 属性下,查看新磁盘的其他详细信息。
  3. 点击保存

gcloud

gcloud 工具中,使用 disks create 命令并指定 --source-disk。以下示例将来源磁盘克隆到其他项目中的新磁盘。


gcloud compute disks create projects/TARGET_PROJECT_ID/zones/ZONE/disks/TARGET_DISK_NAME /
--description="cloned disk" --source-disk=projects/SOURCE_PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME

API

在 API 中,构建对 compute.disks.insert 方法的 POST 请求。在请求正文中,指定 namesourceDisk 参数。克隆会从来源磁盘继承所有省略的属性。以下示例将来源磁盘克隆到其他项目中的新磁盘。


POST https://compute.googleapis.com/compute/v1/projects/TARGET_PROJECT_ID/zones/ZONE/disks

{
  "name": "TARGET_DISK_NAME"
  "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME"
}

创建加密来源磁盘的克隆

如果您使用 CSEK 对来源磁盘进行加密,则还必须使用同一密钥对克隆进行加密。

控制台

解密和加密下,提供来源磁盘加密密钥。

gcloud

在创建磁盘克隆时,请使用 --csek-key-file 标志提供来源磁盘加密密钥。如果您使用的是 RSA 封装密钥,请使用 gcloud beta 组件:


gcloud beta compute disks create projects/TARGET_PROJECT_ID/zones/ZONE/disks/TARGET_DISK_NAME /
--description="cloned disk" --source-disk=projects/SOURCE_PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME
--csek-key-file example-key-file.json

API

请使用 diskEncryptionKey 属性提供来源磁盘加密密钥。


POST https://compute.googleapis.com/compute/beta/projects/TARGET_PROJECT_ID/zones/ZONE/disks

{
  "name": "TARGET_DISK_NAME"
  "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME"
  "diskEncryptionKey": {
    "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
  },
}

如果您使用 CMEK 对来源磁盘进行加密,则还必须使用同一密钥对克隆进行加密。

控制台

Compute Engine 会使用来源磁盘加密密钥对克隆自动进行加密。

gcloud

在创建磁盘克隆时,请使用 --kms-key 标志提供来源磁盘密钥。如果您使用的是 RSA 封装密钥,请使用 gcloud beta 组件:


gcloud beta compute disks create projects/TARGET_PROJECT_ID/zones/ZONE/disks/TARGET_DISK_NAME /
--description="cloned disk" --source-disk=projects/SOURCE_PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME
--kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY

API

在创建磁盘克隆时,请使用 kmsKeyName 属性提供来源磁盘密钥。


POST https://compute.googleapis.com/compute/beta/projects/TARGET_PROJECT_ID/zones/ZONE/disks

{
  "name": "TARGET_DISK_NAME"
  "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME"
  "diskEncryptionKey": {
    "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  },
}

调整地区永久性磁盘的大小

您可以在实例需要更多存储空间时调整地区永久性磁盘的大小;只有在您需要将数据分开存放到多个各自独立的分区时,才应挂接多个辅助磁盘

无论磁盘是否挂接到正在运行的实例,您都可以随时调整磁盘的大小。

如果调整磁盘大小,则系统不会删除或修改磁盘数据,但根据最佳做法,您最好在进行任何更改之前截取磁盘的快照。

控制台

  1. 转到磁盘页面以查看项目中的地区永久性磁盘列表。

    转到“磁盘”页面

  2. 点击您要调整大小的磁盘的名称。

  3. 在“磁盘详情”页面上,点击修改

  4. 大小字段中,为磁盘输入新的大小。使用 MBR 分区表的启动磁盘和辅助磁盘最大只能调整到 2 TB。

  5. 点击保存以将更改应用于磁盘。

  6. 调整磁盘大小后,必须调整文件系统的大小,以便操作系统可以访问额外空间。

gcloud

gcloud 工具中,使用 disks resize 命令并使用所需的磁盘大小(以 GB 为单位)指定 --size 标志。

gcloud compute disks resize DISK_NAME --size DISK_SIZE

替换以下内容:

  • DISK_NAME:您要调整大小的磁盘的名称。
  • DISK_SIZE:磁盘的新大小(以 GB 为单位)。使用 MBR 分区表的启动磁盘和辅助磁盘最大只能调整到 2 TB。

调整磁盘大小后,必须调整文件系统的大小,以便操作系统可以访问额外空间。

API

在 API 中,构建对 compute.disks.resize 方法的 POST 请求。 在请求正文中,指定 sizeGb 参数并将其设置为所需磁盘大小(以 GB 为单位)。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/resize

{
 "sizeGb": "DISK_SIZE"
}

替换以下内容:

  • PROJECT_ID:您的项目 ID。
  • ZONE:您的磁盘所在的区域。
  • DISK_NAME:要调整大小的磁盘的名称。
  • DISK_SIZE:磁盘的新大小(以 GB 为单位)。使用 MBR 分区表的启动磁盘和辅助磁盘最大只能调整到 2 TB。

调整磁盘大小后,必须调整文件系统的大小,以便操作系统可以访问额外空间。

调整地区永久性磁盘上文件系统和分区的大小

调整地区永久性磁盘的大小后,您必须将该磁盘上的文件系统配置为使用额外的磁盘空间。如果磁盘具有分区表(例如启动磁盘),您必须增大该分区并调整该分区上文件系统的大小。如果您的地区永久性磁盘只有一个文件系统,并且没有分区表,您可以只调整文件系统的大小。

此外,使用最新版本公用映像的实例可以在系统重新启动后自动调整其分区和文件系统的大小。SUSE Linux Enterprise Server (SLES) 公共映像是唯一不支持此功能的映像。

在修改地区永久性磁盘上的文件系统之前,请创建快照

Linux 实例

在 Linux 实例上,连接到您的实例并手动调整您的分区和文件系统的大小,以使用您增加的磁盘空间。完成此手动处理过程后,您无需重启实例。

  1. 转到虚拟机实例页面。

    转到“虚拟机实例”页面

  2. 点击挂接了新磁盘的实例旁的 SSH 按钮。浏览器会建立连到该实例的终端连接。

  3. 找出含有您要调整大小的文件系统和分区的磁盘。如果磁盘已装载,您可以使用 df 命令和 lsblk 命令比较文件系统的大小并查找磁盘 ID。在本示例中,/dev/sda1 分区位于大小已调整为 20 GB 的启动磁盘上,但分区表和文件系统仅向操作系统提供 9.7 GB 的容量。此外,/dev/sdb 辅助磁盘没有分区表,但该磁盘上的文件系统仅为操作系统提供 250 GB 的容量。此外,在本例中,/mnt/disks/disk-1 是一个装载目录。

    $ sudo df -Th
    
    Filesystem      Type     Size   Used  Avail  Use%  Mounted on
    /dev/sda1       ext4     9.7G   1.2G   8.5G   12%  /
    /dev/sdb        ext4     250G    60M   250G    1%  /mnt/disks/disk-1
    
    
    $ sudo lsblk
    
    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda       8:0    0   20G  0 disk
    └─sda1    8:1    0   10G  0 part /
    sdb       8:16   0  500G  0 disk /mnt/disks/disk-1
    
    

    在本示例中,df 命令显示 /dev/sda1 分区已作为根文件系统装载,而 /dev/sdb 磁盘已作为辅助磁盘装载到 /mnt/disks/disk-1

    如果您的磁盘写入了一个文件系统,并且没有分区表,那么您可以跳过第 4 步,该步骤介绍如何安装 growpart 实用程序以及如何增大分区。

  4. 如果您要调整大小的磁盘具有分区表,则必须在调整文件系统大小之前增大该分区。使用 growpart 来调整您的映像分区的大小。

    1. 如需在 Debian 服务器上安装 growpart,请运行:

      $ sudo apt -y install cloud-guest-utils
    2. 如需在 CentOS 服务器上安装 growpart,请运行:

      $  sudo yum -y install cloud-utils-growpart

      安装后,如需获取工具相关帮助,请运行 growpart -h

    3. 安装 growpart 工具后,您可以增大分区。

      $ sudo growpart /dev/DEVICE_ID PARTITION_NUMBER

      替换以下内容:

      • DEVICE_ID:设备 ID。
      • PARTITION_NUMBER:该设备的分区号。例如,sudo growpart /dev/sda 1。请注意,设备 ID 与分区号之间有一个空格。
  5. 扩展磁盘上的文件系统或分区以使用增加的空间。

    如果您使用的是 ext4,请使用 resize2fs 命令。如果您在磁盘上增大了一个分区,请指定该分区。如果您的磁盘没有分区表,请仅指定磁盘 ID。

    $ sudo resize2fs /dev/DEVICE_IDPARTITION_NUMBER

    替换以下内容:

    • DEVICE_ID:设备 ID。
    • PARTITION_NUMBER:您要在其中调整文件系统大小的设备的分区号。例如,/dev/sda 指向一个磁盘,/dev/sda1 指向该磁盘上的第一个分区。

    如果您使用的是 xfs,请使用 xfs_growfs 命令扩展文件系统,并指定装载点(而不是设备 ID):

    $ sudo xfs_growfs /mnt/disks/disk-1

    disk-1 是装载点。

  6. 可以选择使用 df 命令来验证文件系统的大小是否已经调整。

    $ df -h /dev/DEVICE_ID
    
    Filesystem        Size  Used Avail Use% Mounted on
    /dev/DEVICE_ID  493G   70M  492G   1% /mnt/disks/disk-1
    

    DEVICE_ID 替换为您要查看文件系统配置的磁盘的设备 ID。

Windows 实例

使用 Windows 磁盘管理工具调整 Windows 实例上的分区大小。

  1. 转到“虚拟机实例”页面。

    转到“虚拟机实例”页面

  2. 点击已调整大小的磁盘所在实例旁的 RDP 按钮。浏览器将会建立连到该实例的 RDP 连接。

  3. 右键点击 Windows“开始”按钮,然后选择磁盘管理以打开“磁盘管理”工具。

    从 Windows“开始”按钮的右键菜单中选择 Windows“磁盘管理器”工具。

  4. 刷新“磁盘管理”工具,使其识别地区永久性磁盘上的额外空间。在“磁盘管理”窗口顶部,点击操作并选择刷新

    在“磁盘管理”工具中点击“操作”菜单并选择“刷新”以更新地区永久性磁盘信息。

  5. 在已调整大小的磁盘上,右键点击已格式化的分区并选择扩展卷

    右键点击磁盘的已格式化部分并选择“扩展卷”选项。

  6. 按照扩展卷向导中的说明扩展现有分区以包含额外的磁盘空间。如果现有分区已格式化为 NTFS,则分区大小上限受其集群大小设置的限制

  7. 完成向导步骤并且完成卷格式化后,请检查所挂接磁盘列表中的 Status 列,以确保新磁盘的状态为 Healthy

    查看 Windows 识别的磁盘列表,验证该实例是否处于联机状态且运行状况良好。

您现在可以使用额外的地区永久性磁盘空间存储数据。

恢复无法访问的实例或完整启动磁盘

如果实例的磁盘空间完全用尽,或者实例未运行 Linux 客机环境,那么即便您增加了用于支持根文件系统的永久性磁盘的大小,该实例也无法在启动时自动调整根文件系统的大小。如果您无法连接到实例,或者启动磁盘已满且无法调整其大小,则必须创建新实例并通过快照重新创建启动磁盘,这样才能调整其大小。

您必须知道要重新创建的启动磁盘的大小,可以通过查看 Compute Engine 控制台来确定磁盘大小。

  1. 转到虚拟机实例创建页面。

    转到“虚拟机实例”页面

    1. 点击实例名称打开虚拟机实例详情页面。
    2. 点击停止
    3. 启动磁盘部分中,记下启动磁盘的大小和名称。
  2. 在 Google Cloud Console 中,转到快照创建页面。

    转到“快照”页面

    1. 输入快照名称
    2. 来源磁盘下拉列表中选择启动磁盘。
    3. 点击创建
  3. 转到虚拟机实例创建页面。

    转到“虚拟机实例”页面

  4. 输入实例详情。

  5. 利用旧启动磁盘的快照创建新的启动磁盘。

    1. 启动磁盘下,选择更改
    2. 选择快照
    3. 快照下拉列表中选择旧启动磁盘的快照。
    4. 选择启动磁盘类型
    5. 为磁盘输入新的大小。
    6. 点击选择以确认您的磁盘选项。
  6. 点击创建

  7. 装载和格式化磁盘。

设置地区永久性磁盘的自动删除状态

删除关联的虚拟机实例时,您可以设置由系统自动删除读写地区永久性磁盘。此行为由挂接的给定地区永久性磁盘的虚拟机实例上的 autoDelete 属性控制,并且可以随时更新。同样,您也可以通过将 autoDelete 值标记为 false 来防止地区永久性磁盘被删除。

控制台

  1. 转到虚拟机实例页面。

    转到“虚拟机实例”页面

  2. 选中具有关联磁盘的实例旁的复选框。

  3. 点击实例名称。

  4. 虚拟机实例详情页面随即显示。

  5. 点击修改

  6. 滚动到额外磁盘

  7. 点击铅笔图标以修改该磁盘的删除规则

  8. 点击完成以保存更改。

  9. 点击保存以更新实例。

gcloud

如需设置地区永久性磁盘的自动删除状态,请使用 gcloud compute instances set-disk-auto-delete 命令:

gcloud compute instances set-disk-auto-delete example-instance \
  [--auto-delete|--no-auto-delete] \
  --disk example-disk

API

如果您使用的是 API,请对以下 URI 发出 POST 请求:

https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/example-instance/setDiskAutoDelete?deviceName=deviceName,autoDelete=true

如果您使用的是客户端库,请使用 instances().setDiskAutoDelete 方法:

def setAutoDelete(gce_service, auth_http):
  request = gce_service.instances().setDiskAutoDelete(project=example-project, zone=us-central1-f, deviceName=my-new-device, instance=example-instance, autoDelete=True)
  response = request.execute(http=auth_http)

  print response

在多个实例之间共享一个区域永久性磁盘

您可以在只读模式下将非启动永久性磁盘挂接到多个虚拟机实例,如此便可在多个实例之间共享静态数据。在多个实例之间共享一个永久性磁盘上的静态数据,要比将数据复制到这些实例各自独有的磁盘上便宜。

如果您将一个永久性磁盘挂接到多个实例,则这些实例全部都必须在只读模式下挂接该永久性磁盘。不能在读写模式下将永久性磁盘挂接到多个实例。如果您需要在多个实例之间共享动态存储空间,则可以使用以下任一选项:

如果您的一个永久性磁盘包含您想要在多个实例之间共享的数据,请将该磁盘与任何读写实例分离,并在只读模式下将该磁盘挂接到一个或多个实例。

控制台

  1. 转到虚拟机实例页面,查看项目中的实例列表。

    转到“实例”页面

  2. 名称列中,点击要在其中挂接磁盘的实例的名称。虚拟机实例详情页面随即打开。

  3. 在“实例详情”页面上,点击修改

  4. 额外磁盘部分,点击以下任一选项:

    1. 添加磁盘,以将设为只读模式的磁盘添加到实例。
    2. 附加现有磁盘,以选择现有磁盘,并在只读模式下将其挂接到您的实例。
  5. 为您的磁盘指定其他选项。

  6. 点击完成以应用更改。

  7. 点击保存以将更改应用于实例。

  8. 连接到实例并装载磁盘。

  9. 重复此过程,以在只读模式下将磁盘添加到其他实例。

gcloud

gcloud 工具中,使用 compute instances attach-disk 命令并用 ro 选项指定 --mode 标志。

gcloud compute instances attach-disk INSTANCE_NAME \
  --disk DISK_NAME \
  --mode ro

替换以下内容:

  • INSTANCE_NAME:您要在其中挂接地区永久性磁盘的实例的名称
  • DISK_NAME:您要挂接的磁盘的名称

挂接磁盘后,连接到实例并装载磁盘。

对您要在其中以只读模式添加此磁盘的每个实例重复此命令。

API

在 API 中,构建对 compute.instances.attachDisk 方法的 POST 请求。在请求正文中,将 mode 参数指定为 READ_ONLY

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/attachDisk

{
 "source": "zones/ZONE/disks/DISK_NAME",
 "mode": "READ_ONLY"
}

替换以下内容:

  • INSTANCE_NAME:您要在其中挂接区域永久性磁盘的实例的名称。
  • PROJECT_ID:您的项目 ID。
  • ZONE:您的磁盘所在的区域。
  • DISK_NAME:您要挂接的磁盘的名称。

挂接磁盘后,连接到实例并装载磁盘。

对您要在其中以只读模式添加此磁盘的每个实例重复此请求。

更改永久性磁盘的类型

永久性磁盘的价格性能取决于永久性磁盘的类型。请使用快照更改永久性磁盘的类型。例如,如需将标准永久性磁盘更改为 SSD 永久性磁盘,请执行以下过程:

控制台

  1. 创建标准永久性磁盘的快照
  2. 根据快照创建新的永久性磁盘。从类型下拉列表中选择“SSD 永久性磁盘”。

gcloud

  1. 创建标准永久性磁盘的快照
  2. 根据快照创建新的永久性磁盘。添加 --type 标志并指定 pd-ssd

API

  1. 创建标准永久性磁盘的快照
  2. 根据快照创建新的永久性磁盘。 在 type 字段中,指定 "zones/ZONE/diskTypes/pd-ssd" 并将 ZONE 替换为您的实例和新磁盘所在的区域。

后续步骤