您可以修改 Google Cloud Hyperdisk 卷的属性,以满足工作负载的需求。例如,您可以分别减少或增加预配 IOPS 或吞吐量以降低费用或提高性能。您可以通过设置 Hyperdisk ML 卷的访问模式来指定虚拟机访问卷中数据的方式。
本页面介绍如何修改 Hyperdisk 卷的容量、性能和其他设置。
准备工作
-
设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 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.
-
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) -
如需连接到可以作为服务账号运行的虚拟机:
Service Account User (v1) (
roles/iam.serviceAccountUser
) - 对于 Hyperdisk ML 卷,更改可能需要长达 20 分钟才能生效。
- 对于多写入者模式下的磁盘,如果您在进行更改时磁盘已挂接到多个虚拟机,则性能更改可能需要长达 6 小时才能生效。
- 如需设置磁盘的访问模式,必须将相应磁盘与所有虚拟机分离。
- 对于 Hyperdisk ML 卷,如果您将访问模式设置为只读,则无法将其重新设置为读写。
- 您无法为 Hyperdisk Throughput 卷和 Hyperdisk Extreme 卷设置访问模式。
通过同时更改多个属性,避免在修改磁盘时出现延迟。例如,如果您计划在短时间内同时更改磁盘大小和预配 IOPS,请在单个请求中进行这两项更改。
如果为磁盘的预配性能或大小选择新值,请注意,您在 4 到 6 小时内无法进行任何进一步更改。例如,假设您想将 500 GiB 的 Hyperdisk Balanced 卷的大小增加到 1 TiB。确保工作负载在接下来的 4 小时内不会需要超过 1 TiB 的磁盘空间,因为在 4 小时过去之前,您无法再次增加大小。
- 对于 Hyperdisk Balanced 卷或 Hyperdisk Balanced 高可用性(预览版)卷,您可以启用或停用多写入者模式。
- 对于 Hyperdisk ML 卷,您可以启用只读模式。
在 Google Cloud 控制台中,转到磁盘页面。
在项目的磁盘列表中,点击您要修改的 Hyperdisk 卷的名称。
在磁盘详情页面上,点击
修改。在访问模式字段中,选择您所需的访问模式:
- 如需启用只读模式,请选择从多个虚拟机进行只读。
- 如需启用多写入者模式,请选择从多个虚拟机进行读写
- (默认值)如需启用单写入者模式,请选择从单个虚拟机进行读写。
如需应用更改,请点击保存。
- DISK_NAME:您要修改的 Hyperdisk 卷的名称。
- DISK_ACCESS_MODE:虚拟机如何访问磁盘上的数据。支持的值为:
READ_ONLY_MANY
,用于从多个虚拟机进行只读访问。READ_WRITE_MANY
,表示从多个虚拟机进行读写访问。- (默认值)
READ_WRITE_SINGLE
,表示从一个虚拟机进行读写访问。
PROJECT_ID
:您的项目 ID。ZONE
:您的 Hyperdisk 卷所在的可用区。DISK_NAME
:要修改的 Hyperdisk 卷的名称。DISK_ACCESS_MODE
:虚拟机如何访问磁盘上的数据。支持的值为:READ_ONLY_MANY
,用于从多个虚拟机进行只读访问。READ_WRITE_MANY
,表示从多个虚拟机进行读写访问。READ_WRITE_SINGLE
,表示从一个虚拟机进行读写访问。
增加磁盘大小:
- 对于 Hyperdisk Throughput:每 6 小时一次
- 对于所有其他 Hyperdisk 类型:每 4 小时一次
修改预配 IOPS 或吞吐量:
- 对于 Hyperdisk ML:每 6 小时一次
- 对于所有其他 Hyperdisk 类型:每 4 小时一次
在 Google Cloud 控制台中,转到磁盘页面。
在项目的磁盘列表中,点击要更改其容量或预配性能的 Hyperdisk 卷的名称。
在“磁盘详情”页面上,点击修改。
- 在大小字段中,为磁盘输入新的大小。磁盘大小必须在支持的值范围内。
- 对于 Hyperdisk Extreme、平衡 Hyperdisk 和 Hyperdisk Balanced 高可用性:在预配的 IOPS 字段中,输入卷的新 IOPS 值。
- 对于 Hyperdisk Throughput、Hyperdisk ML、平衡 Hyperdisk 和 Hyperdisk Balanced 高可用性:在预配的吞吐量字段中,输入卷的新吞吐量值。
点击保存以将更改应用于磁盘。
- DISK_NAME:您要修改的 Hyperdisk 卷的名称。
- DISK_SIZE(可选):磁盘的新大小。该值必须是一个整数,后跟 GB 表示吉比字节,或 TB 表示太比字节。磁盘大小必须在支持的值范围内。
- REGION:可选。Hyperdisk Balanced 高可用性磁盘所在的区域
- IOPS_LIMIT(可选):Hyperdisk Extreme、平衡 Hyperdisk 和 Hyperdisk Balanced 高可用性卷的 IOPS 配置。该值必须在支持的值范围内。
- THROUGHPUT_LIMIT(可选):Hyperdisk Throughput、Hyperdisk ML、平衡 Hyperdisk 或 Hyperdisk Balanced 高可用性卷的吞吐量配置,以整数形式指定,表示吞吐量(以 MiB/秒为单位)。该值必须在支持的值范围内。
PROJECT_ID
:您的项目 ID。ZONE
:您的 Hyperdisk 卷所在的可用区。REGION
:对于 Hyperdisk Balanced 高可用性磁盘,这是磁盘所在的区域。DISK_NAME
:要修改的 Hyperdisk 卷的名称。DISK_SIZE
(可选):磁盘的新大小。该值必须是一个整数,后跟 GB 表示吉比字节,或 TB 表示太比字节。磁盘大小必须在支持的值范围内。IOPS_LIMIT
(可选):Hyperdisk Extreme、平衡 Hyperdisk 或 Hyperdisk Balanced 高可用性卷的 IOPS 配置。该值必须在支持的值范围内。THROUGHPUT_LIMIT
(可选):平衡 Hyperdisk、Hyperdisk ML、平衡 Hyperdisk 或 Hyperdisk Balanced 高可用性卷的吞吐量配置,以整数表示,表示吞吐量(以 MiB/秒为单位)。该值必须在支持的值范围内。启动磁盘:如果您使用的是自定义 Linux 映像或自定义 Windows 映像,则必须手动调整根的大小分区和文件系统。对于具有公共映像的虚拟机,Compute Engine 会在您增加启动磁盘的大小并重启虚拟机后自动调整根分区和文件系统的大小。
非启动磁盘:增加磁盘大小后,您必须扩展磁盘上的文件系统以使用增加的空间。
在 Google Cloud 控制台中,转到虚拟机实例页面。
点击挂接了新磁盘的实例旁的 SSH 按钮。浏览器会建立连到该实例的终端连接。
使用
df
和lsblk
命令列出文件系统的大小并查找磁盘的设备名称。$ sudo df -Th Filesystem Type Size Used Avail Use% Mounted on udev devtmpfs 3.9G 0 3.9G 0% /dev /dev/nvme0n1p1 ext4 9.7G 2.0G 7.2G 22% / /dev/nvme0n1p15 vfat 124M 12M 113M 10% /boot/efi /dev/nvme0n2 ext4 98G 24K 98G 1% /mnt/disks/data
$ sudo lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme0n1 259:0 0 20G 0 disk ├─nvme0n1p1 259:5 0 9.9G 0 part / ├─nvme0n1p14 259:6 0 3M 0 part └─nvme0n1p15 259:7 0 124M 0 part /boot/efi nvme0n2 259:4 0 100G 0 disk /mnt/disks/data
此示例包含以下磁盘:
- 启动磁盘:
/dev/nvme0n1p1
分区位于大小调整为 20 GB 的启动磁盘上。分区表和文件系统仅向操作系统提供 9.9 GB 的容量。 - 非启动数据磁盘:
/dev/nvme0n2
非启动数据磁盘没有分区表,但该磁盘上的文件系统可为操作系统提供 100 GB 的容量。此磁盘的装载目录为/mnt/disks/data
。
记下
df
命令输出中的 Type 列,该列表明磁盘使用的是ext4
还是xfs
文件系统。- 启动磁盘:
验证分区类型:
sudo parted -l
在调整磁盘大小后首次运行此命令时,您可能会看到类似以下内容的消息:
Warning: Not all of the space available to /dev/nvme0n1 appears to be used, you can fix the GPT to use all of the space (an extra 20971520 blocks) or continue with the current setting? Fix/Ignore?
如果输入
Fix
,操作系统将自动重新对磁盘进行分区,以向操作系统提供额外空间。如果您没有任何其他磁盘要修改,请跳到最后一步。如果您选择不使用自动修复选项或该选项不可用,请查看要重新分区的磁盘的信息:
sudo parted -l /dev/DEVICE_NAME
查找字段:Partition Table,如果值为
msdos
,则该磁盘具有 MBR 分区类型。这意味着此类磁盘的大小上限为 2 TB。对于启动磁盘,调整磁盘上的根分区和文件系统的大小。此示例假定虚拟机映像不支持自动根分区和文件系统大小调整。
使用
parted
调整根分区的大小。例如,以下命令会将设备的分区 1 扩展为可能的最大大小:在设备上打开
parted
:sudo parted /dev/DEVICE_NAME
在提示符处,输入:
(parted) resizepart
在
Partition number?
提示符处,输入:1
在
Warning: Partition /dev/DEVICE_NAMEp1 is being used. Are you sure you want to continue?
提示符处,输入:Yes
在
End?
提示符处,输入100%
在
(parted)
提示符处,输入:(parted) quit
使用
parted -l
查看新的分区表。sudo parted -l /dev/DEVICE_NAME Model: nvme_card-pd (nvme) Disk /dev/DEVICE_NAME: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 14 1049kB 4194kB 3146kB bios_grub 15 4194kB 134MB 130MB fat16 boot, esp 1 134MB 21.5GB 21.3GB ext4
扩展文件系统:
如果您使用的是
ext4
,请使用resize2fs
命令:sudo resize2fs /dev/DEVICE_NAME
如果您使用的是
xfs
,请使用xfs_growfs
命令:sudo xfs_growfs -d /
如果您使用的是 btrfs,请使用
btrfs
命令:sudo btrfs filesystem resize max /
对于非启动数据磁盘,调整磁盘上文件系统的大小。
如果您使用的是
ext4
,请使用resize2fs
命令扩展文件系统:sudo resize2fs /dev/DATA_DEVICE_NAME
将
DATA_DEVICE_NAME
替换为数据磁盘的设备名称。在此示例中,设备名称为/dev/nvme0n2
。如果您使用的是
xfs
,请使用xfs_growfs
命令扩展文件系统:sudo xfs_growfs MOUNT_DIR
如果您使用的是 btrfs,请使用
btrfs
命令扩展文件系统:sudo btrfs filesystem resize max MOUNT_DIR
将 MOUNT_DIR 替换为设备的装载点。您可以在
lsblk
命令的输出中找到MOUNTPOINT
列中列出的装载点。
使用
df
命令验证文件系统是否已扩展。例如:df -h /dev/DATA_DEVICE_NAME Filesystem Size Used Avail Use% Mounted on /dev/DATA_DEVICE_NAME 118G 70M 118G 1% MOUNT_DIR
在 Google Cloud 控制台中,转到虚拟机实例页面。
点击已调整大小的磁盘所属实例旁边的 RDP 按钮。浏览器会建立连到该实例的 RDP 连接。
右键点击 Windows“开始”按钮,然后选择磁盘管理以打开“磁盘管理”工具。
通过在 Powershell 中运行来显示磁盘分区类型:
在“分区样式”列下,如果值为 MBR,则磁盘具有 MBR 分区类型。这意味着此类磁盘的大小上限为 2 TB。Get-Disk
刷新“磁盘管理”工具,使其识别地区永久性磁盘上的额外空间。在“磁盘管理”窗口顶部,点击操作并选择刷新。
在已调整大小的磁盘上,右键点击已格式化的分区并选择扩展卷。
按照扩展卷向导中的说明扩展现有分区以包含额外的磁盘空间。如果现有分区已格式化为 NTFS,则分区大小上限受其集群大小设置的限制。
完成向导步骤并且完成卷格式化后,请检查所挂接磁盘列表中的
Status
列,以确保新磁盘的状态为Healthy
。- 详细了解 Hyperdisk。
- 了解如何分析 Hyperdisk 卷的当前 IOPS 级别。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
所需的角色和权限
如需获得修改 Hyperdisk 所需的权限,请让管理员向您授予项目的以下 IAM 角色:
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色可提供修改 Hyperdisk 所需的
compute.disks.update
权限。修改 Hyperdisk 概览
您可以更改 Hyperdisk 卷的访问模式、大小和性能特征。
Hyperdisk 卷支持的大小和性能更改
下表汇总了每种 Hyperdisk 类型支持的容量和性能更改。
Hyperdisk 类型 可自定义吞吐量 可自定义 IOPS 可在虚拟机之间共享 平衡 Hyperdisk 是 是 是 Hyperdisk Balanced 高可用性
(预览版)是 是 是 Hyperdisk Extreme 否 是 否 Hyperdisk ML 是 否 是,处于
只读模式Hyperdisk Throughput 是 否 否 创建或修改 Hyperdisk 卷时使用的值必须在每个磁盘的 Hyperdisk 限制中所述的最大值和最小值范围内。
如果您要修改挂接到虚拟机的 Hyperdisk 卷的大小,则新值不能超过每个虚拟机的 Hyperdisk 限制。
Hyperdisk 卷的预配 IOPS 和吞吐量必须遵循关于 Hyperdisk 的 IOPS 和吞吐量预配中所述的规则。
容量变化
您调整 Hyperdisk 卷的大小的方式,只能是增大它的大小。您无法减少 Hyperdisk 卷的容量。如果您要减小 Hyperdisk 卷的大小,则必须创建较小的卷,将数据从原始卷迁移到较小的卷,然后删除原始卷。
即使 Hyperdisk 卷挂接到正在运行的虚拟机,您也可以调整其大小。 但是,如果 Hyperdisk 卷处于多写入者模式,您必须先将该卷从所有虚拟机中分离,然后才能调整其大小。
您可以每 6 小时调整一次 Hyperdisk Throughput 卷的大小。对于所有其他 Hyperdisk 类型,您可以每 4 小时更改一次预配容量。
为获得最佳结果,请在更改 Hyperdisk 卷的容量时完成以下步骤:
效果变化
即使卷已挂接到正在运行的虚拟机,您也可以更改其预配性能。
更改预配的 IOPS 或吞吐量后,更改最多可能需要 15 分钟才能生效。但存在以下例外情况:
对于除 Hyperdisk ML 之外的所有 Hyperdisk 类型,您可以每 4 小时更改一次预配 IOPS 或吞吐量。您可以每 6 小时更改一次 Hyperdisk ML 卷的预配吞吐量。
更改 Hyperdisk 卷的预配 IOPS 或吞吐量不会删除或修改磁盘数据。
如果您尝试在指定限制内多次修改 Hyperdisk 卷,则会收到类似于这样的错误消息:
Cannot update provisioned throughput due to being rate limited.
访问模式更改
如需将单个 Hyperdisk 卷挂接到多个虚拟机,您必须将该卷的访问模式设置为只读模式或多写入者模式,具体取决于您的应用场景。
为磁盘停用多读取或多写入权限
如需对 Hyperdisk 卷执行某些操作,该卷必须处于单写入者模式。例如,您无法通过多写入者模式下的 Hyperdisk 卷创建映像或快照。您必须将该卷的访问模式设置为单写入者。
如需停用多读取或多写入权限,您必须将该卷从所有虚拟机中分离,然后按照设置访问模式中的说明操作。
限制
最佳做法
由于您必须在磁盘属性更改之间等待至少 4 小时,因此请遵循以下最佳实践:
设置 Hyperdisk 卷的访问模式
如需设置磁盘的访问模式,必须将相应磁盘与所有虚拟机分离。
您可以对 Hyperdisk 卷的访问模式进行以下更改:
将 Hyperdisk ML 卷的访问模式设置为只读后,您无法进行修改。
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST 设置访问模式。
控制台
gcloud
运行
disks update
命令并使用--access-mode
标志指定访问模式。gcloud compute disks update DISK_NAME \ --access-mode=DISK_ACCESS_MODE
替换以下内容:
REST
构建对
compute.disks.update
方法的PATCH
请求。在请求正文中,使用"accessMode"
参数设置访问模式。PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/update { "accessMode": "DISK_ACCESS_MODE" }
替换以下内容:
更改 Hyperdisk 卷的大小或预配性能
您可以使用以下时间限制增加卷大小并更改 Hyperdisk 卷的预配 IOPS 或吞吐量:
您可以使用 Google Cloud 控制台、gcloud CLI 或 REST 更改 Hyperdisk 卷的预配大小和性能。
控制台
gcloud
使用
disks update
命令并指定--size
、--provisioned-iops
或--provisioned-throughput
标志。如需更改 Hyperdisk Balanced 高可用性卷的大小,请添加
--region
标志。gcloud compute disks update DISK_NAME \ --size=DISK_SIZE \ [--region=REGION] \ --provisioned-iops=IOPS_LIMIT \ --provisioned-throughput=THROUGHPUT_LIMIT
替换以下内容:
REST
构建对
compute.disks.update
方法的PATCH
请求。在请求正文中,指定sizeGb
、provisionedIops
或provisionedThroughput
参数。PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME { "sizeGb": "DISK_SIZE, "provisionedIops": "IOPS_LIMIT", "provisionedThroughput": "THROUGHPUT_LIMIT" }
如需修改 Hyperdisk Balanced 高可用性卷,请构建一个向
compute.regionDisks.update
方法发出的PATCH
请求。PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME { "sizeGb": "DISK_SIZE, "provisionedIops": "IOPS_LIMIT", "provisionedThroughput": "THROUGHPUT_LIMIT" }
替换以下内容:
如果您尝试在指定限制内多次修改 Hyperdisk 卷的大小或性能,则会收到类似于
Cannot update provisioned throughput due to being rate limited
或Disk cannot be resized due to being rate limited
的错误消息。备份 Hyperdisk 卷
调整磁盘大小不会删除或修改磁盘数据,但最佳做法是,始终通过创建快照备份磁盘,然后再对文件系统或分区进行任何更改。
调整文件系统和分区的大小
增大 Hyperdisk 卷的大小后,您可能需要调整其文件系统和分区的大小:
以下示例展示了如何手动调整启动磁盘的根分区和文件系统的大小,以及如何手动调整无分区表的非启动数据磁盘的文件系统的大小。此示例假定挂接的磁盘之前已格式化并装载。
Linux 虚拟机
Windows 虚拟机
使用 Windows 磁盘管理实用程序调整 Windows 实例上的分区大小。
完成此过程后,您无需重启虚拟机。现在,您可以使用添加的磁盘空间来存储数据。
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-23。
-