您可以將磁碟連接至每個執行個體,從多個虛擬機器 (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
-
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.
- Set a default region and zone.
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.
-
啟用磁碟共用功能
您可以將現有的 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 個虛擬機
- 容量為 2 TiB 以上:30 個 VM
- 以唯讀模式運作的區域或區域性平衡永久磁碟磁區最多支援 10 個執行個體。
- 對於 SSD 永久磁碟,Google 建議最多 100 個執行個體。
- 對於標準永久磁碟磁碟區,建議的最大值為 10 個執行個體。
如何在執行個體之間以唯讀模式共用磁碟
如果您未使用 Hyperdisk ML,請按照「將非開機磁碟連結至執行個體」一文的操作說明,將磁碟連結至多個執行個體。
如要將 Hyperdisk ML 磁碟區以唯讀模式連接至多個執行個體,您必須先將磁碟的存取模式設為唯讀模式。設定存取模式後,請將 Hyperdisk ML 磁碟區連接至執行個體。
Hyperdisk 的多重寫入模式
處於多重寫入模式的磁碟適用於下列用途:
- 實作 SQL Server 容錯移轉叢集基礎架構 (FCI)
- 叢集檔案系統 (多個執行個體都寫入相同磁碟)
- 採用主動/主動或主動/被動模式的高可用性系統。將相同磁碟連接至多個執行個體可避免中斷,因為如果一個執行個體發生故障,其他執行個體仍可存取磁碟,並繼續執行工作負載。
如果您的主要目標是透過運算執行個體共用檔案儲存空間,請考慮下列任一做法:
- Filestore:Google 的代管檔案儲存空間解決方案
- Cloud Storage
- Compute Engine 上的網路檔案伺服器
支援的 Hyperdisk 和多寫模式機器類型
您可以在多寫模式下使用 Hyperdisk Balanced 和 Hyperdisk Balanced High Availability 磁碟區。您最多可將單一磁碟區連接至 8 個執行個體。您無法將多重寫入模式的磁碟區連接至裸機執行個體。
Hyperdisk Balanced 支援下列機器類型的多重寫入模式:
Hyperdisk Balanced High Availability 支援下列機型類型的多重寫入模式:
Hyperdisk 的多重寫入模式支援 NVMe 介面。如果您要將處於多重寫入模式的磁碟連接至執行個體,則執行個體的開機磁碟也必須透過 NVMe 連接。
支援多寫入端模式的檔案系統
如要從多個執行個體存取磁碟,請使用下列其中一個選項:
- 持續性保留 (PR),特別適用於 SQL Server FCI 和 NetApp ONTAP 等 HA 系統。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 磁碟區的限制
- 您可以在多重寫入模式中,將單一 Hyperdisk 平衡或 Hyperdisk 平衡高可用性磁碟區附加至最多 8 個執行個體。
- 您無法在多重寫入模式下複製磁碟。
- 您無法在多寫入模式下,從磁碟建立快照、機器映像檔或磁碟映像檔。
- 建立或編輯執行個體時,您無法在多寫入者模式下建立 Hyperdisk 磁碟區。您必須先單獨建立磁碟,然後再將磁碟連接至執行個體。
- 除非將磁碟從所有執行個體中解除連結,否則無法在多重寫入模式中調整磁碟大小。
您可以對處於多重寫入模式的磁碟進行下列變更,即使磁碟已連接至多個執行個體也一樣:
- 修改已佈建的 IOPS 或處理量
- 將磁碟連接至其他執行個體
進行上述變更後,Compute Engine 會將磁碟的配置效能重新分配給所有已連結的執行個體。這項程序最多可能需要 6 小時才能完成。
您無法在多重寫入模式下,從磁碟建立映像檔。
您無法為多重寫入模式的磁碟啟用自動刪除功能。
您無法將處於多重寫入模式的磁碟用於執行個體的開機磁碟。
在單一租戶節點上,磁碟無法以多重寫入模式與執行個體搭配使用。
您必須使用與執行個體開機磁碟相同的介面類型。
如果磁碟處於多寫入模式,您就無法變更已連接至該磁碟的執行個體機器類型。
可用地區
支援 Hyperdisk Balanced 和 Hyperdisk Balanced High Availability 的所有地區均支援多寫入模式。
使用永久預訂功能的 I/O 隔離功能
Google 建議您在多重寫入模式下,使用永久保留 (PR) 磁碟來提供 I/O 隔離。永久保留空間可管理執行個體之間的磁碟存取權。這可避免執行個體同時寫入磁碟的相同部分,導致資料毀損。
多寫入端模式的 Hyperdisk 磁碟區支援 NVMe (規格 1.2.1) 保留功能。
支援的預留模式
系統支援下列預訂模式:
- Write Exclusive:只有一位預訂人和一位作者。所有其他註冊者/非註冊者僅能讀取。
- Write Exclusive - 僅限註冊者:只有一個預留位置。所有註冊者都將擁有磁碟的讀取和寫入存取權。未註冊的使用者僅有讀取權。
系統不支援下列預訂模式:
- 寫入專屬 - 所有註冊者
- 專屬存取權
- 專屬存取權 - 僅限註冊者
- 獨家內容 - 所有登錄者
支援 NVMe Get Features - Host Identifier
。執行個體編號會用來做為預設的 Host ID。
不支援下列 NVMe 預留功能:
- 設定功能 - 主機 ID
- 預訂通知:
- 取得「Log」頁面
- 預訂通知遮罩
支援的指令
NVMe 預留功能支援下列指令:
- 預訂登錄動作 (
RREGA
) - 取代/登錄/取消登錄 -IEKEY
- 預訂取得動作 (
RACQA
) - 取得/搶先取得 -IEKEY
- 預訂釋出動作 (
RRELA
) - 釋出/清除 -IEKEY
- 預訂報表
- 識別命名空間資料結構中的保留功能 (
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。大多數單一 VM 檔案系統 (例如 EXT4、XFS 和 NTFS) 並非設計用於與共用區塊儲存空間搭配使用。
詳情請參閱本文件中的「最佳做法」。如果您需要全代管檔案儲存空間,可以在 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 執行個體的作業的機制。
- 在以多寫模式使用永久磁碟磁碟區之前,請務必瞭解檔案系統,以及如何安全地將其與共用區塊儲存空間和多個執行個體的同時存取權搭配使用。
多重寫入模式下的 Persistent Disk 效能
在多重寫入模式下建立的永久磁碟磁碟區,有特定的 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-southeast1
europe-west1
us-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。多寫入者模式的永久磁碟磁碟區不支援 Persistent Disk 指標。
- 處於多重寫入模式的磁碟無法變更為唯讀模式。
- 您無法在多寫入模式下使用磁碟映像檔或快照來建立永久磁碟磁碟區。
- 您無法在多寫模式下,透過永久磁碟磁碟區建立快照或映像檔。
- 降低 IOPS 限制。詳情請參閱「磁碟效能」。
- 您無法調整多寫入者永久磁碟磁碟區的大小。
- 使用 Google Cloud CLI 建立執行個體時,您無法使用
--create-disk
標記建立多寫入者永久磁碟磁區。
在多個 VM 之間以多重寫入模式共用 SSD 永久磁碟磁區
您可以在同一區域的 N2 VM 之間,以多重寫入模式共用 SSD 永久磁碟磁碟區。如要進一步瞭解此模式的運作方式,請參閱「永久磁碟多寫入者模式」。您可以按照下列程序建立及連接多寫入者永久磁碟磁碟區:
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。
建立磁碟之後,請將其連接至任何執行中或已停止的 N2 機型 VM。使用
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 的名稱。
建立並連接新磁碟到執行個體後,請使用共用磁碟檔案系統格式化及掛接磁碟。大多數檔案系統無法使用共用儲存空間。請先確認檔案系統支援這些功能,再將檔案系統與多寫入者永久磁碟搭配使用。
後續步驟
- 瞭解跨可用區同步磁碟複製。
- 瞭解非同步複製。