ウェブサイト検索

Stratis Linuxストレージの概要: プールとファイルシステムの管理


StratisはRed Hatによって開発された無料のオープンソースのストレージ管理システムです。RHEL 8からテクノロジープレビューとして利用可能で、バージョン9.3からは本格的にサポートされ、Fedoraでも使用できます。Stratisは、LUKS、デバイスマッパー、XFSファイルシステムなどの既存のストレージ技術に依存しており、BTRFSおよびZFSファイルシステムに統合されているのと同様の機能を提供します。このチュートリアルでは、Stratisの基本概念を学び、StratisプールとStratis管理ファイルシステムを作成します。

このチュートリアルでは、あなたは学びます:

  • Stratisの基本概念は何ですか?
  • Stratisプールを作成する方法
  • Stratis管理ファイルシステムの作成方法
  • Stratis管理のファイルシステムのスナップショットを作成する方法

基本的なストラティスの概念

Stratisを使って作業する際には、基本的な3つのコンポーネント、すなわちブロックデバイス、プール、およびファイルシステムを扱う必要があります。生ディスクやパーティションなどの1つまたは複数のブロックデバイスをまとめて、スペースのプールを作成します。ファイルシステムはそのプールの中に作成され、ファイルを管理するために使用されます。サイズは固定されていませんが、必要に応じて自動的に拡張されます。Stratisによってサポートされている唯一のファイルシステムはXFSです。

Stratisパッケージのインストール

厳密に言うと、Stratisはext4やXFSのようなファイルシステムではありません。代わりに、Stratisは高度なストレージ管理システムであり、その背後ではLUKSやLinuxデバイスマッパーなどのよく知られた堅牢な技術を使用し、D-busをプロセス間通信(IPC)システムとして利用しています。

Stratisはクライアントサーバーアーキテクチャを使用しています。これは、Rustで書かれたデーモン(stratisd)と、Pythonで書かれた一連のクライアントユーティリティで構成されています。以下のコマンドを実行することで、両方をインストールできます。

sudo dnf install stratisd stratis-cli

パッケージをインストールしても、stratisdデーモンは自動的に開始または有効になりません。手動で行う必要があります:

sudo systemctl enable --now stratisd

Stratisプールの作成

Stratisプールは、Stratisによって管理されるすべてのブロックデバイスで構成されています。Stratisプールに追加されるためには、ブロックデバイスにはパーティションやファイルシステムの署名が含まれていない必要があります。ブロックデバイスが「クリーン」であることを確認するために、wipefsユーティリティを使用できます。以下の例では、サイズが20 GiBの/dev/vdbブロックデバイスを扱います:

sudo wipefs -af /dev/vdb*

ブロックデバイスからすべての署名を削除すると、それをストラティスプールに追加できます。これは、即座に作成できます。

sudo stratis pool create pool00 /dev/vdb

プールはエラーなく作成されるべきです。利用可能なストレージプールをすべて一覧表示するには、以下を実行できます:

sudo stratis pool list

この場合、予想通り、コマンドは以下の出力を返します:

Name              Total / Used / Free    Properties                                                                 UUID   Alerts
pool00   20 GiB / 534 MiB / 19.48 GiB   ~Ca,~Cr, Op   a06ca8a8-df69-41aa-987f-ab794c1f2c81

Stratisプールの暗号化

ストラティスプールは暗号化できます。暗号化されたプールを作成するには、最初に暗号化キーを生成する必要があります:

sudo stratis key set --capture-key pool00-key

鍵を作成する際には、--capture-keyまたは--keyfile-pathオプションのいずれかを使用する必要があります。後者は鍵/パスフレーズを含むファイルのパスを指定するために使用され、前者は同じ情報をインタラクティブに提供するために使用されます。例では--capture-keyを使用したため、鍵データ/パスフレーズを提供して確認するように求められます。既存の鍵は、以下のコマンドを実行することで一覧表示できます:

sudo stratis key list

次のステップで生成したキーを参照して、--key-descオプションを使用して暗号化されたプールを作成できます:

sudo stratis pool create --key-desc pool00-key pool00 /dev/vdb

生成したキーはカーネルのキーレングに保存され、持続的ではありません。これは、プールを開始およびアンロックする前に、毎回ブート時に再作成する必要があることを意味します。まず、キーを再作成し、次に --unlock-method オプションを介してキーの保存方法を参照してプールを開始します(この場合は「keyring」- Tang キーサーバーも使用できます)、およびプールの名前を --name の引数として指定します。

sudo stratis key set --capture-key pool00-key
sudo stratis pool start --unlock-method keyring --name pool00

全体のプロセスは自動化できるかもしれず、重要なコンテンツをファイルに保存することで実現できるが、ここではその手順については説明しない。

Stratis管理されたファイルシステムの作成

一度Stratisプールを作成してデータを追加すると、それからファイルシステムを作成できます。Stratisがサポートする唯一の適切なファイルシステムはXFSです。前述したように、Stratis管理のファイルシステムはスリムプロビジョニングされています。つまり、追加のスペースが必要になると自動的に拡張されます。ただし、作成時に、オプションとしてファイルシステムの初期サイズとサイズ制限をそれぞれ、--sizeおよび--size-limitフラグを使用して提供することができます。

ファイルシステムを作成する際に提供する必要がある唯一の必須引数は、作成したいプールの名前とファイルシステム自体に使用したい名前です。以下の例では、初期サイズ10 GiBの「foo」と呼ばれるStratis管理下のファイルシステムを「pool00」プール内に作成します。

sudo stratis filesystem create --size 10GiB pool00 foo

Stratisが管理している既存のファイルシステムをリストするには、以下のコマンドを実行できます:

sudo stratis filesystem list

私たちが作成したファイルシステムは、上記のコマンドの出力に報告されています。

Pool     Filesystem   Total / Used / Free / Limit         Created             Device                    UUID 
pool00   foo          10 GiB / 82 MiB / 9.92 GiB / None   Sep 16 2024 11:42   /dev/stratis/pool00/foo   5a58db3a-d4f4-4b56-b4e7-df70daf141f0

ファイルシステムをマウントするために、特別なツールは必要ありません。例えば:

sudo mount /dev/stratis/pool00/foo /mnt

Stratis管理ファイルシステムのスナップショットを作成および復元する

スナップショットのおかげで、特定の時点でファイルシステムの状態を固定して保存できます。前の例では、Stratis管理のファイルシステムを作成し、その後/mntにマウントしました。ファイルシステムのスナップショットを作成するのは、次のようにコマンドを実行するだけで簡単です:

sudo stratis filesystem snapshot pool00 foo foo-snapshot0

スナップショットを作成するために、「snapshot」コマンドを使用し、ファイルシステムが存在するプールの名前、ファイルシステムの名前、およびスナップショットに使用したい名前を指定します。スナップショットは、独自のUUIDを持つ別のファイルシステムに過ぎません。

Pool     Filesystem      Total / Used / Free / Limit         Created           Device                              UUID 
pool00   foo             10 GiB / 82 MiB / 9.92 GiB / None   Sep 16 2024 11:42 /dev/stratis/pool00/foo             5a58db3a-d4f4-4b56-b4e7-df70daf141f0
pool00   foo-snapshot0   10 GiB / 82 MiB / 9.92 GiB / None   Sep 16 2024 11:52 /dev/stratis/pool00/foo-snapshot0   1615b07f-2345-4fa1-bbb5-25301f554422

LVMスナップショットは専用のコマンドで元に「マージ」できるのに対し、Stratisスナップショットを「復元」するには、まずスナップショットが基づいているファイルシステムをアンマウントして削除し、その後スナップショットの新しいスナップショットを取り、元のファイルシステムと同じ名前を付けます。この方法でスナップショットを使用し、同時にそのコピーを保持することができます。私たちの場合、まず「foo」ファイルシステムがアンマウントされていることを確認します:

sudo umount /dev/stratis/pool00/foo

ファイルシステムがアンマウントされた後、それを破壊するには、以下のコマンドを実行できます:

sudo stratis filesystem destroy pool00 foo

この時点で、“foo-snapshot0”のスナップショットを作成し、元のファイルシステムとして名付けて“foo”とします:

sudo stratis filesystem snapshot pool00 foo-snapshot0 foo

結論

このチュートリアルでは、Red Hatで作成されたストレージ管理システムStratisについて説明しました。Stratisに関与する基本的なコンポーネントが何か、StratisプールとStratisベースのファイルシステムを作成する方法を学びました。最後に、Stratis管理のXFSファイルシステムのスナップショットを作成する方法を見ました。

関連記事: