如果 Compute Engine 虛擬機器 (VM) 執行個體需要額外的儲存空間或提高效能限制,您可以增加 Persistent Disk 的大小。無論磁碟是否已連接至運作中的 VM,您隨時都可以增加磁碟大小。
本頁說明如何變更永久磁碟的大小。如要增加 Google Cloud Hyperdisk 磁碟區的大小,請參閱「修改 Hyperdisk 磁碟區的大小和佈建效能」。
建立自訂 Linux 映像檔、自訂 Windows 映像檔或 Fedora CoreOS 映像檔時,您需要手動增加開機和非開機磁碟的大小。如果您使用公開映像檔 (Fedora CoreOS 映像檔除外),Compute Engine 會自動調整開機磁碟大小。
增加磁碟大小不會刪除或修改磁碟資料,但最佳做法是在變更檔案系統或分割區之前,一律建立快照來備份磁碟。
Compute Engine 會管理永久磁碟背後的硬體,因此您不必處理條紋或備援,就能新增及調整磁碟大小。
事前準備
-
如果尚未設定驗證,請先完成設定。驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:
選取這個頁面上範例的預計用途分頁:
控制台
使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,您不需要設定驗證機制。
gcloud
-
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
- 設定預設區域和可用區。
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如果您使用本機殼層,請為使用者帳戶建立本機驗證憑證:
gcloud auth application-default login
如果您使用的是 Cloud Shell,則不必執行這項操作。
如果系統傳回驗證錯誤,且您使用外部識別資訊提供者 (IdP),請確認您已 使用聯合身分登入 gcloud CLI。
Terraform
如要在本機開發環境中使用本頁的 Terraform 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。
詳情請參閱「 設定本機開發環境的驗證機制」。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。
若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」一節。
必要角色和權限
如要取得調整 Persistent Disk 大小所需的權限,請要求管理員在專案中授予您下列 IAM 角色:
- Compute 執行個體管理員 (v1) (
roles/compute.instanceAdmin.v1) -
如要連線至可做為服務帳戶執行的 VM:
服務帳戶使用者 (v1) (
roles/iam.serviceAccountUser)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備 compute.disks.update 權限,可調整永久磁碟的大小。
縮減磁碟大小
您無法縮減永久磁碟的大小。您必須建立新的較小磁碟,並用來取代現有磁碟。如要縮小磁碟大小,請建立較小的空白磁碟,然後將原始磁碟的內容複製到新磁碟。接著,您可以使用新磁碟,而非原始磁碟。
如要將磁碟更換為較小的磁碟,請按照下列步驟操作:
- 建立空白永久磁碟,並指定所需大小。請確認新磁碟有足夠的空間,可容納來源磁碟的資料。
- 將這兩個磁碟連接至同一個執行個體。如需操作說明,請參閱「將非開機磁碟連接至 VM」。
- 格式化並掛接新磁碟。請參閱 Linux 和 Windows 執行個體的操作說明。
- 使用作業系統 (OS) 適用的公用程式,將原始磁碟中的資料複製到新磁碟。舉例來說,如果是 Linux,您可以使用
rsync或dd。如果是 Windows 執行個體,可以使用robocopy。 - 確認新磁碟包含所有資料,且運作正常。
- 更新應用程式或 OS,以便使用新磁碟。
- 確認遷移作業成功後,即可卸離並刪除原始的大型磁碟。
Persistent Disk 磁碟區的大小限制
您為永久磁碟區指定的容量必須在下表列出的範圍內。
| 磁碟類型 | 大小下限 | 大小上限 | 預設大小 |
|---|---|---|---|
| 平衡型永久磁碟 | 區域:10 GiB 區域:10 GiB |
64 TiB | 100 GiB |
| 效能型 (SSD) 永久磁碟 | 可用區:10 GiB 區域:10 GiB |
64 TiB | 100 GiB |
| 標準永久磁碟 | 區域:10 GiB 區域:200 GiB |
64 TiB | 500 GiB |
| 極端永久磁碟 | 500 GiB | 64 TiB | 1 TiB |
增加永久磁碟磁碟區的大小
如要增加開機或非開機磁碟的大小,請按照下列程序操作:
控制台
前往 Google Cloud 控制台的「Disks」(磁碟) 頁面。
在專案的磁碟清單中,按一下要調整大小的磁碟名稱。
在磁碟詳細資料頁面中,按一下 「編輯」。你可能需要依序點選 「更多動作」選單和「編輯」。
在「Size」(大小) 欄位中輸入磁碟的新大小。具有 MBR 分割區表格的磁碟,大小最多只能調整為 2 TB。
按一下「儲存」,將變更套用至磁碟。
新的磁碟大小會隨即顯示在磁碟清單中。
gcloud
使用 gcloud compute disks resize 指令,並指定 --size 標記和新的磁碟大小 (以 GiB 為單位)。
gcloud compute disks resize DISK_NAME \
--size DISK_SIZE \
--zone=ZONE
更改下列內容:
DISK_NAME:要調整大小的磁碟名稱。DISK_SIZE:磁碟的新大小 (以 GiB 為單位)。使用 MBR 分區資料表的磁碟只能調整大小至 2 TB。ZONE:如果是可用區永久磁碟,請指定磁碟所在的可用區。如果是區域永久磁碟,請改用
--region=REGION標記,並指定區域磁碟所在的區域。
Terraform
選擇下列其中一個選項,調整可用區磁碟或區域永久磁碟的大小:
可用區磁碟
如要變更 Persistent Disk 的大小,可以使用 google_compute_disk 資源,並使用 size 參數。
如果同時加入 size 參數和 image 或 snapshot 參數,size 值必須大於或等於圖片或快照的大小。
如果省略 image 和 snapshot 參數,您可以將 size 參數設為小於現有磁碟大小的值。如果這麼做,Terraform 會刪除磁碟,並建立新的空白永久磁碟。
區域永久磁碟
如要變更區域 Persistent Disk 的大小,可以使用 google_compute_region_disk 資源,並使用 size 參數。
如果同時加入 size 參數和 image 或 snapshot 參數,size 值必須大於或等於圖片或快照的大小。
如果省略 image 和 snapshot 參數,可以將 size 參數設為小於現有磁碟大小的值。如果這麼做,Terraform 會刪除磁碟,並建立新的空白區域永久磁碟。
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
REST
如要調整永久磁碟大小,請向 compute.disks.resize 方法建構 POST 要求。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/resize
{
"sizeGb": "DISK_SIZE"
}
如要調整區域永久磁碟大小,請向 compute.regionDisks.resize 方法建構 POST 要求。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME/resize
{
"sizeGb": "DISK_SIZE"
}
更改下列內容:
PROJECT_ID:您的專案 ID。ZONE:適用於可用區永久磁碟:磁碟所在的可用區。REGION:如果是區域性永久磁碟,則為磁碟所在的區域。DISK_NAME:要調整大小的磁碟名稱。DISK_SIZE:磁碟的新大小 (以 GiB 為單位)。具有 MBR 分區表的磁碟最多只能調整為 2 TB。
調整檔案系統和分區大小
增加磁碟大小後,您可能需要調整檔案系統和分區的大小。以下是開機和非開機磁碟的額外資訊:
開機磁碟:如果您使用自訂 Linux 映像檔、自訂 Windows 映像檔或 Fedora CoreOS 映像檔,則必須手動調整根分割區和檔案系統的大小。如果是使用公開映像檔 (Fedora CoreOS 映像檔除外) 的執行個體,在您增加開機磁碟大小後,Compute Engine 會自動調整根分割區和檔案系統大小,您不需要重新啟動執行個體。
非開機磁碟:增加磁碟大小後,您必須擴充磁碟上的檔案系統,才能使用新增的空間。
以下範例說明如何手動調整開機磁碟的根分割區和檔案系統大小,以及如何手動調整沒有分割區表的非開機資料磁碟檔案系統大小。這兩個範例都假設已預先格式化並掛接附加磁碟。
Linux 執行個體
前往 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指令輸出中的「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。如果是開機磁碟,請調整磁碟上的根分區和檔案系統大小。這個範例假設 VM 映像檔不支援自動根分割區和檔案系統大小調整。
使用
parted調整根分區大小。舉例來說,下列指令會將裝置的分區 1 擴充至最大可能大小:在裝置上開啟
parted:sudo parted /dev/DEVICE_NAME
將
DEVICE_NAME替換為開機磁碟的裝置名稱,例如nvme0n1在提示中輸入:
(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/PARTITION_NAME
將
PARTITION_NAME替換為開機磁碟的分割區名稱,例如nvme0n1p1。如果您使用
xfs,請使用xfs_growfs指令:sudo xfs_growfs -d /
如果您使用 btrfs,請使用
btrfs指令:sudo btrfs filesystem resize max /
如果是非開機資料磁碟,請調整磁碟上的檔案系統大小。
如果您使用的是
ext4,請使用resize2fs指令擴充檔案系統:sudo resize2fs /dev/PARTITION_NAME
將
PARTITION_NAME替換為資料磁碟的分割區名稱。在本例中,分割區名稱為/dev/nvme0n2p1。如果使用
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/PARTITION_NAME Filesystem Size Used Avail Use% Mounted on /dev/nvme0n2p1 118G 70M 118G 1% /mnt/disks/data
Windows VM
使用 Windows 磁碟管理公用程式,調整 Windows 執行個體上的磁碟分割大小。
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
找出已調整大小的磁碟所在的執行個體。點選執行個體的「RDP」RDP按鈕。瀏覽器會開啟執行個體的 RDP 連線。
在 Windows「開始」按鈕上按一下滑鼠右鍵,然後選取「磁碟管理」開啟「磁碟管理」工具。
在 Powershell 中執行下列指令,顯示磁碟分割區類型:
Get-Disk
在「Partition Style」資料欄中,如果值為「MBR」,則表示磁碟具有 MBR 分區類型。這表示這類磁碟的大小上限為 2 TB。
重新整理「磁碟管理」工具,讓工具辨識磁碟上的額外空間。在「磁碟管理」視窗頂端,按一下「動作」,然後選取「重新整理」。
在調整大小後的磁碟上,在格式化分區上按一下滑鼠右鍵,然後選取「Extend Volume」(擴充磁碟區)。
按照「Extend Volume Wizard」(延伸磁碟區精靈) 內的操作說明,延伸現有分區以包括其他磁碟空間。如果現有分區採用 NTFS 格式,則分區大小上限會受限於叢集大小設定。
完成「擴充磁碟區精靈」後,磁碟區會完成格式化,請檢查附加磁碟清單中的「狀態」欄,確認新磁碟的狀態為「正常」。
完成這項程序後,您不需要重新啟動執行個體。即可開始使用新增的磁碟空間。