修改永久磁碟的大小

如果 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

    1. 安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init

      若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  • 設定預設地區和區域
  • Terraform

    如要在本機開發環境中使用本頁的 Terraform 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。

    1. 安裝 Google Cloud CLI。

    2. 若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

    3. 如果您使用本機殼層,請為使用者帳戶建立本機驗證憑證:

      gcloud auth application-default login

      如果您使用 Cloud Shell,則不需要執行這項操作。

      如果系統傳回驗證錯誤,且您使用外部識別資訊提供者 (IdP),請確認您已 使用聯合身分登入 gcloud CLI

    詳情請參閱 這篇文章,瞭解如何設定本機開發環境的驗證機制。

    REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI。

      若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

    詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。

必要角色和權限

如要取得調整永久磁碟大小所需的權限,請要求管理員授予您專案的下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這個預先定義的角色具備 compute.disks.update 權限,可調整 Persistent Disk 的大小。

您或許還可透過自訂角色或其他預先定義的角色取得這項權限。

縮減磁碟大小

您無法縮減永久磁碟的大小。您必須更換磁碟,改用較小的磁碟。如要這麼做,請建立較小的空白磁碟,然後將原始磁碟的內容複製到新磁碟。然後使用新磁碟取代原始磁碟。

如要更換較小的磁碟,請按照下列步驟操作:

  1. 建立空白的永久磁碟,並指定所需大小。請確認新磁碟的容量足以容納來源磁碟的資料。
  2. 將兩個磁碟都連結至同一個執行個體。如需操作說明,請參閱「將非開機磁碟連接至 VM」。
  3. 格式化及掛接新磁碟。請參閱 LinuxWindows 執行個體的相關操作說明。
  4. 使用作業系統 (OS) 提供的公用程式,將原始磁碟中的資料複製到新磁碟。舉例來說,在 Linux 中,您可以使用 rsyncdd。如果是 Windows 執行個體,可以使用 robocopy
  5. 確認新磁碟包含所有資料,且運作正常。
  6. 更新應用程式或作業系統,以使用新磁碟。
  7. 確認遷移作業成功後,即可卸載並刪除原始的大型磁碟。
在刪除原始磁碟前,系統會向您收取該磁碟的費用。

永久磁碟磁碟區的大小限制

您為永久磁碟區指定的容量必須在下表列出的範圍內。

磁碟類型 大小下限 大小上限 預設大小
平衡型永久磁碟 區域: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

增加永久磁碟區的大小

如要增加開機或非開機磁碟的大小,請按照下列程序操作:

控制台

  1. 前往 Google Cloud 控制台的「Disks」(磁碟) 頁面。

    前往「Disks」(磁碟) 頁面

  2. 在專案的磁碟清單中,按一下要調整大小的磁碟名稱。

  3. 在磁碟詳細資料頁面中,按一下「編輯」。你可能需要依序點選「更多動作」選單和「編輯」

  4. 在「Size」(大小) 欄位中輸入磁碟的新大小。具有 MBR 磁碟分區表的磁碟大小調整上限是 2 TB。

  5. 按一下「儲存」,將變更套用至磁碟。

新的磁碟大小會隨即顯示在磁碟清單中。

gcloud

使用 gcloud compute disks resize指令,並以 GiB 為單位的新磁碟大小指定 --size 旗標。

gcloud compute disks resize DISK_NAME \
    --size DISK_SIZE \
    --zone=ZONE

更改下列內容:

  • DISK_NAME:要調整大小的磁碟名稱。
  • DISK_SIZE:磁碟的新大小,以 GiB 為單位。具有 MBR 磁區分割表的磁碟大小調整上限是 2 TB。
  • ZONE:如果是區域永久磁碟,請指定磁碟所在的可用區。

    如果是區域永久磁碟,請改用 --region=REGION 旗標,並指定區域磁碟所在的區域。

Terraform

請選擇下列其中一個選項,調整可用區磁碟或區域永久磁碟大小:

可用區磁碟

如要變更永久磁碟的大小,可以使用 google_compute_disk 資源,並使用 size 參數。

# Using pd-standard because it's the default for Compute Engine

resource "google_compute_disk" "default" {
  name = "disk-data"
  type = "pd-standard"
  zone = "us-west1-a"
  size = "5"
}

如果同時加入 size 參數和 imagesnapshot 參數,size 值必須大於或等於圖片或快照的大小。

如果省略 imagesnapshot 參數,則可將 size 參數設為小於現有磁碟大小的值。如果這麼做,Terraform 會刪除磁碟,並建立新的空白永久磁碟。

區域永久磁碟

如要變更地區永久磁碟的大小,可以使用 google_compute_region_disk 資源,並使用 size 參數。

resource "google_compute_region_disk" "regiondisk" {
  name                      = "region-disk-name"
  snapshot                  = google_compute_snapshot.snapdisk.id
  type                      = "pd-ssd"
  region                    = "us-central1"
  physical_block_size_bytes = 4096
  size                      = 11

  replica_zones = ["us-central1-a", "us-central1-f"]
}

如果同時加入 size 參數和 imagesnapshot 參數,size 值必須大於或等於圖片或快照的大小。

如果省略 imagesnapshot 參數,則可將 size 參數設為小於現有磁碟大小的值。如果這麼做,Terraform 會刪除磁碟,並建立新的空白 RegionalPersistent 磁碟。

如要瞭解如何套用或移除 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 執行個體

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  2. 找出已連結調整大小磁碟的執行個體。按一下「SSH」SSH。瀏覽器會開啟對於執行個體的終端機連線。

  3. 使用 dflsblk 指令列出檔案系統的大小,並找出磁碟的裝置名稱。

    $ 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 指令輸出內容中的「類型」欄,該欄會指出磁碟使用的是 ext4xfs 檔案系統。

  4. 確認分割區類型:

    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,作業系統會自動重新分割磁碟,讓作業系統使用額外空間。如果沒有其他磁碟要修改,請直接跳到最後一個步驟。

  5. 如果選擇不使用自動修正選項,或該選項無法使用,請查看要重新分割磁碟的資訊:

    sudo parted -l /dev/DEVICE_NAME
    

    尋找「Partition Table」(分區表) 欄位,如果值為 msdos,則磁碟具有 MBR 分區類型。也就是說,這類磁碟的大小上限為 2 TB。

  6. 如果是開機磁碟,請調整磁碟上的根分區和檔案系統大小。這個範例假設 VM 映像檔不支援自動根分割區和檔案系統大小調整。

    1. 使用 parted 調整根分區大小。舉例來說,下列指令會將裝置的分區 1 擴展至最大可能大小:

      1. 在裝置上開啟「parted」:

        sudo parted /dev/DEVICE_NAME
        

        DEVICE_NAME 替換為開機磁碟的裝置名稱,例如 nvme0n1

      2. 在提示中輸入:

        (parted) resizepart
        
      3. Partition number? 提示字元中輸入:

        1
        
      4. Warning: Partition /dev/DEVICE_NAMEp1 is being used. Are you sure you want to continue? 提示字元中輸入:

        Yes
        
      5. End? 提示中輸入

        100%
        
      6. (parted) 提示字元中輸入:

        (parted) quit
        
    2. 使用 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
      
    3. 擴充檔案系統:

      • 如果您使用的是 ext4,請使用 resize2fs 指令:

        sudo resize2fs /dev/PARTITION_NAME
        

        PARTITION_NAME 換成開機磁碟的分割區名稱,例如 nvme0n1p1

      • 如果您使用的是 xfs,請使用 xfs_growfs 指令:

        sudo xfs_growfs -d /
        
      • 如果您使用的是 btrfs,請使用 btrfs 指令:

        sudo btrfs filesystem resize max /
        
  7. 如為非開機資料磁碟,請調整磁碟上的檔案系統大小。

    • 如果您使用的是 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 欄中找到掛接點。

  8. 使用 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 執行個體上調整分區大小。

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  2. 找出已調整大小的磁碟所屬的執行個體。在執行個體上,按一下「RDP」RDP按鈕,瀏覽器會開啟對於執行個體的遠端桌面協定連線。

  3. 在 Windows「開始」按鈕上按一下滑鼠右鍵,然後選取「磁碟管理」以開啟「磁碟管理」工具。

    在 Windows「開始」按鈕的右鍵功能表,選取「Windows 磁碟管理員」工具。

  4. 在 Powershell 中執行下列指令,顯示磁碟分割區類型:

    Get-Disk
    

    在「分割區樣式」欄中,如果值為「MBR」,則磁碟具有 MBR 分割區類型。這表示這類磁碟的大小上限為 2 TB

  5. 重新整理「磁碟管理」工具,讓其識別磁碟上的其他空間。在「磁碟管理」視窗頂端,按一下「動作」,然後選取「重新整理」

    按一下「動作」選單,選取「重新整理」以更新「磁碟管理」工具內的磁碟資訊。

  6. 在您調整過大小的磁碟中的已格式化分區上按一下滑鼠右鍵,然後選取「延伸磁碟區」

    在磁碟的已格式化部分按一下滑鼠右鍵,選取 [Extend Volume] (延伸磁碟區) 選項。

  7. 按照「Extend Volume Wizard」(延伸磁碟區精靈) 內的操作說明,延伸現有分區以包括其他磁碟空間。如果現有分區採用 NTFS 格式化,最大分區大小受限於其叢集大小設定

  8. 完成「擴充磁碟區精靈」並格式化磁碟區後,請檢查已連結磁碟清單上的「狀態」資料欄,確認新磁碟的狀態為「正常」

    檢視 Windows 辨識的磁碟清單,確認執行個體在線上處於「健康狀態良好」狀態。

完成這項程序後,無需重新啟動執行個體。現在可以開始使用新增的磁碟空間。

後續步驟