您可以修改 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
-
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
- Set a default region and zone.
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。
-
必要角色和權限
如要取得修改 Hyperdisk 所需的權限,請要求管理員授予您專案的下列 IAM 角色:
-
Compute 執行個體管理員 (v1) (
roles/compute.instanceAdmin.v1
) -
如要連線至可做為服務帳戶執行的 VM:
服務帳戶使用者 (v1) (
roles/iam.serviceAccountUser
)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這個預先定義的角色具備 compute.disks.update
權限,這是修改 Hyperdisk 的必要權限。
修改 Hyperdisk 總覽
您可以變更 Hyperdisk 磁碟區的存取模式、大小和效能特徵。
下表列出各 Hyperdisk 類型支援的變更。如果 Hyperdisk 類型可在 VM 之間共用,則可以設定存取模式。
Hyperdisk 磁碟區支援的大小和效能變更
下表摘要列出各 Hyperdisk 類型支援的容量和效能變更。
Hyperdisk 類型 | 可自訂的處理量 | 可自訂 IOPS | 可在 VM 之間共用 |
---|---|---|---|
Hyperdisk Balanced | 是 | 是 | 是 |
Hyperdisk Balanced High Availability |
是 | 是 | 是 |
Hyperdisk Extreme | 否 | 是 | 否 |
Hyperdisk ML | 是 | 否 | 是, 唯讀模式 |
Hyperdisk Throughput | 是 | 否 | 否 |
容量變更
您只能調高 Hyperdisk 磁碟區的大小,您無法縮減 Hyperdisk 磁碟區的容量。如要縮小 Hyperdisk 磁碟區的大小,請建立較小的磁碟區,將原始磁碟區的資料遷移至較小的磁碟區,然後刪除原始磁碟區。
即使 Hyperdisk 磁碟區已連接至執行中的 VM,您仍可調整大小。不過,如果 Hyperdisk 磁碟區處於多重寫入器模式,您必須先從所有 VM 中卸離磁碟區,才能調整大小。
您可以依下列頻率調整 Hyperdisk 磁碟區大小:
- Hyperdisk Throughput:每 6 小時一次
- Hyperdisk Balanced:4 小時內兩次
- 所有其他 Hyperdisk 類型:每 4 小時一次
如要獲得最佳結果,請按照下列步驟變更 Hyperdisk 磁碟區的容量:
Hyperdisk 磁碟區的大小限制
您為 Hyperdisk 磁碟區指定的大小必須在下列範圍內:
Hyperdisk 類型 | 大小下限 | 大小上限 | 預設大小 |
---|---|---|---|
Hyperdisk Balanced | 4 GiB | 64 TiB | 100 GiB |
Hyperdisk Balanced High Availability | 4 GiB | 64 TiB | 100 GiB |
Hyperdisk Extreme | 64 GiB | 64 TiB | 1 TiB |
Hyperdisk ML | 4 GiB | 64 TiB | 100 GiB |
Hyperdisk Throughput | 2 TiB | 32 TiB | 2 TiB |
不過,附加至 VM 的 Hyperdisk 磁碟區大小不得超過 VM 的 Hyperdisk 限制。
成效變化
即使磁碟區已連結至執行中的 VM,您仍可變更磁碟區的佈建效能。
變更佈建 IOPS 或輸送量後,最多可能需要 15 分鐘才會生效。但以下情況除外:
- 如果是 Hyperdisk ML 磁碟區,���更最多可能需要 20 分鐘才會生效。
- 如果是處於多重寫入模式的磁碟,且變更時磁碟已連接至多個 VM,則效能變更最多可能需要 6 小時才會生效。
除了 Hyperdisk ML 以外,所有 Hyperdisk 類型每 4 小時只能變更一次佈建 IOPS 或輸送量。Hyperdisk ML 磁碟區的佈建輸送量每 6 小時只能變更一次。
變更 Hyperdisk 磁碟區的佈建 IOPS 或輸送量,不會刪除或修改磁碟資料。
如果您嘗試在指定限制內多次修改 Hyperdisk 磁碟區,就會收到類似以下的錯誤訊息:Cannot update provisioned throughput due to being rate limited.
Hyperdisk 磁碟區的效能限制
下表列出各 Hyperdisk 類型可指定的效能限制。不過,您可以指定的 IOPS 和處理量等級也取決於磁碟區大小。如需各項限制的詳細摘要,請參閱 Hyperdisk Balanced、Hyperdisk Balanced High Availability、Hyperdisk Extreme、Hyperdisk ML 和 Hyperdisk Throughput 的「大小和效能限制」一節。
Hyperdisk 類型 | IOPS 限制 | 處理量���限 (MiB/秒) |
---|---|---|
Hyperdisk Balanced | 160,000 | 2,400 |
Hyperdisk Balanced High Availability | 100,000 | 1,200 |
Hyperdisk Extreme | 350,000 | 您無法為 Hyperdisk Extreme 磁碟區佈建輸送量等級。每 1,000 IOPS 的磁碟區可獲得 250 MiB/s 的總處理量,最高可達 5,000 MiB/s。 |
Hyperdisk ML | 您無法佈建 IOPS 級別,但每佈建 1 MiB/s 的輸送量,就會有 16 個 IOPS,最多可達 19,200,000 個 IOPS。 | 1,200,000 |
Hyperdisk Throughput | 您無法佈建 IOPS 級別,但每佈建 1 MiB/s 的處理量,就會有 4 個 IOPS,最多可達 9,600 個 IOPS。 | 2,400 |
存取模式變更
如要將單一 Hyperdisk 磁碟區附加至多個 VM,您必須根據用途,將磁碟區的存取模式設為唯讀或多重寫入模式。
停用磁碟的多重讀取或多重寫入存取權
如要對 Hyperdisk 磁碟區執行特定動作,磁碟區必須處於單一寫入器模式。舉例來說,您無法從多重寫入模式的 Hyperdisk 磁碟區建立映像檔。您必須將其存取模式設為單一寫入者。
如要停用多重讀取或多重寫入存取權,請先從所有 VM 卸離磁碟,然後按照「設定存���模式」一文中的操作說明進行。
限制
- 如要設定磁碟的存取模式,必須先從所有 VM 中卸離磁碟。
- 如果是 Hyperdisk ML 磁碟區,一旦將存取模式設為唯讀,就無法改回讀寫模式。
- 您無法為 Hyperdisk Throughput 和 Hyperdisk Extreme 磁碟區設定存取模式。
最佳做法
由於變更磁碟屬性的頻率有限,我們建議您遵循下列最佳做法:
請避免同時變更多個屬性,以免延遲修改磁碟。舉例來說,如果您打算在短期內變更磁碟大小和佈建 IOPS,請在單一要求中進行這兩項變更。
為磁碟選擇新的佈建效能或大小值時,請注意,您必須等待一段時間,才能進行進一步變更。
舉例來說,假設您想將 500 GiB 的 Hyperdisk Balanced High Availability 磁碟區大小增加到 1 TB。請確認工作負載在接下來 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 控制台的「Disks」(磁碟) 頁面。
在專案的磁碟清單中,按一下要修改的 Hyperdisk 磁碟區名稱。
在磁碟詳細資料頁面中,按一下「編輯」
。在「存取模式」欄位中,選取所需存取模式:
- 如要啟用唯讀模式,請選取「以唯讀模式連接多個 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 或處理量,但須遵守下列時間限制:
增加磁碟大小:
- Hyperdisk Throughput:每 6 小時一次
- Hyperdisk Balanced:4 小時內兩次
- 所有其他 Hyperdisk 類型:每 4 小時一次
修改佈建的 IOPS 或處理量:
- Hyperdisk ML:每 6 小時一次
- 所有其他 Hyperdisk 類型:每 4 小時一次
您可以使用 Google Cloud 控制台、gcloud CLI 或 REST,變更 Hyperdisk 磁碟區的佈建大小和效能。
主控台
前往 Google Cloud 控制台的「Disks」(磁碟) 頁面。
在專案的磁碟清單中,按一下要變更容量或佈建效能的 Hyperdisk 磁碟區名稱。
在磁碟詳細資料頁面中,按一下「編輯」。
- 在「Size」(大小) 欄位中輸入磁碟的新大小。磁碟大小必須在支援的值範圍內。
- 如果是 Hyperdisk Extreme、Hyperdisk Balanced 和 Hyperdisk Balanced High Availability: 在「佈建 IOPS」欄位中,輸入磁碟區的新 IOPS 值。
- 如果是 Hyperdisk Throughput、Hyperdisk ML、Hyperdisk Balanced 和 Hyperdisk Balanced High Availability,請在「佈建輸送量」欄位中,輸入磁碟區的新輸送量值。
按一下「儲存」,將變更套用至磁碟。
gcloud
使用 disks update
指令,並指定 --size
、--provisioned-iops
或 --provisioned-throughput
旗標。
如要變更 Hyperdisk Balanced High Availability 磁碟區的大小,請加入 --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 Balanced High Availability 磁碟所在的區域
- 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 映像檔,則必須手動調整根磁碟分割區和檔案系統的大小。如果是使用公開映像檔的 VM,在您增加開機磁碟大小並重新啟動 VM 後,Compute Engine 會自動調整根分割區和檔案系統的大小。
非開機磁碟:增加磁碟大小後,您必須擴充磁碟上的檔案系統,才能使用新增的空間。
以下範例說明如何手動調整開機磁碟的根分區和檔案系統大小,以及如何手動調整不含分區資料表的非開機資料磁碟檔案系統大小。本範例假設您先前已格式化並掛接連接的磁碟。
Linux VM
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
按一下具有新連接磁碟的執行個體旁邊的「SSH」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
指令輸出內容中的「類型」欄,該欄會指出磁碟使用的是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。如果是開機磁碟,請調整磁碟上的根分區和檔案系統大小。這個範例假設 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」(磁碟管理) 視窗頂端,按一下「動作」,然後選取「重新整理」。
在您調整過大小的磁碟中的已格式化分區上按一下滑鼠右鍵,然後選取「延伸磁碟區」。
按照「Extend Volume Wizard」(延伸磁碟區精靈) 內的操作說明,延伸現有分區以包括其他磁碟空間。如果現有分區採用 NTFS 格式化,最大分區大小受限於其叢集大小設定。
結束精靈並完成磁碟區格式化作業後,請檢查已連接磁碟清單上的
Status
資料欄,確認新磁碟的狀態為Healthy
。
完成此程序後,不必重新啟動 VM。您現在可以使用新增的磁碟空間儲存資料。
後續步驟
- 進一步瞭解 Hyperdisk。
- 瞭解如何分析 Hyperdisk 磁碟區目前的 IOPS 等級。