ウェブサイト検索

Stratis をインストールして RHEL 8 で階層化されたローカル ストレージを管理する方法


Stratis は、RHEL 8 ディストリビューションに同梱される新機能の 1 つです。 Stratis は、シンプルさと使いやすさの向上に重点を置きながら、同時に高度なストレージ機能へのアクセスを提供するローカル ストレージ管理ソリューションです。 XFS ファイル システムを使用し、次のような高度なストレージ機能へのアクセスを許可します。

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

基本的に、Stratisは 1 つ以上のローカル ディスクまたはディスク パーティションから作成されるストレージ プールです。 Stratis は、システム管理者が複雑なストレージ構成をセットアップおよび管理するのに役立ちます。

先に進む前に、作業中に必ず遭遇するであろう技術用語をいくつか見てみましょう。

  • プール: プールは 1 つ以上のブロック デバイスで構成されます。プールの合計サイズは、ブロック デバイスの合計と等しくなります。
  • blockdev: ご想像のとおり、これはディスク パーティションなどのブロック デバイスを指します。
  • ファイルシステム: ファイルシステムは、合計の固定サイズとして提供されない、シンプロビジョニングされたレイヤーです。ファイルシステムの実際のサイズは、データが追加されるにつれて大きくなります。 Stratis は、データ サイズがファイル システムの仮想サイズに近づくと、ファイル システムのサイズを自動的に拡大します。

Stratis で使用できるブロック デバイスには次のものがあります。

  1. LVM論理ボリューム
  2. ルクス
  3. SSD (ソリッド ステート ドライブ)
  4. デバイス マッパー マルチパス
  5. iSCSI
  6. HDD(ハードディスクドライブ)
  7. エムドレイド
  8. 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_1my_pool_2 の 2 つのプールが存在するはずです。

上からわかるように、プール my_pool_2 が占有するハードディスク容量は、10 GB のメモリを備えた 1 つのブロック デバイスのみから作成した最初のプールの 3 倍です。

プールからファイルシステムを作成する

ファイルシステムを作成したら、次の構文を使用してプールの 1 つからファイルシステムを作成できます。

stratis fs create <poolname> <filesystemname>

たとえば、my_pool_1my_pool_2 からそれぞれ filesystem-1filesystem-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/xvdfmy_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 上の階層化されたローカル ストレージを管理する方法を説明します。お役に立てば幸いです。試してみて、どうだったか教えてください。