区域级永久性磁盘是一种存储选项,可让您在 Compute Engine 中实现高可用性 (HA) 服务。区域级永久性磁盘可在同一区域中的两个可用区之间同步复制数据,并在遇到一个可用区级故障时确保磁盘数据的高可用性。您可以通过以下任一方式将区域级永久性磁盘与虚拟机搭配使用:
本文档介绍如何为区域级永久性磁盘执行以下任务:
- 创建和管理区域级永久性磁盘卷。
- 将区域级永久性磁盘卷添加到虚拟机。
准备工作
- 查看不同类型的永久性磁盘之间的差异。
- 查看区域级永久性磁盘的基础知识。
- 了解区域级永久性磁盘故障切换。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- 您只能将区域级永久性磁盘挂接到使用 E2、N1、N2 和 N2D 机器类型的虚拟机。
- 您无法通过映像创建区域级永久性磁盘。
- 使用只读模式时,您最多可以将一个区域级平衡永久性磁盘挂接到 10 个虚拟机实例。
- 区域级标准永久性磁盘的大小下限为 200 GiB。
- 您只能增加区域级永久性磁盘卷的容量,而不能减小其大小。
- 区域级永久性磁盘卷与可用区级永久性磁盘卷具有不同的性能特征。如需了解详情,请参阅块存储性能。
- 如果您通过克隆可用区级磁盘来创建区域级永久性磁盘,则两个可用区级副本在创建时不会完全同步。创建后,您一般可以在 3 分钟内使用区域级磁盘克隆。不过,您可能需要等待几十分钟,磁盘才会完全复制,恢复点目标 (RPO) 才会接近于零。了解如何检查区域级永久性磁盘是否已完全复制。
在 Google Cloud 控制台中,转到磁盘页面。
选择所需项目。
点击创建磁盘。
指定磁盘的名称。
在位置部分,选择区域级。
选择区域和可用区。您必须选择与创建虚拟机时选择的相同区域。
选择同一区域中的副本可用区。记下所选的可用区,因为您必须将磁盘挂接到位于其中一个可用区的虚拟机。
选择磁盘来源类型。
选择磁盘类型和大小。默认值为 100 GiB 平衡永久性磁盘。
点击创建以完成磁盘的创建。
如需将磁盘挂接到虚拟机,请进入虚拟机实例页面。
在名称列中,点击虚拟机的名称。
点击修改
。点击 +挂接现有磁盘。
选择要添加到虚拟机的区域级永久性磁盘。
如果您看到一条警告,指示所选磁盘已挂接到其他实例,请选中强制挂接磁盘复选框,将该磁盘强制挂接到当前正在修改的虚拟机。
如需详细了解强制挂接区域级永久性磁盘卷的应用场景,请参阅区域级永久性磁盘故障切换。
点击保存。
在修改虚拟机页面上,点击保存。
使用
compute disks create
命令创建区域级永久性磁盘卷。如果您需要使用区域 SSD 永久性磁盘以实现更高的吞吐量或 IOPS,请添加--type
标志并指定pd-ssd
。gcloud compute disks create DISK_NAME \ --size=DISK_SIZE \ --type=DISK_TYPE \ --region=REGION \ --replica-zones=ZONE1,ZONE2
请替换以下内容:
DISK_NAME
:新磁盘的名称DISK_SIZE
:新磁盘的大小(以 GB 为单位)DISK_TYPE
:永久性磁盘的类型。默认值为pd-standard
。REGION
:区域磁盘将驻留的区域,例如europe-west1
ZONE1
和ZONE2
:两个磁盘副本所在区域内的可用区,例如europe-west1-b,europe-west1-c
通过使用
compute instances attach-disk
命令并将--disk-scope
标志设置为regional
,将磁盘挂接到正在运行或已停止的虚拟机。gcloud compute instances attach-disk VM_NAME \ --disk=DISK_NAME \ --disk-scope=regional
请替换以下内容:
VM_NAME
:您要向其添加新区域级永久性磁盘卷的虚拟机的名称DISK_NAME
:您要挂接到虚拟机的新磁盘的名称
如需创建区域级永久性磁盘卷,请构建一个向
compute.regionDisks.insert
方法发出的POST
请求。如需创建空白磁盘,请勿指定任何映像或快照来源。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks { "name": "DISK_NAME", "region": "projects/PROJECT_ID/regions/REGION", "replicaZones": [ "projects/PROJECT_ID/zones/ZONE1", "projects/PROJECT_ID/zones/ZONE2" ], "sizeGb": "DISK_SIZE", "type": "projects/PROJECT_ID/regions/REGION/diskTypes/DISK_TYPE" }
请替换以下内容:
PROJECT_ID
:您的项目 IDREGION
:区域磁盘将驻留的区域,例如europe-west1
DISK_NAME
:新磁盘的名称ZONE1
和ZONE2
:新磁盘副本应位于的可用区DISK_SIZE
:新磁盘的大小(以 GB 为单位)DISK_TYPE
:永久性磁盘的类型。默认值为pd-standard
。
如需挂接磁盘,请构建一个向
compute.instances.attachDisk
方法发出的POST
请求,并将网址添加到您创建的永久性磁盘卷中。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/attachDisk { "source": "/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME" }
请替换以下内容:
PROJECT_ID
:您的项目 IDZONE
:您的虚拟机的位置VM_NAME
:您要向其添加新永久性磁盘卷的虚拟机的名称REGION
:区域级磁盘所在的区域DISK_NAME
:新磁盘的名称
- 通过快照创建区域级磁盘。
- 按照以下说明将该磁盘作为启动磁盘挂接。
- 将 PRIMARY_INSTANCE_NAME 替换为虚拟机名称
- 将 ZONE 替换为要创建虚拟机的可用区的名称
- 将 REPD_DISK_NAME 替换为区域级永久性磁盘的名称
- 将 SNAPSHOT_NAME 替换为您为启动磁盘创建的快照的名称
- 将 REMOTE_ZONE 替换为区域级永久性磁盘的备用可用区
PROJECT_ID
:您的项目 IDZONE
:要创建虚拟机的可用区的名称VM_NAME
:虚拟机的名称BOOT_SNAPSHOT_NAME
:启动磁盘快照的名称REMOTE_ZONE
:区域级永久性磁盘的远程可用区- 将
STANDBY_VM_NAME
替换为备用虚拟机的名称 - 将
ZONE
替换为将区域级永久性磁盘复制到的可用区的名称 - 将
DISK_NAME
替换为您要挂接的区域级永久性磁盘的名称。 - 停止虚拟机。
gcloud compute instances stop STANDBY_VM_NAME --zone=ZONE
- 将当前启动磁盘与虚拟机分离。
gcloud compute instances detach-disk STANDBY_VM_NAME
--zone=ZONE --disk=CURRENT_BOOT_DEVICE_NAME - 将区域级 Persistent Disk 永久性磁盘挂接到虚拟机。
gcloud compute instances attach-disk STANDBY_VM_NAME
--zone=ZONE
--disk=REPD_DISK_NAME
--disk-scope=regional --force-attach 重启虚拟机。
gcloud compute instances start STANDBY_VM_NAME
STANDBY_VM_NAME
:您要将区域级永久性磁盘挂接到的虚拟机的名称ZONE
:虚拟机所在的可用区CURRENT_BOOT_DEVICE_NAME
:虚拟机正在使用的启动磁盘的名称。此名称通常与虚拟机名称相同。REPD_DISK_NAME
:您要作为启动磁盘挂接到虚拟机的区域级永久性磁盘的名称停止虚拟机。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/STANDBY_VM_NAME/stop
将当前启动磁盘与虚拟机分离。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/STANDBY_VM_NAME/detachDisk?deviceName=CURRENT_BOOT_DEVICE_NAME
将区域级永久性磁盘挂接到虚拟机。
构建一个向
compute.instances.attachDisk
方法发出的POST
请求,并在其中添加区域级永久性磁盘卷的网址:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/STANDBY_VM_NAME/attachDisk { "source": "compute/v1/projects/PROJECT_ID/regions/REGION/disks/REPD_DISK_NAME", "boot": true }
重启虚拟机。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/STANDBY_VM_NAME/start
PROJECT_ID
:您的项目 IDSTANDBY_VM_NAME
:您要将区域级永久性磁盘挂接到的虚拟机的名称ZONE
:虚拟机所在的可用区CURRENT_BOOT_DEVICE_NAME
:虚拟机正在使用的启动磁盘的名称。此名称通常与虚拟机名称相同。REGION
:区域级永久性磁盘所在的区域。REPD_DISK_NAME
:您要作为启动磁盘挂接到虚拟机的区域级永久性磁盘的名称- 磁盘 ID
- 磁盘名称
- 大小
- 磁盘类型
- 区域
- 可用区副本
- 如需查看特定区域和项目中的所有区域永久性磁盘卷的详细信息,请使用
compute.regionDisks.list
方法。 - 如需查看特定区域级永久性磁盘卷的详细信息,请在运行
gcloud compute disks describe
命令时使用--region
标志,并指定磁盘的名称及其区域。 在 Google Cloud 控制台中,转到磁盘页面。
选择要调整大小的磁盘。
点击页面顶部的修改。
输入磁盘的大小(以 GB 为单位)。
点击保存以完成磁盘大小调整。
DISK_NAME
:您要调整大小的磁盘的名称REGION
:磁盘所在的区域DISK_SIZE
:磁盘的新大小(以 GB 为单位)。PROJECT_ID
:您的项目 IDREGION
:磁盘所在的区域DISK_NAME
:您要调整大小的磁盘的名称DISK_SIZE
:磁盘的新大小(以 GB 为单位)。- 将您的虚拟机连接到 Cloud Storage。
- 将您的虚拟机连接到 Filestore。
- 在 Compute Engine 上创建网络文件服务器。
在 Google Cloud 控制台中,前往虚拟机实例页面。
点击要向其挂接磁盘的虚拟机的名称。“虚拟机实例详情”页面随即打开。
点击页面顶部的修改。
在额外磁盘部分中,点击挂接现有磁盘。
选择列表中的区域永久性磁盘。
在模式部分中,选择只读。
点击完成。
在页面的底部,点击保存以将更改应用于虚拟机。
VM_NAME
:您要挂接永久性磁盘的虚拟机的名称DISK_NAME
:您要挂接的磁盘的名称PROJECT_ID
:您的项目 IDZONE
:虚拟机所在的区域VM_NAME
:您要挂接永久性磁盘的虚拟机的名称。REGION
:磁盘所在的区域DISK_NAME
:您要挂接大小的磁盘的名称- 了解永久性磁盘的价格。
- 创建永久性磁盘的快照。
- 了解实例组或虚拟机实例组。
- 在 Google Cloud 上构建可扩缩的弹性 Web 应用。
- 参阅 Google Cloud 灾难恢复实战宝典。
- 了解如何监控区域永久性磁盘卷的副本状态。
- 了解如何确定区域级永久性磁盘的复制状态。
Terraform
如需在本地开发环境中使用本页面上的 Terraform 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
限制
创建具有区域级永久性磁盘的新虚拟机
创建虚拟机时,您可以根据需要将区域级永久性磁盘卷作为额外磁盘进行添加。
如需在创建虚拟机期间创建区域级永久性磁盘卷并将其挂接到虚拟机,请参阅创建具有额外的非启动磁盘的虚拟机实例或创建新的实例模板。
将区域级永久性磁盘卷添加到虚拟机
创建区域级永久性磁盘卷,并将其挂接到虚拟机。虚拟机必须与您的磁盘位于同一区域。
如果您在 Google Cloud 控制台中创建磁盘,则默认磁盘类型为
pd-balanced
。如果您使用 gcloud CLI 或 REST 创建磁盘,则默认磁盘类型为pd-standard
。控制台
您必须先创建区域级永久性磁盘卷,然后将其挂接到现有虚拟机实例。您不能将区域级永久性磁盘卷作为启动磁盘进行创建,因为故障切换期间无法强制挂接此类磁盘。
创建区域级永久性磁盘卷
将区域级永久性磁盘卷挂接到虚拟机
gcloud
使用 Google Cloud CLI 创建并挂接区域级永久性磁盘卷:
Terraform
如需创建区域级永久性磁盘卷,您可以使用
google_compute_region_disk
资源。REST
创建新磁盘并将其挂接到虚拟机后,必须格式化并装载磁盘,以便操作系统可以使用可用的存储空间。
将区域级永久性磁盘用作虚拟机启动磁盘
在预配生产工作负载之前,挂接区域级永久性磁盘作为提前预配的有状态工作负载的启动磁盘。区域级永久性磁盘不适用于热备用,因为区域级启动磁盘无法同时挂接到两个虚拟机。
您只能通过快照创建区域级永久性磁盘;无法通过映像创建区域级永久性磁盘。
如需将区域级永久性磁盘用作虚拟机启动磁盘,请执行以下操作:
创建具有区域级永久性磁盘启动磁盘的新虚拟机
设置高可用性虚拟机时,您可以创建具有区域级永久性磁盘启动磁盘的主虚拟机。这样,您就可以在发生区域服务中断时重启虚拟机。
在高可用性设置(其中启动设备是区域级永久性磁盘)中,Google 建议您不要预先创建和预先运行备用实例。相反,在故障切换阶段,您可以在使用
forceAttach
选项创建备用实例时挂接现有区域级磁盘。如需创建具有区域级永久性磁盘启动磁盘的虚拟机,请运行以下命令:
gcloud
gcloud compute instances create PRIMARY_INSTANCE_NAME \ --zone=ZONE \ --create-disk=^:^name=REPD_DISK_NAME:scope=regional:boot=true:source-snapshot=SNAPSHOT_NAME:replica-zones=ZONE,REMOTE_ZONE
指定磁盘参数时,字符
^:^
指定参数之间的分隔符是英文冒号 (:
)。这样您可以在指定 replica-zones 参数时使用英文逗号 (,
)。替换以下内容:
REST
如需在虚拟机创建期间创建具有区域级磁盘的新虚拟机,请指定
boot: 'true'
和replicaZones
。例如:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "disks": [{ "boot": true, "initializeParams": { "sourceSnapshot": "global/snapshots/BOOT_SNAPSHOT_NAME", "replicaZones": [ "projects/PROJECT_ID/zones/ZONE", "projects/PROJECT_ID/zones/REMOTE_ZONE"] } }], }
请替换以下内容:
如需在故障切换可用区中创建第二个虚拟机,以恢复将区域级永久性磁盘用作启动磁盘的主虚拟机,请运行以下命令:
gcloud
gcloud compute instances create STANDBY_VM_NAME \ --zone=ZONE \ --disk=boot=yes,name=DISK_NAME,scope=regional,force-attach=true
请替换以下内容:
可选:如果您由于服务中断或故障而无法成功将区域级永久性磁盘启动磁盘与其最初挂接到的虚拟机分离,请添加
force-attach=true
。将区域级永久性磁盘作为启动磁盘挂接到现有虚拟机
请按照以下步骤将区域级永久性磁盘作为启动磁盘挂接到虚拟机,从而故障切换到在备份可用区中运行的辅助虚拟机。这些步骤假定您已通过标准快照创建区域级永久性磁盘。
gcloud
将上述命令中的变量替换为以下变量:
可选:如果您由于服务中断或故障而无法成功将区域级永久性磁盘启动磁盘与其最初挂接到的虚拟机分离,请添加
--force-attach
标志。REST
将上述命令中的变量替换为以下变量:
可选:如果您由于服务中断或故障而无法成功将区域级永久性磁盘启动磁盘与其最初挂接到的虚拟机分离,请在请求正文中添加
"forceAttach": true
。列出和描述您的区域永久性磁盘卷
您可以查看已配置的所有区域永久性磁盘卷的列表,以及有关其属性的信息,包括:
如需查看有关区域级永久性磁盘卷的详细信息,请使用以下选项之一:REST 和 gcloud CLI。
调整区域永久性磁盘的大小
如果带有区域永久性磁盘的虚拟机需要增加存储空间、IOPS 或吞吐量,您可以调整磁盘的大小。如果需要将数据分别存储到多个唯一卷中,请为虚拟机创建多个辅助磁盘。无论磁盘是否附加到正在运行的虚拟机,您都可以随时调整磁盘的大小。
调整区域永久性磁盘大小的命令与调整标准永久性磁盘大小的命令完全相同,但是前者包含一个对应于区域的附加标志。
您只能增加磁盘大小,而不能减小磁盘大小。如需减小磁盘大小,您必须创建较小的新磁盘。在删除较大的原始磁盘之前,您需要为这两个磁盘付费。
控制台
调整区域永久性磁盘的大小。
磁盘列表中会显示新的磁盘大小。
gcloud
在 gcloud CLI 中,使用
compute disks resize
命令调整区域永久性磁盘的大小。gcloud compute disks resize DISK_NAME \ --region=REGION \ --size=DISK_SIZE
请替换以下内容:
Terraform
如需更改区域永久性磁盘的大小,您可以使用
google_compute_region_disk
资源并使用size
参数。如果添加
size
参数以及image
或snapshot
参数,则size
值必须大于或等于映像或快照的大小。如果省略
image
和snapshot
参数,则可以将size
参数设置为小于现有磁盘大小。如果您执行此操作,Terraform 会销毁该磁盘并新建一个空的永久性磁盘。在重新创建期间,Terraform 不会复制也未包含在 Terraform 配置中的其他数据,例如标签或快照时间表。为防止 Terraform 销毁并重新创建磁盘,您可以将lifecycle.prevent_destroy = true
设置添加到 Terraform 配置中。REST
如需调整区域级永久性磁盘的大小,请构建一个对
compute.regionDisks.resize
方法发出的POST
请求。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME/resize { "sizeGb": "DISK_SIZE" }
替换以下内容:
调整磁盘大小后,必须调整文件系统的大小,以便操作系统可以访问额外空间。
在多个虚拟机之间共享一个只读的永久性磁盘
您可以在只读模式下将非启动永久性磁盘挂接到多个虚拟机,如此便可在多个虚拟机之间共享静态数据。在多个虚拟机之间共享一个永久性磁盘上的静态数据,要比将数据复制到这些虚拟机各自独有的磁盘上便宜。
如果您需要在多个虚拟机之间共享动态存储空间,则可以使用以下任一选项:
如果您的一个永久性磁盘包含您想要在多个虚拟机之间共享的数据,请将该磁盘与任何读写虚拟机分离,并在只读模式下将该磁盘挂接到一个或多个虚拟机。
控制台
在多个虚拟机之间共享一个只读的永久性磁盘。
gcloud
在 gcloud CLI 中,通过使用
compute instances attach-disk
命令并将--disk-scope
标志设置为regional
以及将--mode
标志设置为ro
,以在多个虚拟机之间共享一个只读的永久性磁盘。gcloud beta compute instances attach-disk /VM_NAME \ --disk=DISK_NAME \ --disk-scope=regional \ --mode=ro
请替换以下内容:
REST
如需在多个虚拟机之间共享一个只读的永久性磁盘,请构建一个向
compute.instances.attachDisk
方法发出的POST
请求。在请求正文中,将mode
参数指定为READ_ONLY
。POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/attachDisk { "source": "regions/REGION/disks/DISK_NAME", "mode": "READ_ONLY" }
请替换以下内容:
挂接磁盘后,请连接到您要以只读模式挂接此磁盘的每个虚拟机,然后装载该磁盘。
将可用区永久性磁盘迁移到区域永久性磁盘
如需将现有的可用区永久性磁盘转换为区域永久性磁盘,请克隆现有的可用区磁盘,以创建新的可用区磁盘。如需了解详情,请参阅通过可用区磁盘创建区域磁盘克隆。
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-03。
-