Red Hat Training

A Red Hat training course is available for RHEL 8

第21章 Stratis で階層化ローカルストレージの管理

Stratis の高レベルシステムに統合されている複雑なストレージ設定を簡単に設定および管理できます。

重要

Stratis はテクノロジープレビュー機能としてのみご利用いただけます。テクノロジープレビュー機能は、Red Hat の実稼働環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあります。Red Hat は実稼働環境でこれらを使用することを推奨していません。このような機能は、近々発表予定の製品機能をリリースに先駆けてご提供します。これにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、https://access.redhat.com/support/offerings/techpreview を参照してください。

21.1. Stratis ファイルシステムの設定

Stratis は、物理ストレージデバイスのプールを管理するためにサービスとして実行され、複雑なストレージ設定のセットアップと管理を支援しながら、ローカルストレージ管理を使いやすく簡素化します。

21.1.1. Stratis とは

Stratis は、Linux 用のローカルストレージ管理ソリューションです。これは、シンプルさと使いやすさに力を入れており、高度なストレージ機能にアクセスできます。

Stratis を使用すると、以下の活動をより簡単に行うことができます。

  • ストレージの初期設定
  • その後の変更
  • 高度なストレージ機能の使用

Stratis は、高度なストレージ機能に対応する、ユーザーとカーネルのハイブリッドローカルストレージ管理システムです。Stratis は、ストレージ プール の概念を中心としています。このプールは 1 つ以上のローカルディスクまたはパーティションから作成され、ボリュームはプールから作成されます。

プールにより、次のような多くの便利な機能を使用できます。

  • ファイルシステムのスナップショット
  • シンプロビジョニング
  • 階層化

関連情報

21.1.2. Stratis ボリュームの構成要素

Stratis ボリュームを構成するコンポーネントについて説明します。

外部的には、Stratis は、コマンドラインインターフェースおよび API に次のボリュームコンポーネントを表示します。

blockdev
ディスクやディスクパーティションなどのブロックデバイス。
pool

1 つ以上のブロックデバイスで構成されています。

プールの合計サイズは固定で、ブロックデバイスのサイズと同じです。

プールには、dm-cache ターゲットを使用した不揮発性データキャッシュなど、ほとんどの Stratis レイヤーが含まれています。

Stratis は、各プールの /dev/stratis/my-pool/ ディレクトリーを作成します。このディレクトリーには、プール内の Stratis ファイルシステムを表すデバイスへのリンクが含まれています。

filesystem

各プールには、ファイルを格納する 1 つ以上のファイルシステムを含めることができます。

ファイルシステムはシンプロビジョニングされており、合計サイズは固定されていません。ファイルシステムの実際のサイズは、そこに格納されているデータとともに大きくなります。データのサイズがファイルシステムの仮想サイズに近づくと、Stratis はシンボリュームとファイルシステムを自動的に拡張します。

ファイルシステムは XFS でフォーマットされています。

重要

Stratis は、Stratis を使用して作成したファイルシステムに関する情報を追跡し、XFS はそれを認識しません。また、XFS を使用して変更を行っても、自動的に Stratisに更新を作成しません。ユーザーは、Stratis が管理する XFS ファイルシステムを再フォーマットまたは再構成しないでください。

Stratis は、/dev/stratis/my-pool/my-fs パスにファイルシステムへのリンクを作成します。

注記

Stratis は、dmsetup リストと /proc/partitions ファイルに表示される多くの Device Mapper デバイスを使用します。同様に、lsblk コマンドの出力は、Stratis の内部の仕組みとレイヤーを反映します。

21.1.3. Stratis で使用可能なブロックデバイス

Stratis で使用可能なストレージデバイス。

対応デバイス

Stratis プールは、次の種類のブロックデバイスで動作するかどうかをテスト済みです。

  • LUKS
  • LVM 論理ボリューム
  • MD RAID
  • DM Multipath
  • iSCSI
  • HDD および SSD
  • NVMe デバイス
対応していないデバイス

Stratis にはシンプロビジョニングレイヤーが含まれているため、Red Hat はすでにシンプロビジョニングされているブロックデバイスに Stratis プールを配置することを推奨しません。

21.1.4. Stratis のインストール

Stratis に必要なパッケージをインストールします。

手順

  1. Stratis サービスとコマンドラインユーティリティーを提供するパッケージをインストールします。

    # yum install stratisd stratis-cli
  2. stratisd サービスが有効になっていることを確認してください。

    # systemctl enable --now stratisd

21.1.5. 暗号化されていない Stratis プールの作成

1 つ以上のブロックデバイスから暗号化されていない Stratis プールを作成できます。

前提条件

  • Stratis がインストールされている。詳細は、「Stratis のインストール」を参照してください。
  • stratisd サービスを実行している。
  • Stratis プールを作成するブロックデバイスは使用されておらず、マウントされていない。
  • Stratis プールを作成する各ブロックデバイスが、1 GB 以上である。
  • IBM Z アーキテクチャーでは、/dev/dasd* ブロックデバイスをパーティションに分割している。Stratis プールでパーティションを使用します。

DASD デバイスのパーティション設定には、「IBM Z への Linux インスタンスの設定」 を参照してください。

注記

暗号化されていない Stratis プールを暗号化することはできません。

手順

  1. Stratis プールで使用する各ブロックデバイスに存在するファイルシステム、パーティションテーブル、または RAID 署名をすべて削除します。

    # wipefs --all block-device

    ここで、block-device は、ブロックデバイスへのパスになります (例: /dev/sdb)。

  2. 選択したブロックデバイスに新しい暗号化されていない Stratis プールを作成します。

    # stratis pool create my-pool block-device

    ここで、block-device は、空のブロックデバイスまたは消去したブロックデバイスへのパスになります。

    注記

    1 行に複数のブロックデバイスを指定します。

    # stratis pool create my-pool block-device-1 block-device-2
  3. 新しい Stratis プールが作成されていることを確認します。

    # stratis pool list

21.1.6. 暗号化された Stratis プールの作成

データを保護するには、1 つ以上のブロックデバイスから暗号化された Stratis プールを作成します。

暗号化された Stratis プールを作成すると、カーネルキーリングはプライマリー暗号化メカニズムとして使用されます。その後のシステムを再起動すると、このカーネルキーリングは、暗号化された Stratis プールのロックを解除します。

1 つ以上のブロックデバイスから暗号化された Stratis プールを作成する場合は、次の点に注意してください。

  • 各ブロックデバイスは cryptsetup ライブラリーを使用して暗号化され、LUKS2 形式を実装します。
  • 各 Stratis プールは、一意の鍵を持つか、他のプールと同じ鍵を共有できます。これらのキーはカーネルキーリングに保存されます。
  • Stratis プールを構成するブロックデバイスは、すべて暗号化または暗号化されていないデバイスである必要があります。同じ Stratis プールに、暗号化したブロックデバイスと暗号化されていないブロックデバイスの両方を含めることはできません。
  • 暗号化 Stratis プールのデータ層に追加されるブロックデバイスは、自動的に暗号化されます。

前提条件

  • Stratis v2.1.0 以降がインストールされている。詳細は、「Stratis のインストール」を参照してください。
  • stratisd サービスを実行している。
  • Stratis プールを作成するブロックデバイスは使用されておらず、マウントされていない。
  • Stratis プールを作成するブロックデバイスが、それぞれ 1GB 以上である。
  • IBM Z アーキテクチャーでは、/dev/dasd* ブロックデバイスをパーティションに分割している。Stratis プールでパーティションを使用します。

DASD デバイスのパーティション設定には、「IBM Z への Linux インスタンスの設定」 を参照してください。

手順

  1. Stratis プールで使用する各ブロックデバイスに存在するファイルシステム、パーティションテーブル、または RAID 署名をすべて削除します。

    # wipefs --all block-device

    ここで、block-device は、ブロックデバイスへのパスになります (例: /dev/sdb)。

  2. キーセットをまだ作成していない場合には、以下のコマンドを実行してプロンプトに従って、暗号化に使用するキーセットを作成します。

    # stratis key set --capture-key key-description

    ここでの key-description は、カーネルキーリングで作成されるキーへの参照になります。

  3. 暗号化した Stratis プールを作成し、暗号化に使用する鍵の説明を指定します。key-description オプションを使用する代わりに、--keyfile-path オプションを使用してキーパスを指定することもできます。

    # stratis pool create --key-desc key-description my-pool block-device

    ここでは、

    key-description
    直前の手順で作成したカーネルキーリングに存在するキーを参照します。
    my-pool
    新しい Stratis プールの名前を指定します。
    block-device

    空のブロックデバイスまたは消去したブロックデバイスへのパスを指定します。

    注記

    1 行に複数のブロックデバイスを指定します。

    # stratis pool create --key-desc key-description my-pool block-device-1 block-device-2
  4. 新しい Stratis プールが作成されていることを確認します。

    # stratis pool list

21.1.7. Stratis プールの NBDE へのバインド

暗号化された Stratis プールを Network Bound Disk Encryption (NBDE) にバインドするには、Tang サーバーが必要です。Stratis プールを含むシステムが再起動すると、Tang サーバーに接続して、カーネルキーリングの説明を指定しなくても、暗号化したプールのロックを自動的に解除します。

注記

Stratis プールを補助 Clevis 暗号化メカニズムにバインドすると、プライマリーカーネルキーリング暗号化は削除されません。

前提条件

手順

  • 暗号化された Stratis プールを NBDE にバインドする。

    # stratis pool bind nbde my-pool key-description tang-server

    ここでは、

    my-pool
    暗号化された Stratis プールの名前を指定します。
    key-description
    暗号化された Stratis プールの作成時に生成されたカーネルキーリングに存在するキーを参照します。
    tang-server
    Tang サーバーの IP アドレスまたは URL を指定します。

21.1.8. Stratis プールの TPM へのバインド

暗号化 Stratis プールを Trusted Platform Module (TPM) 2.0 にバインドすると、プールを含むシステムの再起動時に、カーネルキーリングの説明を提供することなくプールが自動的アンロックされます。

前提条件

手順

  • 暗号化された Stratis プールを TPM にバインドします。

    # stratis pool bind tpm my-pool key-description

    ここでは、

    my-pool
    暗号化された Stratis プールの名前を指定します。
    key-description
    暗号化された Stratis プールの作成時に生成されたカーネルキーリングに存在するキーを参照します。

21.1.9. カーネルキーリングを使用した暗号化 Stratis プールのロック解除

システムの再起動後、暗号化した Stratis プール、またはこれを構成するブロックデバイスが表示されない場合があります。プールの暗号化に使用したカーネルキーリングを使用して、プールのロックを解除できます。

前提条件

手順

  1. 以前使用したものと同じキー記述を使用して、キーセットを再作成します。

    # stratis key set --capture-key key-description

    ここで、key-description は、暗号化された Stratis プールの作成時に生成されたカーネルキーリングに存在するキーを参照します。

  2. Stratis プールと、それを構成するブロックデバイスをアンロックします。

    # stratis pool unlock keyring
  3. Stratis プールが表示されることを確認します。

    # stratis pool list

21.1.10. Clevis を使用した暗号化された Stratis プールのロック解除

システムの再起動後、暗号化した Stratis プール、またはこれを構成するブロックデバイスが表示されない場合があります。プールがバインドされている補助暗号化メカニズムを使用して、暗号化した Stratis プールをアンロックできます。

前提条件

手順

  1. Stratis プールと、それを構成するブロックデバイスをアンロックします。

    # stratis pool unlock clevis
  2. Stratis プールが表示されることを確認します。

    # stratis pool list

21.1.11. 補助暗号化からの Stratis プールのバインド解除

暗号化した Stratis プールを、サポート対象の補助暗号化メカニズムからバインドを解除すると、プライマリーカーネルキーリングの暗号化はそのまま残ります。

前提条件

  • Stratis v2.3.0 以降がシステムにインストールされている。詳細は、「Stratis のインストール」を参照してください。
  • 暗号化された Stratis プールを作成している。詳細は、「暗号化された Stratis プールの作成」を参照してください。
  • 暗号化した Stratis プールは、サポート対象の補助暗号化メカニズムにバインドされます。

手順

  • 補助暗号化メカニズムから暗号化された Stratis プールのバインドを解除します。

    # stratis pool unbind clevis my-pool

    ここでは、

    my-pool は、バインドを解除する Stratis プールの名前を指定します。

21.1.12. Stratis ファイルシステムの作成

既存の Stratis プールに Stratis ファイルシステムを作成します。

前提条件

手順

  1. Stratis ファイルシステムをプールに作成するには、次のコマンドを実行します。

    # stratis fs create my-pool my-fs

    ここでは、

    my-pool
    Stratis プールの名前を指定します。
    my-fs
    ファイルシステムの任意名を指定します。
  2. 確認のために、プールにあるファイルシステムの一覧を表示します。

    # stratis fs list my-pool

21.1.13. Stratis ファイルシステムのマウント

既存の Stratis ファイルシステムをマウントして、コンテンツにアクセスします。

前提条件

手順

  • ファイルシステムをマウントするには、/dev/stratis/ ディレクトリーに Stratis が維持するエントリーを使用します。

    # mount /dev/stratis/my-pool/my-fs mount-point

これでファイルシステムは mount-point ディレクトリーにマウントされ、使用できるようになりました。

21.1.14. Stratis ファイルシステムの永続的なマウント

この手順では、Stratis ファイルシステムを永続的にマウントして、システムが起動した後に自動的に利用できるようにします。

前提条件

手順

  1. ファイルシステムの UUID 属性を調べます。

    $ lsblk --output=UUID /stratis/my-pool/my-fs

    以下に例を示します。

    例21.1 Stratis ファイルシステムの UUID の表示

    $ lsblk --output=UUID /stratis/my-pool/fs1
    
    UUID
    a1f0b64a-4ebb-4d4e-9543-b1d79f600283
  2. このマウントポイントのディレクトリーがない場合は、作成します。

    # mkdir --parents mount-point
  3. root で /etc/fstab ファイルを編集し、ファイルシステムに行を追加します (UUID で識別されます)。xfs をファイルシステムのタイプとして使用し、x-systemd.requires=stratisd.service オプションを追加します。

    以下に例を示します。

    例21.2 /etc/fstab の /fs1 マウントポイント

    UUID=a1f0b64a-4ebb-4d4e-9543-b1d79f600283 /fs1 xfs defaults,x-systemd.requires=stratisd.service 0 0
  4. システムが新しい設定を登録するように、マウントユニットを再生成します。

    # systemctl daemon-reload
  5. ファイルシステムをマウントして、設定が機能することを確認します。

    # mount mount-point