只要將磁碟連接至每個執行個體,即可從多個虛擬機器 (VM) 執行個體存取同一磁碟。您可以將磁碟以唯讀模式或多重寫入模式連接至執行個體。
在唯讀模式下,多個執行個體只能從磁碟讀取資料。所有執行個體都無法寫入磁碟。在執行個體之間以唯讀模式共用磁碟,比在多個磁碟上複製相同資料更經濟實惠。
多重寫入模式可讓多個執行個體讀取及寫入同一磁碟。這項功能適用於高可用性 (HA) 共用檔案系統和資料庫,例如 SQL Server 容錯移轉叢集基礎架構 (FCI)。
您只能在相同區域的執行個體之間共用區域磁碟。區域磁碟只能與磁碟副本所在的區域中的執行個體共用。
在執行個體之間共用磁碟不會產生額外費用。 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。
-
- 設定預設地區和區域。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。
啟用磁碟共用功能
您可以將現有的 Hyperdisk 或 Persistent Disk 磁碟區連接至多個執行個體。不過,如果是 Hyperdisk 磁碟區,您必須先設定磁碟的存取模式,將磁碟設為多重寫入或唯讀模式。
Hyperdisk 磁碟區的存取模式是一種屬性,可決定執行個體如何存取磁碟。
可用的存取模式如下:
- 單一寫入者模式 (
READ_WRITE_SINGLE):這是預設的存取模式。 允許磁碟隨時連接至最多一個執行個體。執行個體具有磁碟的讀寫存取權。 - 唯讀模式 (
READ_ONLY_MANY):可同時以唯讀模式連結至多個執行個體。執行個體無法在此模式下寫入磁碟。必須開啟這項設定,才能進行唯讀分享。 - 多重寫入模式 (
READ_WRITE_MANY):可同時以讀寫模式附加至多個執行個體。如要使用多位寫入者共用功能,則須啟用這項設定。
各存取模式的支援情形會因 Hyperdisk 類型而異,詳見下表。您無法設定 Hyperdisk Throughput 磁碟區的存取模式。
| Hyperdisk 類型 | 支援的存取模式 |
|---|---|
| Hyperdisk Balanced Hyperdisk Balanced High Availability |
|
| Hyperdisk Extreme |
|
| Hyperdisk ML |
|
|
Hyperdisk Throughput |
|
對於可在執行個體之間共用的磁碟,您可以在建立磁碟時或之後設定存取模式。如需設定存取模式的操作說明,請參閱「設定磁碟的存取模式」。
Hyperdisk 和 Persistent Disk 的唯讀模式
本節將探討在多個執行個體之間共用唯讀模式的單一磁碟。
唯讀模式支援的磁碟類型
您可以將下列磁碟類型以唯讀模式連接至多個執行個體:
- Hyperdisk ML
- 區域和地區平衡型永久磁碟
- SSD 永久磁碟
- 標準永久磁碟
唯讀模式下的成效
以唯讀模式將磁碟連接至多個執行個體,不會影響磁碟效能。每個執行個體仍可達到執行個體機型可達的磁碟效能上限。
以唯讀模式共用磁碟的限制
- 可用區永久磁碟或 Hyperdisk ML 磁碟區必須與要連結磁碟區的所有執行個體位於相同可用區。如果是區域永久磁碟卷宗,所有執行個體都必須與其中一個磁碟副本位於同一個可用區。
- 如果以唯讀模式共用 Hyperdisk ML 磁碟區,就無法重新啟用磁碟的寫入存取權。
- 在每 30 秒間隔內,您最多可將 Hyperdisk ML 磁碟區連結至 100 個執行個體。
磁碟可連結的執行個體數量上限因磁碟類型而異:
如果是 Hyperdisk ML 磁碟區,執行個體數量上限取決於佈建大小,如下所示:
- 容量上限為 512 GiB 的磁碟區: 2,500 個執行個體
- 容量介於 513 GiB 至 1.5 TiB 的磁碟區: 1,000 個執行個體
- 容量介於 1.501 TiB 和 2 TiB 之間的磁碟區: 600 個執行個體
- 容量介於 2.001 TiB 和 4 TiB 之間的磁碟區: 300 個執行個體
- 容量為 4.001 TiB 和 16 TiB 的磁碟區: 128 個執行個體
- 容量達 16.001 TiB 以上的磁碟區: 30 個執行個體
- 唯讀模式的區域或地區平衡型永久磁碟磁碟區最多支援 10 個執行個體。
- 如果是 SSD 永久磁碟,Google 建議最多使用 100 個執行個體。
- 如果是標準永久磁碟磁碟區,建議最多 10 個執行個體。
如何在執行個體之間共用唯讀模式的磁碟
如果未使用 Hyperdisk ML,請按照「將非開機磁碟附加至執行個體」一文中的操作說明,將磁碟附加至多個執行個體。
如要以唯讀模式將 Hyperdisk ML 磁碟區連接至多個執行個體,請先將磁碟的存取模式設為唯讀模式。設定存取模式後,請將 Hyperdisk ML 磁碟區連接至執行個體。
Hyperdisk 的多重寫入模式
多重寫入模式的磁碟適用於下列用途:
- 導入 SQL Server FCI。
- 叢集檔案系統,其中多個執行個體都會寫入同一個磁碟
- 處於雙主動或主動/被動模式的高可用性系統。將同一磁碟連接至多個執行個體,可避免中斷作業,因為即使某個執行個體發生故障,其他執行個體仍可存取磁碟,並繼續執行工作負載。
如果主要目標是在運算執行個體之間共用檔案儲存空間,請考慮下列其中一個選項:
- Filestore:Google 的代管檔案儲存解決方案
- Cloud Storage
- Compute Engine 上的網路檔案伺服器
支援多重寫入模式的 Hyperdisk 和機器系列
下表列出支援多重寫入器模式的 Hyperdisk 類型。表格也會列出每個 Hyperdisk 類型支援多重寫入模式的機器系列,以及可同時附加至單一磁碟區的執行個體數量上限。
| Hyperdisk 類型 | 支援的機型 | 執行個體數量上限 |
|---|---|---|
| Hyperdisk Balanced | 8 | |
| Hyperdisk Balanced High Availability | 8 | |
| Hyperdisk Extreme | 16 |
多寫入端模式支援的檔案系統
如要從多個執行個體存取磁碟,請使用下列其中一個選項:
- 永久預留 (PR),特別是 SQL Server FCI 和 NetApp ONTAP 等高可用性系統。Google 建議使用 PR 指令提供 I/O 隔離,並維護資料完整性。如需支援的 PR 指令清單,請參閱「I/O fencing with persistent reservations」。
- 支援多個執行個體寫入相同磁碟區的叢集檔案系統。這類檔案系統的例子包括 OCFS2、VMFS 和 GFS2。
- 水平擴展軟體系統,例如 Lustre 和 IBM Spectrum Scale。
- 您自己的同步機制,用於協調並行讀取和寫入作業。
多重寫入模式下的 Hyperdisk 效能
本節資訊適用於下列磁碟類型:
- 處於多重寫入模式的所有 Hyperdisk Extreme 磁碟
- 2026 年 2 月 26 日後建立的多重寫入模式 Hyperdisk Balanced 和 Hyperdisk Balanced High Availability 磁碟。
將下列任一類型的磁碟連結至多個執行個體時,Compute Engine 會採用以用量為準的效能:執行個體主動使用磁碟時,才會獲得部分磁碟的佈建效能。如果所有其他附加的執行個體都處於閒置狀態,單一執行個體可能會耗用磁碟的整個佈建效能。
如果每個執行個體使用磁碟的時間不同,以用量為準的多重寫入器效能可協助您降低成本。這是因為您可以為多重寫入磁碟佈建最嚴苛執行個體所需的最大效能,而不必為所有執行個體的合併效能佈建。
分配給每個執行個體的效能取決於執行個體所需的磁碟效能。每個執行個體的最高效能最終會受到磁碟的佈建效能和執行個體的效能限制。
2026 年 2 月 26 日前,多重寫入模式下 Hyperdisk Balanced 和 Hyperdisk Balanced High Availability 磁碟區的效能
如果您的 Hyperdisk Balanced 和 Hyperdisk Balanced High Availability 磁碟區在 2026 年 2 月 26 日前處於多重寫入器模式,Google 建議您執行下列任一工作,啟用用量型效能:
如果未啟用以用量為準的消耗量,系統會平均分配每個執行個體的效能,即使執行個體未執行或未主動使用磁碟也一樣。
舉例來說,假設您將佈建 100,000 IOPS 的 Hyperdisk Balanced 磁碟區,連結至 2 個執行個體。無論其他執行個體的活動量為何,每個執行個體最多都可消耗 50,000 IOPS。同樣地,如果將磁碟區附加至 8 個執行個體,每個執行個體最多可消耗 12,500 IOPS。
以多重寫入模式共用 Hyperdisk 磁碟區的限制
- 您無法將處於多重寫入模式的磁碟區連接至裸機執行個體。
- 如果是可用區 Hyperdisk 磁碟區,所有連結至磁碟區的執行個體都必須位於同一個可用區。如果是區域 Hyperdisk 磁碟區,執行個體必須與其中一個磁碟區副本位於相同區域。
- 您最多可以將 8 個執行個體連接至單一 Hyperdisk Balanced 或 Hyperdisk Balanced High Availability 磁碟區,並採用多重寫入模式。您最多可將單一 Hyperdisk Extreme 磁碟區以多重寫入模式連接至 16 個執行個體。
- 您無法從多重寫入器模式的 Hyperdisk 磁碟區建立機器映像檔或磁碟映像檔。
- 建立或編輯執行個體時,您無法在多重寫入模式下建立 Hyperdisk 磁碟區。您必須先另外建立 Hyperdisk 磁碟區,然後再將其連結至執行個體。
- 除非將 Hyperdisk 磁碟區從所有執行個體卸離,否則無法在多重寫入器模式下調整磁碟區大小。
即使 Hyperdisk 磁碟區已連結至多個執行個體,您仍可對處於多重寫入模式的磁碟區進行下列變更:
- 修改佈建的 IOPS 或輸送量
- 將磁碟連接至其他執行個體
進行上述任一變更時,Compute Engine 會在所有連結的執行個體之間,重新分配 Hyperdisk 磁碟區的佈建效能。這個程序最多可能需要 6 小時才能完成。
您無法從多重寫入器模式的 Hyperdisk 磁碟區建立映像檔。
您無法在多重寫入模式中為 Hyperdisk 磁碟區啟用自動刪除功能。
您無法在多寫入端模式下使用 Hyperdisk 磁碟區,做為執行個體的開機磁碟。
多重寫入模式的 Hyperdisk 磁碟區無法與專屬節點上的執行個體搭配使用。
您必須使用與執行個體開機磁碟相同的介面類型。
如果執行個體已連接至處於多重寫入器模式的磁碟,就無法變更機型。
儲存空間集區僅支援多重寫入模式的 Hyperdisk Balanced 磁碟區。儲存空間集區不支援 Hyperdisk Balanced High Availability 和 Hyperdisk Extreme 磁碟區。
您可以在使用 SCSI 或 NVMe 儲存介面的機器類型上,搭配多寫入端模式的 Hyperdisk 磁碟區使用 Windows Server 容錯移轉叢集。不過,使用 NVMe 儲存介面的機器類型時,會受到下列限制:
- 您必須使用 2022 年或更新版本的 Windows Server。
- 您必須直接在多重寫入模式的 Hyperdisk 磁碟區上,建立每個叢集磁碟。系統不支援以多重寫入器模式使用 Hyperdisk 磁碟區的條紋或集區。
使用永久保留項目的 I/O 隔離
Google 建議您搭配使用永久預留 (PR) 和多重寫入模式的磁碟,提供 I/O 隔離功能。永久預留項目可管理執行個體之間的磁碟存取權。這可防止執行個體同時寫入磁碟的相同部分,避免資料毀損。
多寫入端模式的 Hyperdisk 磁碟區支援 NVMe (規格 1.2.1) 預留空間。
支援的預留模式
系統支援下列預訂模式:
- 寫入專屬:只有一個預留項目持有者和一個寫入者。其他註冊者和未註冊者只有讀取權限。
- 專屬存取權:只有預留項目持有者 (讀者和寫入者) 擁有存取權。其他註冊者和非註冊者則沒有讀取或寫入權限。
- 寫作專屬 - 僅限註冊者:只有一位預約者。所有註冊者都將擁有磁碟的讀寫權限。未註冊者只能讀取。
- 專屬存取權 - 僅限註冊者:只有一人可預訂。所有註冊者都將擁有磁碟的讀寫權限。未註冊者將無法讀取或寫入。
- 專屬寫入 - 所有註冊者:所有註冊者都會成為預訂者,並擁有磁碟的讀寫權限。未註冊者只能讀取。
- 專屬存取權 - 所有註冊者:所有註冊者都會成為預約保留者,並具備磁碟的讀寫權限。未註冊者將無法讀取或寫入。
支援 NVMe Get Features - Host Identifier。執行個體編號會做為預設主機 ID。
不支援下列 NVMe 預留功能:
- 設定功能 - 主機 ID
- 預訂通知:
- 取得記錄頁面
- 預訂通知遮罩
支援的指令
NVMe 預留功能支援下列指令:
- 預留項目註冊動作 (
RREGA) - 取代/註冊/取消註冊 -IEKEY - 預留項目取得動作 (
RACQA) - 取得/搶占 -IEKEY - 預留項目發布動作 (
RRELA) - 發布/清除 -IEKEY - 預訂報表
- identify 命名空間資料結構中的「預訂功能」(
RESCAP) 欄位。
NVMe 預留功能不支援下列指令:
- 搶占和中止
- 停用「斷電後仍可繼續作業」(PTPL)。PTPL 一律會啟用。
如何以多重寫入模式共用磁碟
如要以多重寫入模式將磁碟連接至多個執行個體,請先將磁碟的存取模式設為多重寫入。您可以在建立磁碟時設定磁碟的存取模式。
您也可以為現有磁碟設定存取模式,但必須先將磁碟從所有執行個體卸離。
如要建立及使用多重寫入模式的新磁碟,請按照下列步驟操作:
- 建立磁碟,並將存取模式設為多重寫入。如需操作說明,請參閱「將 Hyperdisk 新增至執行個體」。
- 將磁碟連接至每個執行個體。
如要在多寫入端模式下使用現有磁碟,請按照下列步驟操作:
- 從所有執行個體卸離磁碟。
- 將磁碟的存取模式設為多重寫入。
- 將磁碟連接至每個執行個體。
永久磁碟區的多重寫入模式
您最多可以同時將 SSD 永久磁碟磁碟區以多重寫入模式附加至兩個 N2 虛擬機器 (VM) 執行個體,讓兩個 VM 都能讀取及寫入磁碟。
如果您有超過 2 個 N2 VM,或使用任何其他機器系列,可以採用下列其中一個選項:
- 將執行個體連線至 Cloud Storage
- 將執行個體連線至 Filestore
- 在 Compute Engine 上建立網路檔案伺服器
如要為新的永久磁碟卷宗啟用多重寫入模式,請建立新的永久磁碟卷宗,並在 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* | |
如要瞭解如何在多個 VM 之間共用永久磁碟,請參閱「在 VM 之間共用永久磁碟」。
以多重寫入模式共用磁碟的限制
- 多重寫入器模式僅支援 SSD 類型的永久磁碟磁碟區。
- 您可以在任何可用區以多重寫入模式建立永久磁碟區,但只能將該磁碟連接至下列位置的 VM:
australia-southeast1europe-west1us-central1(僅限us-central1-a和us-central1-c區域)us-east1(僅限us-east1-d區域)us-west1(僅限us-west1-b和us-west1-c區域)
- 附加的 VM 必須採用 N2 機型。
- 磁碟大小下限為 10 GiB。
- 處於多重寫入模式的磁碟一次最多只能連接 2 個 VM。 多重寫入模式的永久磁碟磁碟區不支援永久磁碟指標。
- 處於多重寫入模式的磁碟無法變更為唯讀模式。
- 您無法從多重寫入模式的永久磁碟磁碟區建立映像檔。
- IOPS 上限較低。詳情請參閱磁碟效能。
- 您無法調整多重寫入永久磁碟卷宗的大小。
- 使用 Google Cloud CLI 建立執行個體時,您無法使用
--create-disk旗標建立多重寫入者永久磁碟磁碟區。
在 VM 之間共用處於多重寫入模式的 SSD 永久磁碟磁碟區
您可以在同一個區域中,以多重寫入模式在 N2 VM 之間共用 SSD 永久磁碟卷宗。如要進一步瞭解這項模式的運作方式,請參閱「永久磁碟多重寫入器模式」。您可以按照下列程序,建立及連結多重寫入 Persistent Disk 磁碟區:
gcloud
使用 gcloud CLI 建立及連接區域永久磁碟磁碟區:
使用
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 (多重寫入模式)。
建立磁碟之後,請將其連接至任何執行中或已停止的 VM,並使用 N2 機型。使用
gcloud compute instances attach-disk指令:gcloud compute instances attach-disk INSTANCE_NAME \ --disk DISK_NAME
更改下列內容:
INSTANCE_NAME:您要在其中新增區域永久磁碟卷宗的 N2 VM 名稱DISK_NAME:要附加至 VM 的新磁碟名稱
重複執行
gcloud compute instances attach-disk指令,但將 INSTANCE_NAME 替換為第二個 VM 的名稱。
建立新磁碟並連接至執行個體後,請使用共用磁碟檔案系統格式化及掛接磁碟。大多數檔案系統無法使用共用儲存空間。請先確認檔案系統支援這些功能,再搭配多寫入者永久磁碟使用。您無法使用一般將磁碟掛接至單一 VM 的程序,將磁碟掛接至多個 VM。
REST
使用 Compute Engine API 建立 SSD 永久磁碟磁碟區,並以多寫入端模式連結至 N2 VM。
在 API 中,使用
disks.insert方法建構POST要求,以建立區域永久磁碟磁碟區。請包含name、sizeGb和type屬性。如要將這個新磁碟建立為空白且未格式化的非開機磁碟,請勿為這個磁碟指定來源映像檔或來源快照。加入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:專案 IDZONE:VM 和新磁碟所在的可用區DISK_NAME:新磁碟的名稱DISK_SIZE:新磁碟的大小 (以 GB 為單位)。SSD 永久磁碟磁碟區可接受的大小範圍為 1 GB 到 65,536 GB,標準永久磁碟磁碟區則為 200 GB 到 65,536 GB (多重寫入模式)。
如要將磁碟連結至執行個體,請對
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:專案 IDZONE:VM 和新磁碟所在的可用區INSTANCE_NAME:要新增永久磁碟磁碟區的 VM 名稱。DISK_NAME:新磁碟的名稱
如要將磁碟掛接到第二部 VM,請重複執行上一個步驟的
instances.attachDisk指令。將INSTANCE_NAME設為第二個 VM 的名稱。
建立新磁碟並連接至執行個體後,請使用共用磁碟檔案系統格式化及掛接磁碟。大多數檔案系統無法使用共用儲存空間。請先確認檔案系統支援這些功能,再搭配多寫入者永久磁碟使用。
後續步驟
- 瞭解跨可用區同步磁碟複製。
- 瞭解非同步複製。