Stratis をインストールして RHEL 8 で階層化されたローカル ストレージを管理する方法
Stratis は、RHEL 8 ディストリビューションに同梱される新機能の 1 つです。 Stratis は、シンプルさと使いやすさの向上に重点を置きながら、同時に高度なストレージ機能へのアクセスを提供するローカル ストレージ管理ソリューションです。 XFS ファイル システムを使用し、次のような高度なストレージ機能へのアクセスを許可します。
- シンプロビジョニング
- ファイルシステムのスナップショット
- 階層化
- プールベースの管理
- 監視
基本的に、Stratisは 1 つ以上のローカル ディスクまたはディスク パーティションから作成されるストレージ プールです。 Stratis は、システム管理者が複雑なストレージ構成をセットアップおよび管理するのに役立ちます。
先に進む前に、作業中に必ず遭遇するであろう技術用語をいくつか見てみましょう。
- プール: プールは 1 つ以上のブロック デバイスで構成されます。プールの合計サイズは、ブロック デバイスの合計と等しくなります。
- blockdev: ご想像のとおり、これはディスク パーティションなどのブロック デバイスを指します。
- ファイルシステム: ファイルシステムは、合計の固定サイズとして提供されない、シンプロビジョニングされたレイヤーです。ファイルシステムの実際のサイズは、データが追加されるにつれて大きくなります。 Stratis は、データ サイズがファイル システムの仮想サイズに近づくと、ファイル システムのサイズを自動的に拡大します。
Stratis で使用できるブロック デバイスには次のものがあります。
- LVM論理ボリューム
- ルクス
- SSD (ソリッド ステート ドライブ)
- デバイス マッパー マルチパス
- iSCSI
- HDD(ハードディスクドライブ)
- エムドレイド
- NVMeストレージデバイス
Stratis のソフトウェア コンポーネント
Stratis は 2 つのソフトウェア ユーティリティを提供します。
- Stratis-cli: これは Stratis に付属のコマンドライン ツールです。
- Stratisd デーモン: これは、ブロック デバイスを作成および管理し、DBUS API を提供する役割を果たすデーモンです。
RHEL 8 に Stratis をインストールする方法
ここまでストラティスとは何かを確認し、いくつかの用語を定義しました。次に、RHEL 8 ディストリビューションに Stratis をインストールして設定しましょう (CentOS 8 でも動作します)。
RHEL 8 に Stratis をインストールする
RHEL 8 システムに Stratis をインストールし、root ユーザーとしてログインしてコマンドを実行する方法を見てみましょう。
dnf install stratisd stratis-cli
インストールされているパッケージに関する詳細情報を確認するには、コマンドを実行します。
rpm -qi stratisd stratis-cli
Stratis のインストールが成功したら、コマンドを実行してサービスを開始します。
systemctl enable --now stratisd
Stratisのステータスを確認するには、コマンドを実行します。
systemctl status stratisd
Stratis プールを作成する
Stratis プールを作成するには、使用されていない、またはマウントされていないブロック デバイスが必要です。また、Stratisd サービスが稼働していることを前提としています。さらに、使用するブロック デバイスのサイズは少なくとも1 GB 必要です。
RHEL 8 システムには、/dev/xvdb
、/dev/xvdc
、/dev/ の 4 つの追加ブロック デバイスがあります。 xvdd
、/dev/xvde
。ブロック デバイスを表示するには、lsblk コマンドを実行します。
lsblk
これらのブロック デバイスにはパーティション テーブルを含めないでください。これはコマンドを使用して確認できます。
blkid -p /dev/xvdb
出力が得られない場合は、ブロック デバイスにパーティション テーブルが存在しないことを意味します。ただし、パーティション テーブルが存在する場合は、次のコマンドを使用してそれを消去できます。
wipefs -a /<device-path>
1 つのブロック デバイスから Stratis プールを作成する
次の構文を使用して、単一のブロック デバイスからStratisプールを作成できます。
stratis pool create <pool-name> <block-device>
たとえば、/dev/xvdb
からプールを作成するには、次のコマンドを実行します。
stratis pool create my_pool_1 /dev/xvdb
作成したプールの実行を確認します。
stratis pool list
複数のブロックデバイスから Stratis プールを作成する
複数のデバイスからプールを作成するには、以下の構文を使用してすべてのデバイスを 1 行にリストします。
stratis pool create <pool_name> device-1 device-2 device-n
/dev/xvdc
、/dev/xvdd
、および /dev/xvde
からプールを作成するには、コマンドを実行します。
stratis pool create my_pool_2 /dev/xvdc /dev/xvdd/ /dev/xvde
もう一度、コマンドを使用して利用可能なプールを一覧表示します。
stratis pool list
この時点で、my_pool_1 と my_pool_2 の 2 つのプールが存在するはずです。
上からわかるように、プール my_pool_2 が占有するハードディスク容量は、10 GB のメモリを備えた 1 つのブロック デバイスのみから作成した最初のプールの 3 倍です。
プールからファイルシステムを作成する
ファイルシステムを作成したら、次の構文を使用してプールの 1 つからファイルシステムを作成できます。
stratis fs create <poolname> <filesystemname>
たとえば、my_pool_1 と my_pool_2 からそれぞれ filesystem-1 と filesystem-2 を作成するには、次のコマンドを実行します。
stratis fs create my_pool_1 filesystem-1
stratis fs create my_pool_2 filesystem-2
新しく作成されたファイルシステムを表示するには、次のコマンドを実行します。
stratis fs list
ファイル システムの結果を 1 つのプールに絞り込むには、次のコマンドを実行します。
stratis fs list <poolname>
たとえば、my_pool_2 のファイルシステムを確認するには、次のコマンドを実行します。
stratis fs list my_pool_2
ここで、lsblk コマンドを実行すると、出力は以下のサンプル出力に似たものになるはずです。
lsblk
Stratis ファイルシステムのマウント
ここで、既存のファイルシステムにアクセスするためにマウントします。まず、マウント ポイントを作成します。
最初のプールのファイルシステムに対して、次のコマンドを実行します。
mkdir /data
mount /stratis/my_pool_1/filesystem-1 /data
2 番目のプールの 2 番目のファイルシステムに対して、コマンドを実行します。
mkdir /block
mount /stratis/my_pool_2/filesystem-2 /block
現在のマウント ポイントの存在を確認するには、df コマンドを実行します。
df -Th | grep stratis
完璧!マウント ポイントが存在していることがはっきりとわかります。
Stratis ファイルシステムを永続的にマウントする
作成したばかりのマウント ポイントは、再起動後は存続できません。これらを永続的にするには、まず各ファイル システムのUUIDを取得します。
blkid -p /stratis/my_pool_1/filesystem-1
blkid -p /stratis/my_pool_2/filesystem-2
ここで、次に示すように、UUID とマウント ポイント オプションを /etc/fstab にコピーします。
echo "UUID=c632dcf5-3e23-46c8-82b6-b06a4cc9d6a7 /data xfs defaults 0 0" | sudo tee -a /etc/fstab
echo "UUID=b485ce80-be18-4a06-8631-925132bbfd78 /block xfs defaults 0 0" | sudo tee -a /etc/fstab
システムが新しい構成を登録するには、次のコマンドを実行します。
systemctl daemon-reload
構成が期待どおりに機能することを確認するには、ファイルシステムをマウントします。
mount /data
mount /block
Stratis ファイルシステムの削除
ファイルシステムを削除するには、まず、図に示すようにファイルシステムをアンマウントする必要があります。
umount /mount-point
この場合、そうすることになります。
umount /data
ファイルシステムを破棄するには、次の構文を使用します。
stratis filesystem destroy <poolname> <filesystem-name>
したがって、次のようになります。
stratis filesystem destroy my_pool_1 filesystem-1
ファイルシステムの削除を確認するには、次のコマンドを発行します。
stratis filesystem list my_pool_1
出力から、my_pool_1 に関連付けられたファイルシステムが削除されたことが明確にわかります。
既存の Stratis プールへのディスクの追加
次のコマンドを使用して、既存のプールにディスクを追加できます。
stratis pool add-data <poolname> /<devicepath>
たとえば、追加のディスク /dev/xvdf
を my_pool_1 に追加するには、次のコマンドを実行します。
stratis pool add-data my_pool_1 /dev/xvdf
追加のボリュームを追加すると、my_pool_1 のサイズが 2 倍になっていることに注目してください。
Stratis スナップショットの作成
スナップショットは、シンプロビジョニングされた、特定の時点でのファイルシステムのコピーの読み取りおよび書き込みです。
スナップショットを作成するには、次のコマンドを実行します。
stratis fs snapshot <poolname> <fsname> <snapshotname>
この場合、コマンドは次のようになります。
stratis fs snapshot my_pool_2 filesystem-2 mysnapshot
以下のスクリーンショットに示すように、データ属性 -$ (date +%Y-%m-%d)
をスナップショットに追加して日付タグを追加できます。
スナップショットの作成を確認するには、次のコマンドを実行します。
stratis filesystem list <poolname>
この場合、コマンドは次のようになります。
stratis filesystem list my_pool_2
ファイルシステムを使用して以前のスナップショットに戻す
Stratis ファイルシステムを以前に作成したスナップショットに戻すには、まず元のファイルシステムをアンマウントして破棄します。
umount /stratis/<poolname>/filesystem
私たちのシナリオでは、こうなります。
umount /stratis/my_pool_2/filesystem-2
次に、元のファイル システムを使用してスナップショットのコピーを作成します。
stratis filesystem snapshot <poolname> filesystem-snapshot filesystem
コマンドは次のようになります。
stratis filesystem snapshot my_pool_2 mysnapshot-2019-10-24 block
最後にスナップショットをマウントします。
mount /stratis/my-pool/my-fs mount-point
Stratis スナップショットの削除
スナップショットを削除するには、まずスナップショットをアンマウントします。
unmount /stratis/my_pool_2/mysnapshot-2019-10-24
次に、スナップショットを破棄します。
stratis filesystem destroy my_pool_2 mysnapshot-2019-10-24
Stratis プールの削除
Stratis プールを削除するには、以下の簡単な手順に従います。
1. プール内に存在するファイルシステムを一覧表示します。
stratis filesystem list <poolname>
2. 次に、プール内のすべてのファイルシステムをアンマウントします。
umount /stratis//filesystem-1
umount /stratis//filesystem-2
umount /stratis//filesystem-3
3. ファイルシステムを破壊します。
stratis filesystem destroy <poolname> fs-1 fs-2
4. 次に、プールを削除します。
stratis pool destroy poolname
この場合、構文は次のようになります。
stratis pool destroy my_pool_2
プールリストを再度確認できます。
stratis pool list
最後に、/etc/fstab 内のファイルシステムのエントリを削除します。
ガイドは最後まで来ました。このチュートリアルでは、Stratis をインストールして使用して、RHEL 上の階層化されたローカル ストレージを管理する方法を説明します。お役に立てば幸いです。試してみて、どうだったか教えてください。