您可以使用 Google Cloud Hyperdisk 和永久磁碟磁碟區,做為 Compute Engine 執行個體的開機磁碟和資料磁碟。
本文說明如何完成下列工作:
建立含有原始磁碟資料的新磁碟,將磁碟轉換為其他 Persistent Disk 或 Hyperdisk 類型。視您選擇的新磁碟類型而定,您可以享有下列優勢:
- 選擇速度更快的磁碟類型,即可達到更高的效能
- 選擇更具成本效益的磁碟類型,降低成本
設定 Compute Engine 是否要在您刪除運算執行個體時,一併刪除該執行個體的開機磁碟或資料磁碟。即使磁碟未連接至任何執行個體,在刪除前仍會產生費用。如要降低費用,可以啟用自動刪除功能,在連接的執行個體刪除後,自動刪除不需要的磁碟。
更新 Hyperdisk 磁碟區的存取模式,啟用或停用多個 Compute Engine 執行個體對磁碟區的存取權。
如要變更 Hyperdisk 或 Persistent Disk 磁碟區的大小,請分別參閱「修改 Hyperdisk 磁碟區的大小或佈建效能」和「修改 Persistent Disk 的大小」。
變更 Persistent Disk 磁碟區類型
有時,您需要變更特定 Persistent Disk 磁碟區的類型,以符合效能或定價需求。舉例來說,您可能想將工作負載的資料磁碟從標準永久磁碟變更為平衡型永久磁碟。
您無法直接變更現有永久磁碟磁碟區的類型。您必須為現有磁碟建立快照,然後使用該快照建立新類型的磁碟。
如要將 Persistent Disk 磁碟區 (來源磁碟) 變更為其他 Persistent Disk 類型 (新磁碟),請按照下列程序操作:
如果來源磁碟已連接至運算執行個體,請停止執行個體。
根據來源磁碟的快照建立新磁碟。
如要開始使用新磁碟,請從執行個體卸離來源磁碟,然後連接剛建立的新磁碟。
如果來源磁碟是開機磁碟:
如果來源磁碟是非開機磁碟:
確認新磁碟運作正常。
修改磁碟的自動刪除設定
為避免意外遺失資料,您可以控管 Compute Engine 是否要在刪除執行個體時,自動刪除附加至執行個體的 Google Cloud Hyperdisk 或 Persistent Disk 磁碟區。本機 SSD 磁碟一律會與執行個體一併刪除。
附加至執行個體的每個 Google Cloud Hyperdisk 或 Persistent Disk 磁碟區,其 autoDelete 屬性會控制這項行為。
如要在刪除執行個體時保留特定磁碟區,請將該磁碟區的 autoDelete 屬性設為 false。相反地,如要在刪除執行個體時刪除磁碟區,請將 autoDelete 屬性設為 true。
如果磁碟是以唯讀模式連接至執行個體,則無法自動刪除。
控制台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
選取與磁碟相關聯的執行個體。
按一下執行個體名稱。「VM instance details」(VM 執行個體詳細資料) 頁面隨即顯示。
按一下「Edit」(編輯)。
如要更新磁碟的自動刪除設定,請在「Storage」(儲存空間) 區段中按照下列步驟操作:
- 在「Boot disk」(開機磁碟) 標題下方,選取開機磁碟的「Deletion Rule」(刪除規則)。
- 針對附加至執行個體的每個額外磁碟,請在「Additional disks」(其他磁碟) 區段中找到該磁碟,然後按照下列步驟操作:
- 按一下「 編輯磁碟」。「Existing disk」(現有磁碟) 窗格隨即開啟。
- 在「連接模式」下方,設定磁碟的「刪除規則」。如要儲存磁碟設定並關閉窗格,請按一下「Save」(儲存)。
點按「儲存」,儲存變更。
gcloud
使用 gcloud compute instances set-disk-auto-delete 指令設定磁碟的自動刪除狀態。
如要在刪除執行個體時保留磁碟,請指定 --no-auto-delete 旗標。如要刪除磁碟,請指定 --auto-delete 旗標。
如果執行個體連接多個磁碟,則必須為連接至執行個體的每個磁碟執行指令。
gcloud compute instances set-disk-auto-delete INSTANCE_NAME \ AUTO_DELETE_SETTING \ --disk DISK_NAME
更改下列內容:
INSTANCE_NAME:執行個體的名稱。AUTO_DELETE_SETTING:是否自動刪除磁碟。指定--no-auto-delete,即可在刪除運算執行個體後保留磁碟;指定--auto-delete,則可在刪除執行個體時一併刪除磁碟。DISK_NAME:磁碟名稱。
Go
在試用這個範例之前,請先按照「使用用戶端程式庫的 Compute Engine 快速入門導覽課程」中的 Go 設定操作說明進行操作。詳情請參閱 Compute Engine Go API 參考文件。
如要向 Compute Engine 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 Compute Engine 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 Compute Engine Java API 參考文件。
如要向 Compute Engine 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
在試用這個範例之前,請先按照「使用用戶端程式庫的 Compute Engine 快速入門導覽課程」中的 Node.js 設定操作說明進行操作。詳情請參閱 Compute Engine Node.js API 參考文件。
如要向 Compute Engine 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 Compute Engine 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 Compute Engine Python API 參考文件。
如要向 Compute Engine 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
REST
如要使用 API 設定自動刪除狀態,請向 instances.setDiskAutoDelete 方法提出 POST 要求。使用 autoDelete 參數,指出是否要刪除磁碟。
如果執行個體連接多個磁碟,則必須為連接至執行個體的每個磁碟提出要求。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/setDiskAutoDelete?deviceName=DISK_NAME,autoDelete=AUTO_DELETE_OPTION
更改下列內容:
PROJECT_ID:您的專案 ID。ZONE:執行個體和磁碟所在的可用區。INSTANCE_NAME:執行個體名稱DISK_NAME:附加至執行個體的磁碟名稱。AUTO_DELETE_OPTION:是否要在刪除執行個體時自動刪除磁碟。如要刪除磁碟,請設為true。設為false,即可在刪除執行個體後保留磁碟。
Hyperdisk 磁碟區的存取模式
如要在多個執行個體之間共用 Hyperdisk 磁碟區,並授予每個執行個體對該磁碟區的並行唯讀或讀取/寫入權限,您必須分別將磁碟區的存取模式設為唯讀或多重寫入模式。
另一方面,如要對處於唯讀或多重寫入模式的 Hyperdisk 磁碟區執行特定動作 (例如建立映像檔),則必須將存取模式設為單一寫入。
本節說明如何設定磁碟的存取模式。
如要進一步瞭解磁碟共用,請參閱「在執行個體之間共用磁碟」。
存取模式變更限制
您必須將磁碟從所有執行個體卸離,才能設定磁碟的存取模式。
Hyperdisk Throughput 磁碟區僅支援單一寫入者模式,您無法設定 Hyperdisk Throughput 磁碟區的存取模式。
如果是 Hyperdisk Balanced、Hyperdisk Extreme 和 Hyperdisk Balanced High Availability 磁碟區,您只能啟用或停用多重寫入模式。無法將存取模式設為唯讀。
Hyperdisk ML 磁碟區的存取模式只能設為唯讀。Hyperdisk ML 磁碟區不支援多重寫入模式。
Hyperdisk ML 磁碟區設為唯讀後,即無法修改存取模式。
必要角色和權限
如要取得設定磁碟存取模式所需的權限,請要求管理員授予您專案的下列 IAM 角色:
- Compute 執行個體管理員 (v1) (
roles/compute.instanceAdmin.v1) -
如要連線至可做為服務帳戶執行的 VM:服務帳戶使用者 (v1) (
roles/iam.serviceAccountUser)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備 compute.disks.update 權限,可設定磁碟的存取模式。
設定 Hyperdisk 磁碟區的存取模式
設定磁碟的存取模式前,您必須從所有執行個體卸載磁碟。
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST 設定存取模式。
控制台
前往 Google Cloud 控制台的「Disks」(磁碟) 頁面。
在專案的磁碟清單中,按一下要修改的 Hyperdisk 磁碟區名稱。
在磁碟詳細資料頁面中,按一下「 Edit」(編輯)。
在「Access mode」(存取模式) 欄位中,選取所需的存取模式:
- 如要啟用唯讀模式,請選取「以唯讀模式連接多個 VM」。
- 如要啟用多重寫入模式,請選取「以讀寫模式連接多個 VM」。
- (預設) 如要啟用單一寫入者模式,請選取「Single VM read-write」(單一 VM 讀寫)。
如要套用變更,請按一下「儲存」。
gcloud
執行 disks update 指令,並使用 --access-mode 旗標指定存取模式。
gcloud compute disks update DISK_NAME \ --access-mode=DISK_ACCESS_MODE
更改下列內容:
- DISK_NAME:要修改的 Hyperdisk 磁碟區名稱。
- DISK_ACCESS_MODE:執行個體如何存取磁碟上的資料。支援的值如下:
READ_ONLY_MANY:可從多個執行個體唯讀存取。READ_WRITE_MANY,可從多個執行個體讀取/寫入。- (預設)
READ_WRITE_SINGLE,可從一個執行個體讀取/寫入。
REST
建構對 compute.disks.update 方法的 PATCH 要求。在要求主體中,加入 accessMode 參數來設定存取模式。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/update
{
"accessMode": "DISK_ACCESS_MODE"
}
更改下列內容:
PROJECT_ID:您的專案 ID。ZONE:Hyperdisk 磁碟區所在的可用區。DISK_NAME:要修改的 Hyperdisk 磁碟區名稱。DISK_ACCESS_MODE:執行個體如何存取磁碟上的資料。支援的值如下:READ_ONLY_MANY:可從多個執行個體唯讀存取。READ_WRITE_MANY,可從多個執行個體讀取/寫入。READ_WRITE_SINGLE:單一寫入者模式,也就是從一個執行個體讀取/寫入。
疑難排解
如要瞭解如何診斷及解決磁碟空間已滿和磁碟調整大小的問題,請參閱「解決磁碟已滿和磁碟調整大小的問題」一文。
後續步驟
- 瞭解如何定期使用快照備份磁碟,避免意外遺失資料。
- 使用區域性永久磁碟,在兩個可用區之間同步複製資料。
- 掛接執行個體上的 RAM 磁碟。