在執行個體之間共用磁碟


只要將磁碟連接至各個虛擬機器 (VM) 執行個體,即可從多個 VM 執行個體存取同一磁碟。您可以將磁碟以唯讀模式或多重寫入模式連接至執行個體。

唯讀模式下,多個執行個體只能從磁碟讀取資料。沒有任何執行個體可以寫入磁碟。在執行個體之間以唯讀模式共用磁碟,比在多個磁碟上複製相同資料更經濟實惠。

多重寫入模式可讓多個執行個體讀取及寫入同一個磁碟。這項功能適用於高可用性 (HA) 共用檔案系統和資料庫,例如 SQL Server 容錯移轉叢集基礎架構 (FCI)。

您只能在相同區域的執行個體之間共用區域磁碟。區域磁碟只能與和磁碟副本位於相同區域的執行個體共用。

在執行個體之間共用磁碟不會產生額外費用。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.
      3. REST

        如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 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.

        詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。

啟用磁碟共用功能

您可以將現有的 Hyperdisk 或 Persistent Disk 磁碟區連接至多個執行個體。不過,如果是 Hyperdisk 磁碟區,您必須先設定磁碟的存取模式,將磁碟設為多重寫入或唯讀模式。

Hyperdisk 磁碟區的存取模式是一種屬性,可決定執行個體如何存取磁碟。

可用的存取模式如下:

  • 單一寫入者模式 (READ_WRITE_SINGLE):這是預設的存取模式。 磁碟一次最多只能連接一個執行個體。執行個體具有磁碟的讀寫存取權。
  • 唯讀模式 (READ_ONLY_MANY):可同時以唯讀模式連接至多個執行個體。執行個體無法在此模式下寫入磁碟。必須開啟這項設定,才能進行唯讀分享。
  • 多重寫入模式 (READ_WRITE_MANY):可同時以讀寫模式附加至多個執行個體。如要使用多重寫入者共用功能,則須啟用這項設定。

各存取模式的支援情形會因 Hyperdisk 類型而異,詳見下表。您無法為 Hyperdisk Throughput 或 Hyperdisk Extreme 磁碟區設定存取模式。

Hyperdisk 類型 支援的存取模式
Hyperdisk Balanced
Hyperdisk Balanced High Availability
  • 單一寫手模式
  • 多重寫入模式
Hyperdisk ML
  • 單一寫手模式
  • 唯讀模式
Hyperdisk Throughput
Hyperdisk Extreme
  • 單一寫手模式

對於可在執行個體之間共用的磁碟,您可以在建立磁碟時或之後設定存取模式。如需設定存取模式的操作說明,請參閱設定磁碟的存取模式

Hyperdisk 和 Persistent Disk 的唯讀模式

本節將說明如何在多個執行個體之間共用唯讀模式的單一磁碟。

唯讀模式支援的磁碟類型

您可以將下列磁碟類型以唯讀模式連接至多個執行個體:

  • Hyperdisk ML
  • 區域和地區平衡永久磁碟
  • SSD 永久磁碟
  • 標準永久磁碟

唯讀模式下的成效

以唯讀模式將磁碟連接至多個執行個體,不會影響磁碟效能。每個執行個體仍可達到該執行個體機型可達的磁碟效能上限。

以唯讀模式共用磁碟的限制

  • 如果以唯讀模式共用 Hyperdisk ML 磁碟區,就無法重新啟用磁碟的寫入存取權。
  • 每隔 30 秒,您最多可以將 Hyperdisk ML 磁碟區連結至 100 個執行個體。
  • 磁碟可連結的執行個體數量上限因磁碟類型而異:

    • 如果是 Hyperdisk ML 磁碟區,執行個體數量上限取決於佈建大小,如下所示:

      • 容量小於 256 GiB 的磁碟區:2,500 部 VM
      • 容量為 256 GiB 以上,但小於 1 TiB 的磁碟區: 1,500 部 VM
      • 容量為 1 TiB 以上,但小於 2 TiB 的磁碟區: 600 部 VM
      • 容量達 2 TiB 以上的磁碟區: 30 部 VM
    • 唯讀模式的區域或地區平衡永久磁碟磁碟區最多支援 10 個執行個體。
    • 如果是 SSD 永久磁碟,Google 建議最多使用 100 個執行個體。
    • 如果是標準永久磁碟磁碟區,建議最多使用 10 個執行個體。

如何在執行個體之間共用唯讀模式的磁碟

如果未使用 Hyperdisk ML,請按照「將非開機磁碟附加至執行個體」一文中的操作說明,將磁碟附加至多個執行個體。

如要以唯讀模式將 Hyperdisk ML 磁碟區連接至多個執行個體,請先將磁碟的存取模式設為唯讀模式。設定存取模式後,請將 Hyperdisk ML 磁碟區連接至執行個體

Hyperdisk 多重寫入模式

多重寫入模式的磁碟適用於下列用途:

  • 導入 SQL Server FCI。
  • 叢集檔案系統,其中多個執行個體都會寫入同一個磁碟
  • 雙主動或主動/被動模式的高可用性系統。將同一磁碟連接至多個執行個體,可避免中斷作業,因為如果某個執行個體發生故障,其他執行個體仍可存取磁碟,並繼續執行工作負載。

如果您的主要目標是在運算執行個體之間共用檔案儲存空間,請考慮下列其中一個選項:

支援多重寫入模式的 Hyperdisk 和機器類型

您可以在多重寫入器模式中使用 Hyperdisk Balanced 和 Hyperdisk Balanced High Availability 磁碟區。您最多可將處於多重寫入模式的單一磁碟區連接至 8 個執行個體。您無法將多重寫入模式的磁碟區連結至裸機執行個體。

Hyperdisk Balanced 支援下列機型的多重寫入模式:

Hyperdisk Balanced High Availability 支援下列機型的多重寫入模式:

Hyperdisk 的多重寫入模式支援 NVMe 介面。如果以多重寫入模式將磁碟附加至執行個體,執行個體的開機磁碟也必須以 NVMe 附加。

多寫入端模式支援的檔案系統

如要從多個執行個體存取磁碟,請使用下列其中一個選項:

  • 永久保留 (PR),特別是 SQL Server FCI 和 NetApp ONTAP 等高可用性系統。Google 建議使用 PR 指令提供 I/O 隔離,並維護資料完整性。如需支援的 PR 指令清單,請參閱「使用永久保留項目的 I/O 隔離」。
  • 支援多個執行個體寫入相同磁碟區的叢集檔案系統。這類檔案系統包括 OCFS2、VMFS 和 GFS2。
  • 向外擴展式軟體系統,例如 Lustre 和 IBM Spectrum Scale。
  • 您自己的同步機制,可協調並行讀取和寫入作業。

多重寫入模式下的 Hyperdisk 效能

將磁碟以多重寫入模式附加至多個執行個體時,磁碟的佈建效能會平均分配給所有執行個體,即使執行個體未執行或未主動使用磁碟也一樣。不過,每個執行個體的最高效能最終仍會受到各執行個體機器類型的總處理量和 IOPS 限制。

舉例來說,假設您將佈建 100,000 IOPS 的 Hyperdisk Balanced 磁碟區,連結至 2 個執行個體。每個執行個體會同時取得 50,000 IOPS。

下表顯示本例中每個執行個體可獲得的效能,取決於您將磁碟附加至多少個執行個體。每次將磁碟附加至其他執行個體時,Compute Engine 會非同步調整先前附加至各執行個體的效能。

附加的執行個體數量 1 2 3 4 5 6 7 8
每個執行個體的 IOPS 上限
100,000 50,000 ~33,333 25,000 20,000 ~16,667 14285 12,500
每個執行個體的最大總處理量 (MiBps)

1,200 600 400 300 240 200 ~172 150

以多重寫入模式共用 Hyperdisk 磁碟區的限制

  • 您最多可將 8 個執行個體連接至單一 Hyperdisk Balanced 或 Hyperdisk Balanced High Availability 磁碟區 (採用多重寫入模式)。
  • 您無法複製處於多重寫入模式的 Hyperdisk 磁碟區。
  • 您無法在多重寫入器模式下,從 Hyperdisk 磁碟區建立即時快照、機器映像檔或磁碟映像檔。
  • 建立或編輯執行個體時,您無法在多重寫入器模式下建立 Hyperdisk 磁碟區。您必須先分別建立 Hyperdisk 磁碟區,然後再將其連結至執行個體。
  • 除非將磁碟區從所有執行個體卸離,否則無法在多重寫入模式下調整 Hyperdisk 磁碟區大小。
  • 即使 Hyperdisk 磁碟區已連結至多個執行個體,您仍可對處於多重寫入模式的磁碟區進行下列變更:

    • 修改佈建的 IOPS 或輸送量
    • 將磁碟連接至其他執行個體

    進行上述任一變更時,Compute Engine 會在所有連結的執行個體之間,重新分配 Hyperdisk 磁碟區的佈建效能。這個程序最多可能需要 6 小時才能完成。

  • 您無法從多重寫入器模式的 Hyperdisk 磁碟區建立映像檔。

  • 您無法在多重寫入模式中為 Hyperdisk 磁碟區啟用自動刪除功能。

  • 您無法在多寫入端模式下使用 Hyperdisk 磁碟區,做為執行個體的開機磁碟。

  • 多重寫入模式的 Hyperdisk 磁碟區無法與專屬租戶節點上的執行個體搭配使用。

  • 您必須使用與執行個體開機磁碟相同的介面類型。

  • 如果執行個體已連接至處於多重寫入模式的磁碟,就無法變更機器類型。

  • 儲存空間集區僅支援多重寫入模式的 Hyperdisk Balanced 磁碟區。儲存空間集區不支援 Hyperdisk Balanced High Availability 磁碟區。

  • 您可以在使用 SCSI 或 NVMe 儲存空間介面的機器類型上,搭配多寫入端模式的 Hyperdisk 磁碟區使用 Windows Server 容錯移轉叢集。不過,使用 NVMe 儲存介面的機器類型時,會受到下列限制:

    • 您必須使用 2022 年或更新版本的 Windows 伺服器。
    • 您必須直接在多重寫入 Hyperdisk 磁碟區上建立每個叢集磁碟。不支援多寫入者 Hyperdisk 磁碟區的條帶化或集區化。
    • 如果 Hyperdisk 磁碟區已連線至正在執行的 VM,永久保留指令可能會失敗。如要解決這個問題,請重新啟動 VM,或只在 VM 停止時附加 Hyperdisk 磁碟區。

可用地區

您可以在所有提供 Hyperdisk Balanced 和 Hyperdisk Balanced High Availability 的區域啟用多寫入器模式。如需支援的區域清單,請參閱「Hyperdisk Balanced 的區域可用性」和「Hyperdisk Balanced High Availability 的區域可用性」。

使用永久保留項目的 I/O 隔離

Google 建議您搭配使用永久預留 (PR) 和多重寫入模式的磁碟,提供 I/O 隔離功能。永久預留項目可管理執行個體之間的磁碟存取權。這麼做可防止執行個體同時寫入磁碟的相同部分,避免資料毀損。

多寫入模式的 Hyperdisk 磁碟區支援 NVMe (規格 1.2.1) 預留空間。

支援的預留模式

系統支援下列預訂模式:

  1. 寫入專屬:只能有一位預留項目持有者和一位寫入者。其他註冊者/非註冊者則只有讀取權限。
  2. 撰寫專屬內容 - 僅限註冊者:只有一位預約者。所有註冊者都將擁有磁碟的讀寫權限。未註冊者只能讀取內容。

系統不支援下列預訂模式:

  • Write Exclusive - All registrants
  • 專屬存取權
  • 專屬存取權 - 僅限註冊者
  • 專屬存取權 - 所有註冊者

支援 NVMe Get Features - Host Identifier。執行個體編號會做為預設主機 ID。

系統不支援下列 NVMe 預留功能:

  • 設定功能 - 主機 ID
  • 預訂通知:
    • 取得記錄頁面
    • 預訂通知遮罩

支援的指令

NVMe 預留功能支援下列指令:

  • 預訂註冊動作 (RREGA) - 取代/註冊/取消註冊 - IEKEY
  • 預訂取得動作 (RACQA) - 取得/搶占 - IEKEY
  • 預訂發布動作 (RRELA) - 發布/清除 - IEKEY
  • 預訂報表
  • identify 命名空間資料結構中的「預訂功能」(RESCAP) 欄位。

NVMe 預留功能不支援下列指令:

  • 搶占和中止
  • 停用「斷電後持續運作」(PTPL)。PTPL 一律會啟用。

如何以多重寫入模式共用磁碟

如要以多重寫入模式將磁碟連接至多個執行個體,請務必先將磁碟的存取模式設為多重寫入。您可以在建立磁碟時設定磁碟的存取模式。

您也可以為現有磁碟設定存取模式,但必須先將磁碟從所有執行個體卸離。

如要建立及使用多重寫入模式的新磁碟,請按照下列步驟操作:

  1. 建立磁碟,並將存取模式設為多重寫入。如需操作說明,請參閱「將 Hyperdisk 新增至執行個體」。
  2. 將磁碟連接至每個執行個體

如要在多寫入端模式下使用現有磁碟,請按照下列步驟操作:

  1. 從所有執行個體卸離磁碟。
  2. 將磁碟的存取模式設為多重寫入
  3. 將磁碟連接至每個執行個體

永久磁碟區的多重寫入模式

您最多可同時將 SSD 永久磁碟磁碟區以多重寫入模式連結至兩個 N2 虛擬機器 (VM) 執行個體,讓兩個 VM 都能讀取及寫入磁碟。

如果您有超過 2 個 N2 VM,或使用任何其他機器系列,可以採用下列其中一個選項:

如要為新的永久磁碟卷宗啟用多重寫入模式,請建立新的永久磁碟卷宗,並在 gcloud CLI 中指定 --multi-writer 旗標,或在 Compute Engine API 中指定 multiWriter 屬性。

多重寫入模式的 Persistent Disk 磁碟區提供共用區塊儲存功能,並為建構分散式儲存系統和類似的高可用性服務,奠定基礎架構。在多寫入端模式下使用永久磁碟磁碟區時,請使用向外擴充的儲存空間軟體系統,該系統能夠協調多個 VM 對永久磁碟裝置的存取權。這類儲存系統的範例包括 Lustre 和 IBM Spectrum Scale。EXT4、XFS 和 NTFS 等大多數單一 VM 檔案系統,並非設計用於共用區塊儲存空間。

詳情請參閱本文的「最佳做法」。如果您需要全代管的檔案儲存空間,可以在 Compute Engine 執行個體中掛接 Filestore 檔案共用區

多重寫入模式下的永久磁碟區支援部分 SCSI-3 永久保留 (SCSI PR) 指令。高可用性應用程式可以使用這些指令進行 I/O 隔離和容錯移轉設定。

系統支援下列 SCSI PR 指令:

  • IN {REPORT CAPABILITIES, READ FULL STATUS, READ RESERVATION, READ KEYS}
  • OUT {REGISTER、REGISTER_AND_IGNORE_EXISTING_KEY、RESERVE、PREEMPT、CLEAR、 RELEASE}

如需操作說明,請參閱在 VM 之間以多重寫入模式共用 SSD 永久磁碟磁碟區

多重寫入模式支援的永久磁碟類型

您最多可以同時將 SSD 永久磁碟以多重寫入模式附加至 2 個 N2 VM。

多位作者模式的最佳做法

  • 使用 SCSI PR 指令進行 I/O 隔離,可確保永久磁碟資料的狀態一致。部分檔案系統不具備當機一致性,因此使用 SCSI PR 指令時可能會損毀。
  • 許多檔案系統 (例如 EXT4、XFS 和 NTFS) 並非設計用於共用區塊儲存空間,也沒有機制可同步處理或執行來自多個 VM 執行個體的作業。
  • 在多重寫入器模式中使用永久磁碟磁碟區前,請務必瞭解檔案系統,以及如何安全地搭配共用區塊儲存空間使用,並從多個執行個體同時存取。

多重寫入模式下的永久磁碟效能

以多重寫入模式建立的永久磁碟區,IOPS 和總處理量有特定限制。

區域 SSD 永久磁碟多重寫入模式
最大持續 IOPS
每 GB 的讀取 IOPS 30
每 GB 的寫入 IOPS 30
每執行個體的讀取 IOPS 15,000 至 100,000*
每執行個體的寫入 IOPS 15,000 至 100,000*
最大持續總處理量 (MB/秒)
每 GB 的讀取總處理量 0.48
每 GB 的寫入總處理量 0.48
每執行個體的讀取總處理量 240 至 1,200*
每執行個體的寫入總處理量 240 至 1,200*
* 永久磁碟 IOPS 和總處理量效能取決於磁碟大小、執行個體 vCPU 數量和 I/O 區塊大小,以及其他因素
將可多重寫入的磁碟連接至多個虛擬機器執行個體,並不會影響整體的效能或費用。每個磁碟均有效能限制,而每一部機器只會分配到每個磁碟的部分效能。

如要瞭解如何在多個 VM 之間共用永久磁碟,請參閱「在 VM 之間共用永久磁碟」。

以多重寫入模式共用磁碟的限制

  • 多重寫入模式僅支援 SSD 類型的永久磁碟磁碟區
  • 您可以在任何可用區中建立多重寫入模式的永久磁碟區,但只能將該磁碟連接至下列位置的 VM:
    • australia-southeast1
    • europe-west1
    • us-central1 (僅限 us-central1-aus-central1-c 區域)
    • us-east1 (僅限 us-east1-d 區域)
    • us-west1 (僅限 us-west1-bus-west1-c 區域)
  • 附加的 VM 必須採用 N2 機器類型
  • 磁碟大小下限為 10 GiB。
  • 處於多重寫入模式的磁碟一次最多只能連接 2 部 VM。 多重寫入模式的永久磁碟磁碟區不支援永久磁碟指標
  • 處於多重寫入模式的磁碟無法變更為唯讀模式。
  • 您無法使用磁碟映像檔或快照,在多重寫入模式下建立永久磁碟磁碟區。
  • 您無法在多重寫入模式下,從永久磁碟磁碟區建立快照或映像檔。
  • IOPS 限制較低。詳情請參閱磁碟效能
  • 您無法調整多重寫入永久磁碟磁區的大小。
  • 使用 Google Cloud CLI 建立執行個體時,無法使用 --create-disk 旗標建立多重寫入永久磁碟卷宗。

在 VM 之間共用處於多重寫入模式的 SSD 永久磁碟磁碟區

您可以在同一個區域中,以多重寫入模式在 N2 VM 之間共用 SSD 永久磁碟卷宗。如要進一步瞭解這項模式的運作方式,請參閱「永久磁碟多重寫入模式」。您可以按照下列程序,建立及連結多重寫入永久磁碟卷:

gcloud

使用 gcloud CLI 建立及連結區域永久磁碟磁碟區:

  1. 使用 gcloud beta compute disks create 指令建立區域永久磁碟卷宗。加入 --multi-writer 標記,表示磁碟必須以多重寫入模式在 VM 之間共用。

    gcloud beta compute disks create DISK_NAME \
       --size DISK_SIZE \
       --type pd-ssd \
       --multi-writer
    

    更改下列內容:

    • DISK_NAME:新磁碟的名稱
    • DISK_SIZE:新磁碟的大小 (以 GB 為單位)。SSD 永久磁碟磁區可接受的大小範圍為 1 GB 至 65,536 GB,標準永久磁碟磁區在多重寫入模式下可接受的大小範圍為 200 GB 至 65,536 GB。
  2. 建立磁碟之後,請將其連接至任何執行中或已停止的 VM,並使用 N2 機型。使用 gcloud compute instances attach-disk 指令

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

    更改下列內容:

    • INSTANCE_NAME:您要在其中新增區域永久磁碟卷冊的 N2 VM 名稱
    • DISK_NAME:要附加至 VM 的新磁碟名稱
  3. 重複執行 gcloud compute instances attach-disk 指令,但將 INSTANCE_NAME 替換為第二個 VM 的名稱。

建立新磁碟並連接至執行個體後,請使用共用磁碟檔案系統格式化及掛接磁碟。大多數檔案系統無法使用共用儲存空間。使用多重寫入者永久磁碟前,請先確認檔案系統是否支援這些功能。您無法使用一般將磁碟掛接至單一 VM 的程序,將磁碟掛接至多個 VM。

REST

使用 Compute Engine API 建立 SSD 永久磁碟磁碟區,並以多寫入端模式連結至 N2 VM。

  1. 在 API 中,使用 disks.insert 方法建構 POST 要求,以建立區域永久磁碟磁碟區。請包含 namesizeGbtype 屬性。如要將這個新磁碟建立為空白且未格式化的非開機磁碟,請勿為這個磁碟指定來源映像檔或來源快照。加入 multiWriter 屬性,並將值設為 True,表示磁碟必須在多重寫入模式下,於 VM 之間共用。

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/disks
    
    {
    "name": "DISK_NAME",
    "sizeGb": "DISK_SIZE",
    "type": "zones/ZONE/diskTypes/pd-ssd",
    "multiWriter": "True"
    }
    

    更改下列內容:

    • PROJECT_ID:您的專案 ID
    • ZONE:VM 和新磁碟所在的可用區
    • DISK_NAME:新磁碟的名稱
    • DISK_SIZE:新磁碟的大小 (以 GB 為單位)。SSD 永久磁碟磁區可接受的大小範圍為 1 GB 至 65,536 GB,標準永久磁碟磁區在多重寫入模式下可接受的大小範圍為 200 GB 至 65,536 GB。
  2. 如要將磁碟連結至執行個體,請對 compute.instances.attachDisk 方法建構 POST 要求。包含您剛建立的區域永久磁碟磁碟區的網址:

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

    更改下列內容:

    • PROJECT_ID:您的專案 ID
    • ZONE:VM 和新磁碟所在的可用區
    • INSTANCE_NAME:要新增永久磁碟磁碟區的 VM 名稱。
    • DISK_NAME:新磁碟的名稱
  3. 如要將磁碟掛接到第二部 VM,請重複執行上一個步驟的 instances.attachDisk 指令。將 INSTANCE_NAME 設為第二個 VM 的名稱。

建立新磁碟並連接至執行個體後,請使用共用磁碟檔案系統格式化及掛接磁碟。大多數檔案系統無法使用共用儲存空間。請先確認檔案系統支援這些功能,再搭配多重寫入者永久磁碟使用。

後續步驟