磁盘和文件系统

本页面提供了 Google 的 Container-Optimized OS 文件系统的概览,并且介绍了如何装载磁盘并为其设置格式。

文件系统

根文件系统以只读方式装载,以保护系统完整性。 但是,主目录和 /mnt/stateful_partition 是永久且可写的。

以下是 Container-Optimized OS 节点映像文件系统中的路径及其属性和建议用途的列表:

路径 属性 用途
/
  • 只读
  • 可执行
根文件系统以只读形式装载以保持完整性。内核在启动期间验证根文件系统完整性,如果出现错误,则拒绝启动。
/home
/var
  • 可写
  • 不可执行
  • 有状态
这些路径用于存储保留期为启动磁盘的生命周期的数据。它们会从 /mnt/stateful_partition 装载。
/var/lib/google
/var/lib/docker
/var/lib/toolbox
  • 可写
  • 可执行
  • 有状态
这些路径分别是 Compute Engine 软件包(例如帐号管理器服务)、Docker 和工具箱的工作目录。
/var/lib/cloud
  • 可写
  • 可执行
  • 无状态
  • tmpfs
此路径是 cloud-init 软件包的工作目录。
/etc
  • 可写
  • 不可执行
  • 无状态
  • tmpfs
/etc 通常包含您的配置(例如,通过 cloud-init 定义的 systemd 服务)。最好在 cloud-init 中捕获所需的实例状态,因为系统会在新创建实例以及重启实例时应用 cloud-init
/tmp
  • 可写
  • 不可执行
  • 无状态
  • tmpfs
/tmp 通常用作暂存空间,不应用于存储持久性数据。
/mnt/disks
  • 可写
  • 可执行
  • 无状态
  • tmpfs
您可以将永久性磁盘装载到 /mnt/disks 下的目录中。

磁盘装载和格式设置

使用 Google 的 Container-Optimized OS 时,您可以附加永久性磁盘,也可创建使用本地 SSD 的实例。根据适当的用例,按照格式化并装载永久性磁盘格式化并装载本地 SSD 设备中的说明操作。

您可以通过在 /mnt/disks 目录下创建子目录来装载磁盘。由于 /etc/ 在 Google 推出的 Container-Optimized OS 上是无状态的,因此您无法使用 /etc/fstab 自动执行 fsck(文件系统一致性检查)并在启动时装载磁盘。但是您可以通过 cloud-configbootcmd 部分执行这些操作,从而实现相同的目标。例如:

#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] 是装载磁盘的目录。

有关 fsck.ext4mount 命令支持的全部选项,请参阅 Linux 文档。

对于现有实例,请使用 --metadata-from-file 标志更新 Cloud-init 元数据:

gcloud compute instances add-metadata instance-name \
    --metadata-from-file user-data=filename

替换以下内容:

  • instance-name:虚拟机实例的名称。
  • filename:元数据文件的名称。