本頁面將概略說明 Container-Optimized OS 檔案系統,並說明如何掛接及格式化磁碟。
檔案系統
Container-Optimized OS 節點映像檔檔案系統版面配置經過最佳化,以強化節點安全性。開機磁碟的空間分成三種類型的分區:
- 根分區,以唯讀模式掛接
- 有狀態分區,可寫入且為有狀態。
- 無狀態分區,可寫入,但內容在重新開機後會遺失。
使用 Container-Optimized OS 時,如果您執行自己的服務,且該服務對於容器外部的檔案系統版面配置有特定需求,那麼請留意分區問題。
根檔案系統會以唯讀模式掛接,以保護系統完整性。不過,主目錄和 /mnt/stateful_partition
是永久性且可寫入的。
使用 Container-Optimized OS 檔案系統
以下是 Container-Optimized OS 節點映像檔檔案系統中的路徑清單,以及其屬性和建議用法:
路徑 | 屬性 | 用途 |
---|---|---|
/ |
|
根檔案系統會以唯讀模式掛接,以維護完整性。核心會在啟動期間驗證根檔案系統的完整性,並在發現錯誤時拒絕啟動。 |
/home /var |
|
這些路徑是用來儲存會在開機磁碟的生命週期內持續存在的資料。這些路徑均掛接自 /mnt/stateful_partition 。 |
/var/lib/google /var/lib/docker /var/lib/toolbox |
|
這些路徑分別是 Compute Engine 套件 (例如帳戶管理工具服務)、Docker 和工具箱的工作目錄。 |
/var/lib/cloud |
|
這個路徑是 cloud-init 套件的工作目錄。 |
/etc |
|
通常會保存您的設定 (例如透過 cloud-init 定義的 systemd 服務)。建議您將想要的執行個體狀態擷取到 cloud-init 中,因為執行個體在剛建立及剛重新啟動時會套用 cloud-init 。 |
/tmp |
|
通常是做為臨時儲存空間,因此請勿用來存放永久性的資料。 |
/mnt/disks |
|
您可以在 /mnt/disks 底下的目錄中掛接永久磁碟。 |
掛接並格式化磁碟
使用容器最佳化 OS 時,您可以連接永久磁碟,或建立具有本機 SSD 的執行個體。請參閱格式化及掛接永久磁碟或格式化並掛接本機 SSD 裝置的指示說明,依照合適的使用案例進行操作。
您可以建立 /mnt/disks
目錄下的子目錄,掛接磁碟。由於 /etc/
在 Container-Optimized OS 上是無狀態的,因此您無法使用 /etc/fstab
自動執行 fsck (檔案系統一致性檢查),並在開機時掛載磁碟。不過,您也可以在 cloud-config
的 bootcmd
部分執行這些作業,達到相同的效果。
以下範例會在 /mnt/disks
目錄下掛接磁碟 DEVICE_ID
。
使用下列內容建立指令碼檔案:
#cloud-config bootcmd: - fsck.ext4 -tvy /dev/DEVICE_ID - mkdir -p /mnt/disks/MNT_DIR - mount -t ext4 -o ... /dev/DEVICE_ID /mnt/disks/MNT_DIR
更改下列內容:
DEVICE_ID
:要格式化及掛接的磁碟裝置 ID。MNT_DIR
:掛接磁碟的目錄。
使用
--metadata-from-file
旗標更新 VM 中繼資料,以便納入指令碼檔案。如要建立 VM,請使用下列指令:
gcloud compute instances create INSTANCE_NAME \ --metadata-from-file user-data=SCRIPT_FILE_NAME
如要更新現有執行個體,請使用下列指令:
gcloud compute instances add-metadata INSTANCE_NAME \ --metadata-from-file user-data=SCRIPT_FILE_NAME
更改下列內容:
INSTANCE_NAME
:VM 執行個體的名稱。SCRIPT_FILE_NAME
:中繼資料指令碼檔案的名稱。