本页面简要介绍了 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 下的目录中。 |
磁盘装载和格式设置
使用 Container-Optimized OS 时,您可以附加永久性磁盘,也可创建使用本地 SSD 的实例。根据适当的用例,按照格式化并装载永久性磁盘或格式化并装载本地 SSD 设备中的说明操作。
您可以通过在 /mnt/disks
目录下创建子目录来装载磁盘。由于 /etc/
在 Container-Optimized OS 上是无状态的,因此您无法使用 /etc/fstab
自动执行 fsck(文件系统一致性检查)并在启动时装载磁盘。但是您可以通过 cloud-config
的 bootcmd
部分执行这些操作,从而实现相同的目标。
以下示例会将磁盘 DEVICE_ID
装载到 /mnt/disks
目录下。
使用以下内容创建脚本文件:
#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
标志更新虚拟机元数据,使其包含脚本文件。如需创建虚拟机,请使用以下命令:
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
:虚拟机实例的名称。SCRIPT_FILE_NAME
:元数据脚本文件的名称。