您可以修改 Google Cloud Hyperdisk 磁碟區的屬性,以滿足工作負載需求。舉例來說,您可以分別減少或增加已配置的 IOPS 或吞吐量,以降低成本或提高效能。您可以設定磁碟區的存取模式,指定 VM 如何存取 Hyperdisk ML、Hyperdisk Balanced 和 Hyperdisk Balanced High Availability 磁碟區中的資料。
本頁說明如何修改 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
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
REST
To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
For more information, see Authenticate for using REST in the Google Cloud authentication documentation.
-
必要角色和權限
如要取得修改 Hyperdisk 所需的權限,請要求管理員授予您專案的下列 IAM 角色:
-
Compute 執行個體管理員 (v1) (
roles/compute.instanceAdmin.v1
) -
如要連線至可以服務帳戶形式執行的 VM,請按照下列步驟操作:
服務帳戶使用者 (v1) (
roles/iam.serviceAccountUser
)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這個預先定義的角色包含 compute.disks.update
權限,用於修改 Hyperdisk。
修改 Hyperdisk 的總覽
您可以變更 Hyperdisk 磁碟區的存取模式、大小和效能特徵。
Hyperdisk 磁碟區的支援大小和效能變更
下表概略說明每種 Hyperdisk 類型支援的容量和效能變更。
Hyperdisk 類型 | 可自訂的輸送量 | 可自訂的 IOPS | 可在 VM 之間共用 |
---|---|---|---|
Hyperdisk Balanced | 是 | 是 | 是 |
Hyperdisk Balanced High Availability |
是 | 是 | 是 |
Hyperdisk Extreme | 否 | 是 | 否 |
Hyperdisk ML | 是 | 否 | 是, 處於唯讀模式 |
Hyperdisk Throughput | 是 | 否 | 否 |
建立或修改 Hyperdisk 磁碟區時使用的值,必須落在 Hyperdisk 磁碟區限制中所述的最大值和最小值範圍內。
如果您要修改已連結至 VM 的 Hyperdisk 磁碟區大小,新值不得超過 每個 VM 的 Hyperdisk 限制。
Hyperdisk 磁碟區的已佈建 IOPS 和處理量必須遵循「 關於 Hyperdisk 的 IOPS 和處理量佈建」一文中所述的規則。
容量變更
您只能將 Hyperdisk 磁碟區的容量調大,您無法縮減 Hyperdisk 磁碟區的容量。如要縮小 Hyperdisk 磁碟區的大小,您必須建立較小的磁碟區,將資料從原始磁碟區遷移至較小的磁碟區,然後刪除原始磁碟區。
即使 Hyperdisk 磁碟區已連接至執行中的 VM,您仍可調整其大小。不過,如果 Hyperdisk 磁碟區處於多寫入模式,您必須先將磁碟區從所有 VM 中分離,才能調整磁碟區大小。
您每 6 小時可以調整一次 Hyperdisk Throughput 磁碟區的大小。對於所有其他 Hyperdisk 類型,您可以每 4 小時變更一次已配置的容量。
為獲得最佳結果,請在變更 Hyperdisk 磁碟區容量時完成下列步驟:
成效變化
即使已將磁碟區連接至執行中的 VM,您仍可以變更已配置的磁碟區效能。
變更已配置的 IOPS 或傳輸量後,變更可能需要 15 分鐘才會生效。不過,以下情況例外:
- 對於 Hyperdisk ML 磁碟區,變更最多可能需要 20 分鐘才會生效。
- 如果磁碟處於多重寫入模式,且在變更時已連接至多個 VM,則效能變更可能需要最多 6 小時才會生效。
您可以每 4 小時變更一次所有 Hyperdisk 類型的佈建 IOPS 或輸送量,但 Hyperdisk ML 除外。您每 6 小時可以變更一次 Hyperdisk ML 磁碟區的佈建輸送量。
變更 Hyperdisk 磁碟區的已配置 IOPS 或傳輸量,不會刪除或修改磁碟資料。
如果您嘗試在指定限制內修改 Hyperdisk 磁碟區超過一次,就會收到類似 Cannot update provisioned throughput due to being rate limited.
的錯誤訊息。
存取模式變更
如要將單一 Hyperdisk 磁碟區附加至多個 VM,您必須根據用途將磁碟區的存取模式設為唯讀或多重寫入模式。
停用磁碟的多重讀取或多重寫入存取權
如要對 Hyperdisk 磁碟區執行特定動作,該磁碟區必須處於單一寫入者模式。舉例來說,您無法在多寫模式下,從 Hyperdisk 磁碟區建立映像檔或快照。您必須將其存取模式設為單一寫入者。
如要停用多重讀取或多重寫入存取權,您必須將其從所有 VM 中卸離,然後按照「設定存取模式」中的操作說明進行。
限制
- 如要設定磁碟的存取模式,必須先將磁碟從所有 VM 中解除連結。
- 對於 Hyperdisk ML 磁碟區,如果您將存取模式設為唯讀,就無法將其改回讀寫模式。
- 您無法為 Hyperdisk Throughput 和 Hyperdisk Extreme 磁碟區設定存取模式。
最佳做法
由於您必須等待至少 4 小時,才能變更磁碟屬性,因此請遵循下列最佳做法:
請避免同時變更多個屬性,以免延遲修改磁碟。舉例來說,如果您打算在短時間內同時變更磁碟大小和已配置的 IOPS,請在單一要求中進行這兩項變更。
選擇磁碟的已配置效能或大小的新值時,請注意,您在 4 到 6 小時內無法再進行任何變更。舉例來說,假設您想將 500 GiB Hyperdisk Balanced 磁碟區的大小增加到 1 TiB。請確認工作負載在接下來 4 小時內不會需要超過 1 TiB 的磁碟空間,因為 4 小時過後才能再次增加大小。
設定 Hyperdisk 磁碟區的存取模式
如要設定磁碟的存取模式,必須先將磁碟從所有 VM 中解除連結。
您可以對 Hyperdisk 磁碟區的存取模式進行下列變更:
- 針對 Hyperdisk Balanced 和 Hyperdisk Balanced High Availability 磁碟區,您可以啟用或停用多寫模式。
- 對於 Hyperdisk ML 磁碟區,您可以啟用唯讀模式。
將 Hyperdisk ML 磁碟區設為唯讀後,就無法再修改存取模式。
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST 設定存取模式。
主控台
前往 Google Cloud 控制台的「磁碟」頁面。
在專案的磁碟清單中,按一下要修改的 Hyperdisk 磁碟區名稱。
在磁碟詳細資料頁面上,按一下
「Edit」(編輯)。在「存取模式」欄位中,選取所需的存取模式:
- 如要啟用唯讀模式,請選取「以唯讀模式連接多個 VM」。
- 如要啟用多重寫入模式,請選取「以讀寫模式連接多個 VM」
- (預設) 如要啟用單一寫入者模式,請選取「以讀寫模式連接單一 VM」。
如要套用變更,請按一下「儲存」。
gcloud
執行 disks update
指令,並使用 --access-mode
旗標指定存取模式。
gcloud compute disks update DISK_NAME \ --access-mode=DISK_ACCESS_MODE
更改下列內容:
- DISK_NAME:您要修改的 Hyperdisk 磁碟區名稱。
- DISK_ACCESS_MODE:VM 如何存取磁碟上的資料。支援的值如下:
READ_ONLY_MANY
,可讓多個 VM 存取唯讀資料。READ_WRITE_MANY
,用於從多個 VM 進行讀寫存取。- (預設)
READ_WRITE_SINGLE
,用於從單一 VM 存取讀寫權限。
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" }
更改下列內容:
PROJECT_ID
:您的專案 ID。ZONE
:Hyperdisk 磁碟區所在的可用區。DISK_NAME
:要修改的 Hyperdisk 磁碟區名稱。DISK_ACCESS_MODE
:VM 如何存取磁碟上的資料。支援的值如下:READ_ONLY_MANY
,可讓多個 VM 存取唯讀資料。READ_WRITE_MANY
,用於從多個 VM 進行讀寫存取。READ_WRITE_SINGLE
,用於從單一 VM 存取讀寫權限。
變更 Hyperdisk 磁碟區的大小或已配置的效能
您可以增加磁碟區大小,並變更 Hyperdisk 磁碟區的已配置 IOPS 或總處理量,但須遵守下列時間限制:
增加磁碟大小:
- 處理量超磁碟:每 6 小時一次
- 所有其他 Hyperdisk 類型:每 4 小時一次
修改已佈建的 IOPS 或處理量:
- Hyperdisk ML:每 6 小時一次
- 所有其他 Hyperdisk 類型:每 4 小時一次
您可以使用 Google Cloud 控制台、gcloud CLI 或 REST,變更 Hyperdisk 磁碟區的佈建大小和效能。
主控台
前往 Google Cloud 控制台的「磁碟」頁面。
在專案的磁碟清單中,按一下要變更容量或已配置效能的 Hyperdisk 磁碟區名稱。
在磁碟詳細資料頁面上,按一下「編輯」。
- 在「Size」(大小) 欄位中輸入磁碟的新大小。磁碟大小必須在支援的值範圍內。
- 針對 Hyperdisk Extreme、Hyperdisk Balanced 和 Hyperdisk Balanced High Availability:在「已佈建 IOPS」欄位中,輸入磁碟區的新 IOPS 值。
- 針對 Hyperdisk 處理量、Hyperdisk ML、Hyperdisk Balanced 和 Hyperdisk Balanced High Availability:在「佈建輸送量」欄位中,輸入磁碟區的新處理量值。
按一下「儲存」,將變更套用至磁碟。
gcloud
使用 disks update
指令,並指定 --size
、--provisioned-iops
或 --provisioned-throughput
旗標。
如要變更 Hyperdisk 平衡高可用性磁碟區的大小,請加入 --region
旗標。
gcloud compute disks update DISK_NAME \ --size=DISK_SIZE \ [--region=REGION] \ --provisioned-iops=IOPS_LIMIT \ --provisioned-throughput=THROUGHPUT_LIMIT
更改下列內容:
- DISK_NAME:您要修改的 Hyperdisk 磁碟區名稱。
- DISK_SIZE:選用:磁碟的新大小。這個值必須是整數,後面加上大小單位,例如 GB 代表千兆位元組,或 TB 代表兆位元組。磁碟大小必須在支援的值範圍內。
- REGION:選用。Hyperdisk 平衡高可用性磁碟所在的區域
- IOPS_LIMIT:選用:Hyperdisk Extreme、Hyperdisk Balanced 和 Hyperdisk Balanced High Availability 磁碟區的 IOPS 設定。值必須在支援的值範圍內。
- THROUGHPUT_LIMIT:選用:Hyperdisk Throughput、Hyperdisk ML、Hyperdisk Balanced 或 Hyperdisk Balanced High Availability 磁碟區的處理量設定,以整數指定,代表以每秒 MiB 為單位的處理量。值必須在支援的值範圍內。
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 High Availability 磁碟區,請對 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" }
更改下列內容:
PROJECT_ID
:您的專案 ID。ZONE
:Hyperdisk 磁碟區所在的可用區。REGION
:對於 Hyperdisk Balanced High Availability 磁碟,這是磁碟所在的區域。DISK_NAME
:要修改的 Hyperdisk 磁碟區名稱。DISK_SIZE
:選用:磁碟的新大小。這個值必須是整數,後面加上大小單位,例如 GB 代表千兆位元組,或 TB 代表兆位元組。磁碟大小必須在支援的值範圍內。IOPS_LIMIT
:選用:Hyperdisk Extreme、Hyperdisk Balanced 或 Hyperdisk Balanced High Availability 磁碟區的 IOPS 設定。值必須在支援的值範圍內。THROUGHPUT_LIMIT
:選用:Hyperdisk Balanced、Hyperdisk ML、Hyperdisk Balanced 或 Hyperdisk Balanced High Availability 磁碟區的輸送量設定,以整數指定,代表以每秒 MiB 為單位的輸送量。值必須在支援的值範圍內。
如果您嘗試在指定限制內修改 Hyperdisk 磁碟區的大小或效能,系統會顯示 Cannot update provisioned throughput due to being rate limited
或 Disk cannot be resized due to being rate limited
等錯誤訊息。
備份 Hyperdisk 磁碟區
調整磁碟大小不會刪除或修改磁碟資料,但建議您先建立快照,再進行任何檔案系統或分區變更,以便備份磁碟。
調整檔案系統和分區大小
增加 Hyperdisk 磁碟區的大小後,您可能需要調整其檔案系統和分區的大小:
開機磁碟:如果您使用的是自訂 Linux 映像檔或自訂 Windows 映像檔,就必須手動調整 root 分區和檔案系統的大小。如果 VM 使用公開映像檔,在您增加開機磁碟的大小並重新啟動 VM 後,Compute Engine 會自動調整根分割區和檔案系統的大小。
非開機磁碟:增加磁碟大小後,您必須擴充磁碟上的檔案系統,才能使用新增的空間。
以下範例說明如何手動調整開機磁碟的根分區和檔案系統大小,以及如何手動調整沒有分區資料表的非開機資料磁碟檔案系統大小。本範例假設已格式化並掛接連接的磁碟。
Linux VM
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
按一下已連接新磁碟的執行個體旁邊的「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
,OS 會自動重新分割磁碟,讓 OS 可使用額外空間。如果沒有其他磁碟需要修改,請直接跳到最後一個步驟。如果您選擇不使用自動修正選項,或該選項無法使用,請查看要重新分割的磁碟資訊:
sudo parted -l /dev/DEVICE_NAME
尋找欄位:Partition Table,如果值為
msdos
,則磁碟為 MBR 分區類型。也就是說,此類磁碟的大小上限為 2 TB。如果是開機磁碟,請調整磁碟上的根分區和檔案系統大小。這個範例假設 VM 映像檔不支援自動根目錄分割和檔案系統大小調整功能。
使用
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
Windows VM
使用 Windows 磁碟管理公用程式,在 Windows 執行個體上調整分區大小。
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
按一下擁有調整過大小的磁碟之執行個體旁邊的「RDP」按鈕。瀏覽器會開啟對於執行個體的遠端桌面協定連線。
在 Windows「開始」按鈕上按一下滑鼠右鍵,然後選取「磁碟管理」,開啟磁碟管理工具。
在 Powershell 中執行以下指令,即可顯示磁碟分區類型:
如果「分割區樣式」欄下方的 值為 MBR,則磁碟為 MBR 分割區類型。也就是說,這類磁碟的最大大小為 2 TB。Get-Disk
重新整理「Disk Management」(磁碟管理) 工具,讓其識別區域永久磁碟上的其他空間。在「Disk Management」(磁碟管理) 視窗頂端,按一下「Action」(動作),然後選取「Refresh」(重新整理)。
在您調整過大小的磁碟中的已格式化分區上按一下滑鼠右鍵,然後選取「Extend Volume」(延伸磁碟區)。
按照「Extend Volume Wizard」(延伸磁碟區精靈) 內的操作說明,延伸現有分區以包括其他磁碟空間。如果現有分區採用 NTFS 格式化,最大分區大小受限於其叢集大小設定。
結束精靈並完成磁碟區格式化作業後,請檢查已連結磁碟清單上的
Status
資料欄,確認新磁碟的狀態為Healthy
。
完成此程序後,無需重新啟動 VM。您現在可以使用新增的磁碟空間儲存資料。
後續步驟
- 進一步瞭解 Hyperdisk。
- 瞭解如何分析 Hyperdisk 磁碟區目前的 IOPS 等級。