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

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

ファイル システム

Container-Optimized OS ノードイメージのファイル システム レイアウトは、ノード セキュリティを強化するように最適化されています。ブートディスク領域は次の 3 種類のパーティションに分割されます。

  • ルート パーティション: 読み取り専用としてマウントされます。
  • ステートフル パーティション: 書き込み可能でステートフルです。
  • ステートレス パーティション: 書き込み可能ですが、リブート時に内容が保存されません。

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、Toolbox の作業ディレクトリです。
/var/lib/cloud
  • 書き込み可能
  • 実行可能
  • ステートレス
  • tmpfs
このパスは、cloud-init パッケージの作業ディレクトリです。
/etc
  • 書き込み可能
  • 実行不可能
  • ステートレス
  • tmpfs
通常、構成(cloud-init によって定義される systemd サービスなど)が保存されます。インスタンスを新規作成するときやインスタンスを再起動するときに cloud-init が適用されるため、インスタンスの望ましい状態を cloud-init にキャプチャすることをおすすめします。
/tmp
  • 書き込み可能
  • 実行不可能
  • ステートレス
  • tmpfs
通常、一時的な領域として使用され、永続的なデータの格納には使用できません。
/mnt/disks
  • 書き込み可能
  • 実行可能
  • ステートレス
  • tmpfs
/mnt/disks 内のディレクトリには永続ディスクをマウントできます。

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

Container-Optimized OS を使用する場合は、永続ディスクをアタッチするか、ローカル SSD でインスタンスを作成できます。該当するユースケースについて、永続ディスクをフォーマットしてマウントするまたはローカル SSD デバイスをフォーマットしてマウントするの手順に従ってください。

/mnt/disks ディレクトリ内にサブディレクトリを作成して、ディスクをマウントできます。Container-Optimized OS 上では /etc/ はステートレスであるため、/etc/fstab を使用して起動時にディスクを自動的に fsck(ファイル システム整合性チェック)を実行し、マウントすることはできません。ただし、cloud-configbootcmd セクションから以下のオペレーションを行って、同じ操作を行うことができます。

次の例では、ディスク DEVICE_ID/mnt/disks ディレクトリにマウントします。

  1. 次の内容を使用してスクリプト ファイルを作成します。

    #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 のドキュメントをご覧ください。

  2. --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: メタデータ スクリプト ファイルの名前。