新增或調整地區永久磁碟大小

本頁說明如何新增及管理地區永久磁碟儲存空間資源。當您調整地區永久磁碟的大小時,只能將大小調高,您無法調降永久磁碟的大小。

地區永久磁碟的特質與區域永久磁碟相似,但有幾個地方不同:

  • 地區永久磁碟無法做為開機磁碟。
  • 地區永久磁碟支援在發生區域故障的情況下,強制連接至另一個 VM 執行個體。
  • 您可以透過快照建立地區永久磁碟,但無法透過映像檔建立。
  • 這兩種永久磁碟的效能不盡相同,詳情請參閱儲存空間選項一文。

地區永久磁碟可在同一地區內的兩個區域之間提供資料同步複製功能。萬一區域故障,系統會將工作負載容錯移轉至位於相同或次要區域中的另一個 VM 執行個體,接著您就可以將地區永久磁碟強制連接至該執行個體。強制連接程序估計可在一分鐘內完成。

最佳做法是使用快照備份地區永久磁碟,以免不慎遺失資料。

當您在設計完善可靠的系統時,以及針對需要高可用性的有狀態資料庫服務 (例如 MySQL 和 Postgres),地區永久磁碟是可列入考量的適當選項。

請參閱 Compute Engine 儲存空間選項一文,比較不同的資源和這些資源的效能。

您建立的每個永久磁碟都有一個預設的 4 KB 實體區塊大小。如果資料庫應用程式需要增加實體區塊大小,您可以在建立磁碟時選取 16 KB。開機磁碟不支援這項功能。如要變更現有磁碟的實體區塊大小,您必須為磁碟建立快照,然後建立新的磁碟。您無法直接編輯磁碟的實體區塊大小。

事前準備

限制

地區永久磁碟具有下列限制:

  • 地區永久磁碟無法做為開機磁碟。
  • 您可以透過快照建立地區永久磁碟,但無法透過映像檔建立。
  • 地區標準永久磁碟的大小下限為 200 GB。
  • 您不能使用具有記憶體最佳化機器類型的地區永久磁碟。

將地區永久磁碟新增至執行個體

建立地區標準永久磁碟或地區 SSD 永久磁碟,然後將磁碟連接到執行個體。如果您沒有任何執行個體,必須先建立並啟動新的執行個體。您必須將執行個體建立在與磁碟所在地區相同的地區內。

主控台

您必須先建立地區永久磁碟,然後將該磁碟連接到現有的執行個體。您無法把地區永久磁碟建立為開機磁碟,原因是開機磁碟在容錯移轉期間無法強制連接。

建立地區永久磁碟。

  1. 前往「Disks」(磁碟) 頁面。

    前往「Disks」(磁碟) 頁面

  2. 選取專案。
  3. 按一下 [Create Disk] (建立磁碟)
  4. 指定磁碟的 [Name] (名稱)
  5. 選擇磁碟的 [Type] (類型)
  6. 勾選 [Replicate this disk within region] (在地區內複製這個磁碟) 方塊。
  7. 選取地區。

    記下您選取的地區,因為您在建立執行個體時,必須選取相同的地區。

  8. 選取該地區中的兩個區域,然後按一下 [OK] (確定)

    您必須選取兩個區域。請記下您選取的區域,因為您必須將磁碟連接到其中一個區域內的執行個體。

  9. 選擇 [Source Type] (來源類型)
  10. 您也可以選擇 [Physical block size (KB)] (實體區塊大小 (KB))。磁碟的預設大小為 4 KB。不過,您可以從下拉式選單選取 16 KB 來增加磁碟的實體區塊大小。這項功能目前仍處於 Beta 版測試階段。
  11. 選取 [Encryption] (加密)
  12. 按一下 [Create] (建立) 來結束磁碟建立作業。

建立地區永久磁碟之後,請將該磁碟連接到執行個體

當您將磁碟連接到現有的執行個體,但該磁碟已經連接到另一個執行個體時,您可能會收到錯誤訊息。此時請勾選 [Additional disks] (其他磁碟) 下拉式選單中的 [Force-attach] (強制連接) 方塊,來強制連接磁碟。

當您將該新磁碟連結到執行個體之後,必須格式化和掛接磁碟,好讓作業系統能使用可用的儲存空間。

gcloud

使用 gcloud 工具建立及連接永久磁碟的方法如下:

  1. 使用 compute disks create 指令來建立新的地區永久磁碟。如果您需要將地區 SSD 永久磁碟用於其他總處理量或 IOPS,請加上 --type 標記,並指定 pd-ssd。您也可以新增 --physical-block-size 標記以設定實體區塊大小。如要包含此標記,您必須使用 beta compute disks create 指令。這項功能目前仍處於 Beta 版測試階段。

    gcloud beta compute disks create [DISK_NAME] \
        --size [DISK_SIZE] \
        --type [DISK_TYPE] \
        --region [REGION] \
        --replica-zones [ZONE1],[ZONE2] \
        --physical-block-size [BLOCK_SIZE]
    

    其中:

    • [DISK_NAME] 是新磁碟的名稱。
    • [DISK_SIZE] 是新磁碟以 GB 為單位的大小。
    • [DISK_TYPE] 是永久磁碟的類型,可以是 pd-standardpd-ssd
    • [REGION] 是地區磁碟的所在地區,例如:europe-west1
    • [ZONE1][ZONE2] 是該地區中這兩個磁碟備用資源所在的區域。
      您必須選取兩個區域,例如:europe-west1-a,europe-west1-b
    • [BLOCK_SIZE]4096 (4 KB) 或 16384 (16 KB)。4 KB 是預設的實體區塊大小;16 KB 是增加的實體區塊大小。使用具有此標記的 beta compute disks create 指令。這項功能目前仍處於 Beta 版測試階段。
  2. 您建立磁碟後,請將其連接到任何執行中或已停止的執行個體。使用 compute instances attach-disk 指令並加入 --disk 標記。

    gcloud compute instances attach-disk [INSTANCE_NAME] \
        --disk [DISK_NAME]
    

    其中:

    • [INSTANCE_NAME] 是要新增地區永久磁碟的執行個體名稱。
    • [DISK_NAME] 是要連接至執行個體的新磁碟名稱。

    當您建立新磁碟,並將該磁碟連接至執行個體之後,必須格式化和掛接磁碟,好讓作業系統能使用可用的儲存空間。

  3. 使用 compute disks describe 指令查看磁碟說明。回應會包含磁碟的實體區塊大小。

API

  1. 在 API 中,建構 POST 要求來建立地區永久磁碟。請在 compute.regionDisks.insert 要求主體中,利用磁碟 namereplicaZones 屬性來讓新的磁碟初始化。如要建立空白磁碟,請勿指定任何映像檔或快照資源。您也可以包含 physicalBlockSizeBytes 屬性以設定實體區塊儲存空間大小。對此屬性使用 Beta 版 API 方法 compute.regionDisks.insert。這項功能目前仍處於 Beta 版測試階段。

    POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/regions/[REGION]
    
    {
     "name": "[DISK_NAME]",
     "physicalBlockSizeBytes": "[BLOCK_SIZE]",
     "replicaZones": [
       "projects/[PROJECT_ID]/zones/[ZONE1]",
       "projects/[PROJECT_ID]/zones/[ZONE2]"
       ],
     }
    

    其中:

    • [PROJECT_ID] 是您的專案 ID。
    • [DISK_NAME] 是新磁碟的名稱。

    • [BLOCK_SIZE]4096 (4 KB) 或 16384 (16 KB)。4 KB 是預設的實體區塊大小;16 KB 是增加的實體區塊大小。對此屬性使用 Beta 版 API 方法 compute.regionDisks.insert。這項功能目前仍處於 Beta 版測試階段。

    • [ZONE1][ZONE2] 是新磁碟備用資源所在的區域。

  2. 在 API,對 compute.instances.attachDisk 方法建構 POST 要求,並加上您剛建立的永久磁碟的網址:

    POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/attachDisk
    
    {
     "source": "/projects/[PROJECT_ID]/regions/[REGION]/disks/[DISK_NAME]"
    }
    

    其中:

    • [PROJECT_ID] 是您的專案 ID。
    • [ZONE] 是執行個體的位置。
    • [INSTANCE_NAME] 是要新增永久磁碟的執行個體名稱。
    • [DISK_NAME] 是新磁碟的名稱。

當您建立新磁碟,並將該磁碟連接到執行個體之後,必須格式化和掛接磁碟,好讓作業系統能使用可用的儲存空間。

在發生區域故障的期間存取地區永久磁碟

萬一區域服務中斷,系統會透過強制連接的指令,將地區永久硬碟容錯移轉至另一個區域的 VM 執行個體。

如果執行 VM 執行個體的區域無法使用,則可能因為無法存取執行個體進行卸離操作,而無法從執行個體卸離磁碟。強制連接功能可讓您將地區永久磁碟連接至 VM 執行個體,即使該磁碟目前與其他執行個體連接。

完成強制連接操作後,Compute Engine 會防止原始 VM 寫入磁碟。使用強制連接可讓您安全地重新取得資料存取權限並恢復服務。

只有 VM 常駐在這兩個備用資源中時,才會確認寫回 VM。如果其中一個備用資源無法使用,Compute Engine 只會寫入健康的備用資源。Compute Engine 確認健康狀態不佳的備用資源完成備份後,就會公開與狀態良好的備用資源同步,並繼續進行完全同步的作業模式。這項作業對 VM 公開透明。

雖然鮮少發生這兩個備用資源同時無法使用,或健康狀態良好的備用資源在另一個備用資源進入同步處理時變成無法使用的情況,但發生上述情況時,對應的磁碟會變成無法使用。

您也可以選擇在執行強制連接的步驟之後,手動關閉執行個體

區域內故障

系統也可能會將地區永久磁碟強制連接到同一地區的 VM 執行個體。這種區域內的容錯移轉選項,可用來處理服務因 VM 設定錯誤、OS 升級失敗或其他故障模式而中斷的情況。

主控台

建立待命 VM 執行個體,然後將磁碟強制連接到執行個體。

  1. 前往「VM instances」(VM 執行個體) 頁面。

    前往「VM instances」(VM 執行個體) 頁面

  2. 選取專案。
  3. 指定執行個體的 [Name] (名稱)
  4. 選取地區永久磁碟所在的地區。
  5. 選取磁碟連接的原始 VM 執行個體的替代區域。

    「Disks」(磁碟) 頁面會隨即列出您的磁碟。

  6. 按一下 [Management, disks, networking, SSH keys] (管理、磁碟、網路、安全殼層 (SSH) 金鑰組)
  7. 按一下 [Disks] (磁碟)
  8. 在「Additional Disks」(其他磁碟) 下方,按一下 [+ Attach existing disk] (+ 連接現有的磁碟)
  9. 從下拉式選單中選取地區永久磁碟。
  10. 勾選方塊來強制連接磁碟。
  11. 按一下 [Done] (完成)
  12. 按一下 [Create] (建立) 來完成這個執行個體的建立作業。

    新的 VM 執行個體會隨即出現在「VM instances」(VM 執行個體) 頁面中。
    當區域服務恢復運作後,請執行相同的步驟,以便將磁碟強制連接到原始的執行個體。

gcloud

gcloud 工具中,使用 instances attach-disk 指令來將備用資源磁碟連接至 VM 執行個體,然後加上 --disk-scope 標記,並將該標記設定為 regional

gcloud compute instances attach-disk [INSTANCE_NAME]  \
    --disk [DISK_NAME] \
    --disk-scope regional \
    --force-attach

其中:

  • [INSTANCE_NAME] 是地區中新 VM 執行個體的名稱。
  • [DISK_NAME] 是磁碟名稱。

當您強制連接磁碟之後,請視需要將檔案系統掛接至該磁碟。執行個體可以利用強制連接的磁碟,繼續執行讀取和寫入作業。

API

compute.instances.attachDisk 方法建構 POST 要求,並包含您剛建立的永久磁碟的網址。即使主要執行個體仍有磁碟,您還是需要 forceAttach=true 查詢參數,才能將磁碟連接至新的 VM 執行個體。

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/attachDisk?forceAttach=true

{
 "source": "projects/[PROJECT_ID]/regions/[REGION]/disks/[DISK_NAME]"
}

其中:

  • [PROJECT_ID] 是您的專案 ID。
  • [ZONE] 是執行個體的位置。
  • [INSTANCE_NAME] 是要新增永久磁碟的執行個體名稱。
  • [REGION] 是新地區永久磁碟所在的地區。
  • [DISK_NAME] 是新磁碟的名稱。

當您連接備用磁碟之後,請視需要將檔案系統掛接到該磁碟。執行個體可以利用備用資源磁碟,繼續執行讀取和寫入作業。

調整地區永久磁碟的大小

如果擁有地區永久磁碟的執行個體需要額外的儲存空間、IOPS 或總處理量,您可以調整磁碟的大小。如果您需要將資料分散到幾個不重複的磁碟區中,請為執行個體建立數個次要磁碟。您隨時可以調整磁碟的大小,無論磁碟是否連接到執行中的執行個體。

用於調整地區永久磁碟大小的指令,與用來調整標準永久磁碟大小的指令相同,不過地區永久磁碟使用的指令多了一個標記。

主控台

調整地區永久磁碟的大小。

  1. 前往「Disks」(磁碟) 頁面。

    前往「Disks」(磁碟) 頁面

  2. 選取您要調整大小的磁碟。
  3. 按一下頁面頂端的 [Edit] (編輯)
  4. 輸入該磁碟的大小,單位為 GB

    您只能將大小調高,無法降低磁碟的大小。

  5. 按一下 [Save] (儲存)
  6. 當您調整磁碟的大小之後,必須調整檔案系統的大小,好讓作業系統能存取額外的空間。

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

gcloud

gcloud 工具中使用 compute disks resize 指令。請以您要的磁碟大小 (單位為 GB) 來指定 --size 標記,並以磁碟所在地區來指定 --region 標記。

gcloud compute disks resize [DISK_NAME] \
    --region [REGION]  \
    --size [DISK_SIZE]

其中:

  • [DISK_NAME] 是您要調整大小的磁碟名稱。
  • [REGION] 是磁碟所在的地區。
  • [DISK_SIZE] 是磁碟的新大小,單位為 GB。

當您調整磁碟的大小之後,必須調整檔案系統的大小,好讓作業系統能存取額外的空間。

API

在 API 中,建構對 compute.regionDisks.resize 方法的 POST 要求。請在要求主體中指定 sizeGb 參數,並將該參數設定為您要的磁碟大小,單位為 GB。

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/disks/[DISK_NAME]/resize

{
 "sizeGb": "[DISK_SIZE]"
}

其中:

  • [PROJECT_ID] 是您的專案 ID。
  • [REGION] 是磁碟的所在地區。
  • [DISK_NAME] 是您要調整大小的磁碟名稱。
  • [DISK_SIZE] 是磁碟的新大小,單位為 GB。

當您調整磁碟的大小之後,必須調整檔案系統的大小,好讓作業系統能存取額外的空間。

在多個執行個體之間共用地區永久磁碟

在唯讀模式中可將非開機永久磁碟連接至一個以上的虛擬機器執行個體,讓您在多個執行個體之間共用靜態資料。在一個永久磁碟上的多個執行個體之間共用靜態資料,成本比為個別執行個體將資料複製到專屬磁碟來得便宜。

如果您將永久磁碟連接到多個執行個體,所有執行個體必須在唯讀模式中連接永久磁碟。您無法在讀寫模式中將永久磁碟連接到多個執行個體。如果您需要在多個執行個體之間共用動態儲存空間,可以使用下列其中一個選項:

如果您擁有的永久磁碟中有要在多個執行個體之間共用的資料,請將其從任何讀寫執行個體卸離,並將其連接至唯讀模式中的一個或多個執行個體。

主控台

  1. 前往執行個體頁面以查看您專案中執行個體的清單。

    前往「Instances」(執行個體) 頁面

  2. 在「Name」(名稱) 資料欄中,按一下您要連結磁碟的執行個體名稱。執行個體詳細資料頁面隨即會開啟。
  3. 在執行個體詳細資料頁面的頂端,按一下 [Edit] (編輯)
  4. 在「Additional disks」(其他磁碟) 區段中,按一下 [Add item] (新增項目),以新增磁碟項目到所連結非開機永久磁碟的清單中。
  5. 在「Name」(名稱) 資料欄中,按一下 [Select a disk] (選取磁碟),然後按一下您要連結的磁碟名稱。如果您建立新的非開機磁碟,請設定其屬性,然後按一下 [Create] (建立) 以套用變更。
  6. 在「Mode」(模式) 資料欄中,按一下 [Read/write] (讀取/寫入),將其變更為「Read only」(唯讀)
  7. 在執行個體詳細資料頁面的底端,按一下 [Save] (儲存) 將變更套用到執行個體。
  8. 連線至執行個體並掛接磁碟。
  9. 重複此程序,在唯讀模式中新增磁碟到其他執行個體。

gcloud

gcloud 工具中,使用 compute instances attach-disk 指令,並指定具有 ro 選項的 --mode 標記。

gcloud beta compute instances attach-disk [INSTANCE_NAME] --disk [DISK_NAME] \
    --disk-scope regional --mode ro

其中:

  • [INSTANCE_NAME] 是您要連接永久磁碟的執行個體名稱。
  • [DISK_NAME] 是您要連接的磁碟名稱。

連接磁碟後,連線至執行個體並掛接磁碟。

為您要在唯讀模式中新增此磁碟的所在每一個執行個體重複此指令。

API

在 API 中,向 compute.instances.attachDisk 方法建構 POST 要求。在要求主體中,將 mode 參數指定為 READ_ONLY

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/attachDisk

{
 "source": "regions/[REGION]/disks/[DISK_NAME]",
 "mode": "READ_ONLY"
}

其中:

  • [PROJECT_ID] 是您的專案 ID。
  • [ZONE] 是執行個體的區域。
  • [INSTANCE_NAME] 是您要連接永久磁碟的執行個體名稱。
  • [REGION] 是磁碟所在的地區。
  • [DISK_NAME] 是您要連接的磁碟名稱。

連接磁碟後,連線至執行個體並掛接磁碟。

為您要在唯讀模式中新增此磁碟的每個執行個體重複此要求。

將區域永久磁碟遷移至地區永久磁碟

如要將現有的區域永久磁碟轉換成地區永久磁碟,請為目前的永久磁碟建立快照,然後利用該快照建立地區永久磁碟。

gcloud

gcloud 工具中使用 compute disks snapshot 指令,並指定 --zone 標記和 --snapshot-name 標記。

gcloud compute disks snapshot [DISK_NAME] \
    --zone [ZONE] \
    --snapshot-name [SNAPSHOT_DISK_NAME]

其中:

  • [DISK_NAME] 是您要拍攝快照的磁碟名稱。
  • [ZONE] 是來源區域磁碟所在的區域。
  • [SNAPSHOT_DISK_NAME] 是新建立快照的磁碟名稱。

請使用 compute disks create 以利用區域磁碟的快照來建立地區磁碟。請指定磁碟名稱,以及 --region--replica-zones--source-snapshot 標記。

gcloud compute disks create [DISK_NAME] \
    --region [REGION] \
    --replica-zones [ZONE1],[ZONE2] \
    --source-snapshot [SNAPSHOT_DISK_NAME]

其中:

  • [DISK_NAME] 是新磁碟的名稱。
  • [REGION] 是磁碟將會位於的地區。
  • [ZONE1][ZONE2] 是新地區永久磁碟備用資源所在的區域。
  • [SNAPSHOT_DISK_NAME] 是資源快照磁碟的名稱。

您可以使用相同的方法將地區磁碟遷移到區域磁碟。

API

在 API 中,對 compute.disk.createSnapshot 方法建構 POST 要求來建立磁碟快照。請在要求主體中指定磁碟所在的 zone、您要建立快照的 disk 名稱,以及 createSnapshot

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/disks/[DISK_NAME]/createSnapshot

其中:

  • [PROJECT_ID] 是您的專案 ID。
  • [ZONE] 是您磁碟所在的區域。
  • [DISK_NAME] 是您要建立快照的磁碟名稱。

在 API 中,建構 POST 要求來建立地區永久磁碟。請在 compute.regionDisks.insert 要求主體中讓新磁碟初始化,然後指定磁碟名稱和備用資源區域屬性。由於這是資料磁碟,因此請勿加入會建立空白磁碟的 sourceImage 屬性:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/disks

{
 "name": "[DISK_NAME]",
 "sourceSnapshot": "global/snapshots/[SNAPSHOT_NAME]",
 "replicaZones": [
 "projects/[PROJECT_ID]/zones/[ZONE1]",
 "projects/[PROJECT_ID]/zones/[ZONE2]"
 ],
}

其中:

  • [PROJECT_ID] 是您的專案 ID。
  • [REGION] 是磁碟將會位於的地區。
  • [DISK_NAME] 是新磁碟的名稱。
  • [SNAPSHOT_NAME] 是要復原的快照。
  • [ZONE1][ZONE2] 是新地區永久磁碟備用資源所在的區域。## 後續步驟
本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Compute Engine 說明文件