区域级 Persistent Disk 和 Hyperdisk Balanced 高可用性 是存储选项,可让您在 Compute Engine 中实现高可用性 (HA) 服务。区域级 Persistent Disk 和 Hyperdisk Balanced 高可用性可在同一区域中的两个可用区之间同步复制数据,并在遇到一个可用区级故障时确保磁盘数据的高可用性。 区域级磁盘可以是启动磁盘,也可以是非启动磁盘。
本文档介绍了如何为区域性磁盘执行以下任务:
- 创建区域级磁盘。
- 将区域级磁盘挂接到 Compute Engine 实例。
- 将可用区磁盘更改为区域磁盘。
- 创建具有区域性磁盘的新实例。
- 将区域级磁盘用作新实例的启动磁盘。
- 将区域级启动磁盘挂接到实例。
- 列出和描述您的区域磁盘。
- 调整区域磁盘的大小。
准备工作
- 查看不同类型的磁盘存储方案之间的差异。
- 查看同步磁盘复制的基础知识。
- 了解区域磁盘故障切换。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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.
-
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) -
如需连接到可以作为服务账号运行的实例:Service Account User (v1) (
roles/iam.serviceAccountUser
) -
compute.disks.create
-
compute.instances.attachDisk
-
compute.disks.use
-
创建磁盘的快照:
compute.disks.createSnapshot
-
查看磁盘的详细信息:
compute.disks.get
-
获取磁盘列表:
compute.disks.list
-
更改磁盘大小:
compute.disks.update
- 墨西哥、大阪和蒙特利尔有三个可用区,位于一个或两个 物理数据中心内。 由于这些区域存储的数据可能会在数据中心遭到破坏的少见情况下丢失,您可能需要考虑将业务关键数据备份到第二个区域,以提高数据保护能力。
- 您只能将区域级永久性磁盘挂接到使用 E2、N1、N2 和 N2D 机器类型的虚拟机。
- 您只能将 Hyperdisk Balanced 高可用性挂接到支持的机器类型。
- 您无法通过映像或通过映像创建的磁盘创建区域级永久性磁盘。
- 使用只读模式时,您最多可以将一个区域级平衡永久性磁盘挂接到 10 个虚拟机实例。
- 区域级标准永久性磁盘的大小下限为 200 GiB。
- 您只能增加 区域级 Persistent Disk 或Hyperdisk Balanced 高可用性卷的大小;而无法减小其大小。
- 区域级 Persistent Disk 和 Hyperdisk Balanced 高可用性卷与其对应的可用区级磁盘具有不同的性能特征。如需了解详情,请参阅块存储性能。
- 您无法将处于多写入者模式的 Hyperdisk Balanced 高可用性卷用作启动磁盘。
- 如果您通过克隆可用区级磁盘来创建复制磁盘,则两个可用区级副本在创建时不会完全同步。创建后,您一般可以在 3 分钟内使用区域级磁盘克隆。不过,您可能需要等待几十分钟,磁盘才会完全复制,恢复点目标 (RPO) 才会接近于零。了解如何检查复制磁盘是否已完全复制。
- 创建具有区域级启动磁盘的新实例。
- 创建区域启动磁盘,然后将其挂接到实例:
- 通过启动磁盘的快照创建区域磁盘。
- 将区域级启动磁盘挂接到实例。
在 Google Cloud 控制台中,转到磁盘页面。
选择所需项目。
点击创建磁盘。
指定磁盘的名称。
在位置部分,选择区域级。
选择区域和可用区。您必须选择与创建实例时选择的相同区域。
选择同一区域中的副本可用区。记下所选的地区,因为您必须将磁盘挂接到位于其中一个地区的实例。
选择磁盘来源类型。
选择磁盘类型和大小。
点击创建以完成磁盘的创建。
DISK_NAME
:新磁盘的名称DISK_SIZE
:新磁盘的大小(以 GB 为单位)DISK_TYPE
:对于区域级 Persistent Disk,这是区域磁盘的类型。默认值为pd-standard
。 对于 Hyperdisk,请指定值hyperdisk-balanced-high-availability
。REGION
:区域磁盘将驻留的区域,例如europe-west1
ZONE1
和ZONE2
:两个磁盘副本所在区域内的可用区,例如europe-west1-b,europe-west1-c
DISK_ACCESS_MODE
:可选:实例如何访问磁盘上的数据。支持的值包括:READ_WRITE_SINGLE
,用于从一个实例进行读写权限。这是默认的。READ_WRITE_MANY
,用于从多个实例进行读写权限。
您只能为 Hyperdisk Balanced 高可用性磁盘设置访问模式。
PROJECT_ID
:您的项目 IDREGION
:区域磁盘将驻留的区域,例如europe-west1
DISK_NAME
:新磁盘的名称ZONE1
和ZONE2
:新磁盘副本应位于的可用区DISK_SIZE
:新磁盘的大小(以 GB 为单位)DISK_TYPE
:对于区域级 Persistent Disk,这是永久性磁盘的类型。 对于 Hyperdisk,请指定值hyperdisk-balanced-high-availability
。DISK_ACCESS_MODE
:实例如何访问磁盘上的数据。支持的值包括:READ_WRITE_SINGLE
,用于从一个实例进行读写权限。这是默认的。READ_WRITE_MANY
,用于从多个实例进行读写权限。
您只能为 Hyperdisk Balanced 高可用性磁盘设置访问模式。
INSTANCE_NAME
:您要向其中添加区域性磁盘的实例的名称DISK_NAME
:您要挂接到实例的新磁盘的名称PROJECT_ID
:您的项目 IDZONE
:实例的位置INSTANCE_NAME
:您要向其中添加新区域性磁盘的实例的名称REGION
:区域级磁盘所在的区域DISK_NAME
:区域磁盘的名称- PRIMARY_INSTANCE_NAME:实例的名称
- ZONE:您要在其中创建实例的可用区的名称
- REGIONAL_DISK_NAME:区域磁盘的名称
- DISK_TYPE:要创建的磁盘类型,例如
hyperdisk-balanced-high-availability
或pd-balanced
- SNAPSHOT_NAME:您为启动磁盘创建的快照的名称
- REMOTE_ZONE:区域磁盘的备用可用区
PROJECT_ID
:您的项目 IDZONE
:要在其中创建实例的可用区的名称INSTANCE_NAME
:实例的名称BOOT_SNAPSHOT_NAME
:启动磁盘快照的名称REMOTE_ZONE
:区域级磁盘的远程可用区DISK_TYPE
:要创建的磁盘类型,例如hyperdisk-balanced-high-availability
或pd-balanced
- 将现有实例的启动磁盘替换为区域启动磁盘。
- 将区域级启动磁盘故障切换到在备份可用区中运行的热备用实例。为此,您需要将区域性磁盘作为启动磁盘挂接到实例。
- 停止实例。
gcloud compute instances stop INSTANCE_NAME --zone=ZONE
- 将当前启动磁盘与实例分离。
gcloud compute instances detach-disk INSTANCE_NAME \ --zone=ZONE --disk=CURRENT_BOOT_DEVICE_NAME
- 将区域级启动磁盘挂接到实例。
gcloud compute instances attach-disk INSTANCE_NAME \ --zone=ZONE \ --disk=REGIONAL_DISK_NAME \ --disk-scope=regional --force-attach \ --boot
重启实例。
gcloud compute instances start INSTANCE_NAME
INSTANCE_NAME
:您要将区域级启动磁盘挂接到的实例的名称ZONE
:实例所在的可用区CURRENT_BOOT_DEVICE_NAME
:实例正在使用的启动磁盘的名称。此名称通常与实例名称相同。REGIONAL_DISK_NAME
:您要作为启动磁盘挂接到实例的区域性磁盘的名称停止实例。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/stop
将当前启动磁盘与实例分离。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/detachDisk?deviceName=CURRENT_BOOT_DEVICE_NAME
将区域级启动磁盘挂接到实例。
构建一个向
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/regions/REGION/disks/REGIONAL_DISK_NAME", "boot": true }
重启实例。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/start
PROJECT_ID
:您的项目 IDINSTANCE_NAME
:您要将区域性磁盘挂接到的实例的名称ZONE
:实例所在的可用区CURRENT_BOOT_DEVICE_NAME
:实例正在使用的启动磁盘的名称。此名称通常与实例名称相同。REGION
:区域级磁盘所在的区域REGIONAL_DISK_NAME
:您要作为启动磁盘挂接到实例的区域性磁盘的名称- 磁盘 ID
- 磁盘名称
- 大小
- 磁盘类型
- 区域
- 可用区副本
- 如需查看特定区域和项目中的所有区域磁盘的详细信息,请执行以下操作:
- 构建对
compute.regionDisks.list
方法的GET
请求。 - 使用
gcloud compute disks list
命令并按区域过滤结果。
- 构建对
- 如需查看特定区域级磁盘的详细信息,请执行以下操作:
- 在运行
gcloud compute disks describe
命令时使用--region
标志,并指定磁盘的名称及其区域。 - 构建对
compute.regionDisks.get
方法的GET
请求。
- 在运行
- 区域永久性磁盘:增加永久性磁盘的大小
- Hyperdisk Balanced 高可用性:修改 Hyperdisk 卷
- 了解磁盘价格。
- 了解如何监控区域性磁盘的副本状态。
- 了解如何确定区域性磁盘的复制状态。
- 如需将只读数据存储在区域级永久性磁盘之外的位置,请参阅在计算实例之间共享 Persistent Disk 卷。
- 创建磁盘的快照。
- 了解计算实例的实例组。
- 了解如何在 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 时进行身份验证。
所需的角色和权限
如需获得创建区域性磁盘所需的权限,请让管理员向您授予项目的以下 IAM 角色:
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色包含创建区域性磁盘所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
创建区域性磁盘需要以下权限:
限制
关于将区域级磁盘用作实例的启动磁盘
在预配生产工作负载之前,您可以挂接区域级 Persistent Disk 或 Hyperdisk Balanced 高可用性磁盘作为提前预配的有状态工作负载的启动磁盘。区域级启动磁盘不适用于热备用,因为区域级启动磁盘无法同时挂接到两个计算实例。
您只能通过快照创建 区域级 Persistent Disk 或 Hyperdisk Balanced 高可用性卷;无法通过映像创建区域级磁盘。
如需将区域级磁盘用作实例的启动磁盘,请使用以下任一方法:
如果您需要将区域级启动磁盘故障切换到复制可用区中运行的备用实例,请按照将区域级启动磁盘挂接到实例中所述的步骤操作。
创建区域级磁盘
创建区域级 Persistent Disk 或 Hyperdisk Balanced 高可用性卷。该磁盘必须与您计划将其挂接到的计算实例位于同一区域。
如果您创建了 Hyperdisk Balanced 高可用性卷,还可以通过设置磁盘访问模式来允许不同的实例同时访问磁盘。如需了解详情,请参阅在实例之间共享磁盘。
对于区域性 Persistent Disk,如果您在 Google Cloud 控制台中创建磁盘,则默认磁盘类型为pd-balanced
。如果您使用 gcloud CLI 或 REST 创建磁盘,则默认磁盘类型为pd-standard
。控制台
gcloud
使用
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 --access-mode=DISK_ACCESS_MODE
替换以下内容:
Terraform
如需创建区域级 Persistent Disk 或 Hyperdisk Balanced 高可用性卷,您可以使用
google_compute_region_disk
资源。REST
如需创建区域级 Persistent Disk 或 Hyperdisk Balanced 高可用性卷,请构建一个向
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", "accessMode": "DISK_ACCESS_MODE" }
替换以下内容:
将区域磁盘附加到实例
对于非启动磁盘,创建区域级 Persistent Disk 或 Hyperdisk Balanced 高可用性卷后,您可以将其挂接到实例。实例必须与磁盘位于同一区域。
如需将区域级启动磁盘挂接到实例,请参阅将区域级启动磁盘挂接到实例。
如需将磁盘挂接到多个实例,请针对每个实例重复本部分中的过程。
控制台
gcloud
如需将区域磁盘挂接到正在运行或已停止的实例,请使用
compute instances attach-disk
命令并将--disk-scope
标志设置为regional
。gcloud compute instances attach-disk INSTANCE_NAME \ --disk=DISK_NAME \ --disk-scope=regional
替换以下内容:
Terraform
如需将区域级 Persistent Disk 或 Hyperdisk Balanced 高可用性卷挂接到实例,您可以使用
google_compute_attached_disk
资源。REST
如需将区域性磁盘挂接到正在运行或已停止的实例,请构建一个向
compute.instances.attachDisk
方法发出的POST
请求,并将网址添加到您创建的区域性磁盘中。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/attachDisk { "source": "/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME" }
替换以下内容:
对于非启动磁盘,创建空白地区性磁盘并将其挂接到实例后,您必须格式化并装载该磁盘,以便操作系统可以使用可用的存储空间。
将可用区磁盘更改为区域磁盘
如需将现有的可用区 Persistent Disk 转换为区域永久性磁盘,请克隆现有的可用区磁盘,以创建新的可用区磁盘。如需了解详情,请参阅通过可用区磁盘创建区域磁盘克隆。如需将 Hyperdisk 转换为区域级磁盘,请根据将可用区磁盘更改为 Hyperdisk Balanced 高可用性磁盘中所述的方法,根据现有磁盘的快照创建新的 Hyperdisk Balanced 高可用性磁盘。
使用区域级磁盘创建新实例
创建实例时,您可以根据需要将区域级 Persistent Disk 卷或Hyperdisk Balanced 高可用性卷作为额外磁盘进行添加。
如需在实例创建期间创建区域级 Persistent Disk 或Hyperdisk Balanced 高可用性卷并将其挂接到实例,请参阅以下任一内容:
创建具有区域级启动磁盘的新实例
设置高可用性计算实例时,您可以创建具有区域级启动磁盘的主实例。这样一来,如果发生可用区级服务中断,您就可以在辅助可用区中重启实例,而不是创建新实例。
在高可用性设置(其中启动设备是区域级磁盘)中,Google 建议您不要预先创建和启动备用实例。相反,在故障切换阶段,您可以在使用
forceAttach
选项创建备用实例时挂接现有区域级磁盘。如需创建具有区域级磁盘启动磁盘的实例,请使用以下任一方法:
gcloud
使用
gcloud compute instances create
命令创建实例,并使用--create-disk
标志指定区域磁盘。gcloud compute instances create PRIMARY_INSTANCE_NAME \ --zone=ZONE \ --create-disk=^:^name=REGIONAL_DISK_NAME:scope=regional:boot=true:type=DISK_TYPE:source-snapshot=SNAPSHOT_NAME:replica-zones=ZONE,REMOTE_ZONE
指定磁盘参数时,字符
^:^
指定参数之间的分隔符是英文冒号 (:
)。这样您可以在指定 replica-zones 参数时使用英文逗号 (,
)。替换以下内容:
REST
创建一个向
instances.insert
方法发出的POST
请求,并指定属性boot: 'true'
和replicaZones
。例如:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "INSTANCE_NAME", "disks": [{ "boot": true, "initializeParams": { "sourceSnapshot": "global/snapshots/BOOT_SNAPSHOT_NAME", "replicaZones": [ "projects/PROJECT_ID/zones/ZONE", "projects/PROJECT_ID/zones/REMOTE_ZONE" ], "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE" } }], "networkInterfaces": [ { "network": "global/networks/default" } ] }
请替换以下内容:
将区域级启动磁盘挂接到实例
请按照以下步骤操作:
这些步骤假定区域性磁盘和实例已存在。
gcloud
将上述命令中的变量替换为以下变量:
可选:如果您由于服务中断或故障而无法成功将区域级启动磁盘与主实例分离,请添加
--force-attach
标志。REST
将上述命令中的变量替换为以下变量:
可选:如果您由于服务中断或故障而无法成功将区域级启动磁盘与其最初挂接到的实例分离,请在请求正文中添加
"forceAttach": true
。列出和描述您的区域级磁盘
您可以查看已配置的所有区域性磁盘的列表,以及有关其属性的信息,包括:
如需查看有关区域级磁盘的详细信息,请使用以下命令:
调整区域级磁盘的大小
如果具有区域磁盘的实例需要额外的存储空间,您可以调整磁盘的大小。无论磁盘是否挂接到正在运行的实例,您都可以随时调整磁盘的大小。如果您需要将数据分别存储到多个不同的卷中,请为该实例创建多个辅助磁盘。对于高可用性平衡 Hyperdisk,您还可以提高磁盘的 IOPS 和吞吐量限制。
调整区域磁盘大小的命令与调整可用区磁盘大小的命令非常相似。不过,您必须为磁盘位置指定区域,而不是可用区。
您只能增加磁盘大小,而不能减小磁盘大小。如需减小磁盘大小,您必须创建较小的新磁盘。在删除较大的原始磁盘之前,您需要为这两个磁盘付费。
如需了解如何修改区域性磁盘,请参阅以下内容:
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-22。
-