增加永久磁碟的大小


當虛擬機器 (VM) 執行個體需要額外的儲存空間或提高效能限制時,您可以增加永久磁碟的大小。您可以隨時增加磁碟大小,無論磁碟是否連接至執行中的 VM。

本頁面說明如何增加永久磁碟的大小。如要增加 Google Cloud Hyperdisk 磁碟區的大小,請參閱「修改 Hyperdisk 的設定」。

您只能將磁碟的大小調高,不能調低。如要減少磁碟大小,您必須建立較小的磁碟。在您刪除原始的較大磁碟之前,系統會為兩個磁碟收費。

建立自訂 Linux 映像檔自訂 Windows 映像檔時,您需要手動增加開機磁碟和非開機磁碟的大小。如果您使用公開映像檔,Compute Engine 會自動調整開機磁碟的大小。

增加磁碟大小不會刪除或修改磁碟資料,但建議您先建立快照來備份磁碟,再對檔案系統或分割區進行任何變更。

Compute Engine 會管理永久磁碟背後的硬體,讓您能夠新增磁碟與調整其大小,無須處理分割或備援功能。

事前準備

  • 如果尚未設定,請先設定驗證機制。驗證是指驗證身分,以便存取 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

    1. 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.

    2. Set a default region and zone.

    Terraform

    To use the Terraform samples on this page in a local development environment, install and initialize the gcloud CLI, and then set up Application Default Credentials with your user credentials.

    1. Install the Google Cloud CLI.

    2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    3. To initialize the gcloud CLI, run the following command:

      gcloud init
    4. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    5. For more information, see Set up authentication for a local development environment.

    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.

必要角色和權限

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

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

這個預先定義的角色包含 compute.disks.update 權限,這是調整永久磁碟大小所需的權限。

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

增加磁碟大小

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

主控台

  1. 在 Google Cloud 控制台中,前往「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 磁碟。

REST

如要調整永久磁碟的大小,請建構 POST 要求,並將其傳送至 compute.disks.resize 方法

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 映像檔,就必須手動調整 root 分區和檔案系統的大小。如果 VM 使用公開映像檔,在您增加開機磁碟的大小並重新啟動 VM 後,Compute Engine 會自動調整根分割區和檔案系統的大小。

  • 非開機磁碟:增加磁碟大小後,您必須擴充磁碟上的檔案系統,才能使用新增的空間。

以下範例說明如何手動調整開機磁碟的根分區和檔案系統大小,以及如何手動調整沒有分區資料表的非開機資料磁碟檔案系統大小。這個範例假設磁碟是使用 SCSI 連接,且先前已格式化及掛載。

如果永久磁碟是使用 NVMe 連接,請參閱「調整檔案系統和分割區大小」,瞭解連結至 NVMe 的磁碟的輸出內容範例。

Linux VM

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

    前往 VM 執行個體

  2. 按一下具有新連接磁碟的執行個體旁邊的「SSH」SSH按鈕。瀏覽器會開啟對於執行個體的終端機連線。

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

    $ sudo df -Th
    
    Filesystem      Type     Size   Used  Avail  Use%  Mounted on
    /dev/sda1       ext4     9.7G   1.2G   8.5G   12%  /
    /dev/sdb        ext4     250G    60M   250G    1%  /mnt/disks/disk-1
    
    
    $ sudo lsblk
    
    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda       8:0    0   20G  0 disk
    └─sda1    8:1    0   10G  0 part /
    sdb       8:16   0  500G  0 disk /mnt/disks/disk-1
    
    

    這個範例包含下列磁碟:

    • 開機磁碟/dev/sda1 分區位於已調整為 20 GB 的開機磁碟上。磁區分割表和檔案系統僅為作業系統提供 9.7 GB 空間。
    • 非開機資料磁碟/dev/sdb 非開機資料磁碟沒有磁區分割表,但該磁碟上的檔案系統僅為作業系統提供 250 GB 空間。此磁碟的掛載目錄為 /mnt/disks/disk-1

    df 指令顯示 /dev/sda1 分區做為根檔案系統掛接,/dev/sdb 磁碟則在 /mnt/disks/disk-1 做為非開機資料磁碟掛接。請注意「類型」欄,這會指出磁碟是否使用 ext4xfs 檔案系統。

  4. 驗證分割區類型:

    sudo parted -l
    
    如要只查看特定磁碟的資訊,請按照下列步驟操作:
    sudo parted -l /dev/DEVICE_NAME
    
    尋找「分區資料表」欄位。如果值為 msdos,則磁碟為 MBR 磁碟分區類型。也就是說,此類磁碟的大小上限為 2 TB。

  5. 調整開機磁碟上的根分區和檔案系統大小。這個範例假設 VM 映像檔不支援自動 root 分割和檔案系統大小調整功能。

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

      1. /dev/sda 分區中開啟 parted

        sudo parted /dev/sda
      2. (parted) 提示中輸入以下內容:

        resizepart
      3. Partition number? 提示中輸入以下內容:

        1
      4. Warning: Partition /dev/sda1 is being used. Are you sure you want to continue? 提示中輸入以下內容:

        Yes
      5. End? 提示中輸入

        100%
      6. (parted) 提示中輸入以下內容:

        quit
    2. 使用 partprobe 讀取新的分區表格。

      sudo partprobe /dev/sda
      
    3. 擴充檔案系統:

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

        sudo resize2fs /dev/sda1
        
      • 如果您使用的是 xfs,請使用 xfs_growfs 指令:

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

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

    • 如果您使用的是 ext4,請使用 resize2fs 指令擴充檔案系統:

      sudo resize2fs /dev/DEVICE_NAME
      

      DEVICE_NAME 替換為磁碟的裝置名稱。在這個範例中,裝置名稱為 /dev/sdb

    • 如果您使用的是 xfs,請使用 xfs_growfs 指令擴充檔案系統:

      sudo xfs_growfs MOUNT_DIR
      

      MOUNT_DIR 替換為裝置的掛載點。您可以在 lsblk 指令的輸出內容中,找到 MOUNTPOINT 欄中列出的掛載點。

    • 如果您使用的是 btrfs,請使用 btrfs 指令擴充檔案系統:

      sudo btrfs filesystem resize max MOUNT_DIR
      

      MOUNT_DIR 替換為裝置的掛載點。您可以在 lsblk 指令的輸出內容中,找到 MOUNTPOINT 欄中列出的掛載點。

  7. 使用 df 指令確認檔案系統已擴充。例如:

    df -h /dev/sdb
    
    Filesystem  Size  Used  Avail  Use%  Mounted on
    /dev/sdb    493G   70M  492G     1%  /mnt/disks/disk-1
    

Windows VM

使用 Windows 磁碟管理公用程式,在 Windows 執行個體上調整分區大小。

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

    前往 VM 執行個體

  2. 按一下擁有調整過大小的磁碟之執行個體旁邊的 [RDP]RDP 按鈕。瀏覽器會開啟對於執行個體的遠端桌面協定連線。

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

    於 Windows [Start] (開始) 按鈕的右鍵功能表,選取 [Windows Disk Manager] (Windows 磁碟管理員) 工具。

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

    Get-Disk
    
    如果「分割區樣式」欄中的值為「MBR」,則磁碟具有 MBR 分割區類型。也就是說,這類磁碟的大小上限為 2 TB

  5. 重新整理「Disk Management」(磁碟管理) 工具,讓其識別區域永久磁碟上的其他空間。在「Disk Management」(磁碟管理) 視窗頂端,按一下「Action」(動作),然後選取「Refresh」(重新整理)

    按一下 [Action] (動作) 選單,選取 [Refresh] (重新整理) 以更新「Disk Management」(磁碟管理) 工具內的永久磁碟資訊。

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

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

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

  8. 結束精靈並完成磁碟區格式化作業後,請檢查已連結磁碟清單上的 Status 資料欄,確認新磁碟的狀態為 Healthy

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

完成此程序後,無需重新啟動 VM。您現在可以使用新增的磁碟空間儲存資料。

後續步驟