ディスクとファイルシステム

このページでは、Container-Optimized OS from Google のファイルシステムの概要を示し、ディスクのマウントとフォーマットを行う方法を説明します。

ファイルシステム

システムの整合性を確保するため、ルート ファイルシステムは読み取り専用としてマウントされます。 ただし、ホーム ディレクトリと /mnt/stateful_partition は永続的で、書き込み可能です。

以下に Container-Optimized OS ノードイメージのファイルシステムのパスの一覧を示し、その特性や推奨される使用方法を説明します。

パス 特性 目的
/
  • 読み取り専用
  • 実行可能
整合性を維持するため、ルート ファイルシステムは読み取り専用としてマウントされます。カーネルによって、整合性のあるルート ファイルシステムが起動時に確認され、エラー時にはブートが拒否されます。
/home
/var
  • 書き込み可能
  • 実行不可能
  • ステートフル
これらのパスは、ブートディスクの存続期間にわたって保存されるようにデータを格納するためのものです。/mnt/stateful_partition からマウントされます。
/var/lib/google
/var/lib/docker
/var/lib/toolbox
  • 書き込み可能
  • 実行可能
  • ステートフル
これらのパスはそれぞれ、Compute Engine パッケージ(アカウント マネージャー サービスなど)、Docker、Toolboxの作業ディレクトリです。
/var/lib/cloud
  • 書き込み可能
  • 実行可能
  • ステートレス
  • tmpfs
このパスは、cloud-init パッケージの作業ディレクトリです。
/etc
  • 書き込み可能
  • 実行不可能
  • ステートレス
  • tmpfs
通常、/etc には構成(cloud-init によって定義される systemd サービスなど)が保存されます。インスタンスを新規作成するときやインスタンスを再起動するときに cloud-init が適用されるため、インスタンスの望ましい状態を cloud-init にキャプチャすることをおすすめします。
/tmp
  • 書き込み可能
  • 実行不可能
  • ステートレス
  • tmpfs
通常、/tmp は一時的な領域として使用され、永続的なデータの格納には使用できません。
/mnt/disks
  • 書き込み可能
  • 実行可能
  • ステートレス
  • tmpfs
/mnt/disks 内のディレクトリには永続ディスクをマウントできます。

ディスクのマウントとフォーマット

Container-Optimized OS from Google を使用する場合は、永続ディスクを接続するか、ローカル SSD でインスタンスを作成できます。適切な利用方法については、永続ディスクをフォーマットしてマウントするまたはローカル SSD デバイスをフォーマットしてマウントするの手順に従ってください。

/mnt/disks ディレクトリ内にサブディレクトリを作成して、ディスクをマウントできます。Google の Container-Optimized OS 上では /etc/ はステートレスであるため、/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.ext4 コマンドと mount コマンドでサポートされているオプションの完全なセットについては、Linux のドキュメントをご覧ください。

既存のインスタンスの場合は、--metadata-from-file フラグを使用して cloud-init メタデータを更新します。

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

以下を置き換えます。

  • instance-name: VM インスタンスの名前。
  • filename: メタデータ ファイルの名前。