CentOS Stream 9でのStratisによるストレージ管理:LVMの煩雑さから解放されよう

CentOS tutorial - IT technology blog
CentOS tutorial - IT technology blog

伝統的なLVMではなくStratisを選んだ理由

CentOS 7を使っていた頃、私は頻繁にLVMの容量計算やXFSパーティションのフォーマットを行っていました。上司からサーバーのディスク容量が足りないと報告を受けるたびに、パーティションの拡張(resize)作業に追われていました。このプロセス自体は難しくありませんが、非常に時間がかかります。lvextendxfs_growfsといったコマンドを一つ忘れるだけで、システムにエラーが発生しやすくなります。

会社がCentOS Stream 9に移行した際、より柔軟なソリューションを探しました。ZFSのような強力さを持ちつつ、Red Hatのエコシステムとうまく統合できるものが必要でした。そこで出会ったのがStratisです。

ログサーバー群で6か月間運用してみた結果、Stratisは本当に作業負担を軽減してくれると感じました。これはLVMを完全に置き換えるものではありません。実際には、手動設定の複雑さを隠蔽するために上位で動作する管理レイヤー(デーモン)です。GB単位で計算したり、ファイルシステムの形式を選択したりする必要はもうありません. すべてがデフォルトで「Thin Provisioning(シン・プロビジョニング)」になります。

コアコンセプト:Pool, Filesystem, Blockdev

コマンドを打つ前に、以下の3つの基本概念を理解しておく必要があります:

  • Blockdev: 物理ハードディスクやパーティション(/dev/sdbなど)。注意:Stratisでは最低1GBの容量を持つデバイスが必要です。
  • Pool: 複数のBlockdevを一つにまとめた巨大なリソースの「バッグ」です。
  • Filesystem: Poolから作成されます。データが増えるにつれてファイルシステムは自動的に拡張されます。Pool内で実際に使用している容量分のみを占有します。

実践:Stratisの設定 AからZまで

2台の空きディスク /dev/sdb/dev/sdc (各20GB)を備えたCentOS Stream 9サーバーを想定します。

1. サービスのインストールと有効化

まず、サービスパッケージと管理ツールをインストールします:

sudo dnf install stratisd stratis-cli -y
sudo systemctl enable --now stratisd

次に進む前に、サービスが active (running) 状態であることを確認してください。

2. ストレージプールの作成

2つのディスクを data_pool という名前のプールにまとめます。警告: Stratisはディスク上の古いデータをすべて消去するため、デバイス名を慎重に確認してください。

sudo stratis pool create data_pool /dev/sdb /dev/sdc

以下のコマンドで結果を確認します:

sudo stratis pool list

この時点で、”Total Physical Size” カラムに40GBと表示されます。

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

これが私の一番好きな部分です。XFSやext4などの形式を選択する必要はなく、Stratisがバックグラウンドで自動的に処理します。

sudo stratis fs create data_pool web_data

すぐに使用可能なファイルシステムが2秒足らずで作成されます。

4. ファイルシステムの安全なマウント

Stratisはデバイスを /stratis/pool_name/fs_name というパスに作成します。再起動時のエラーを避けるため、直接のパスではなくUUIDを使用します。

sudo mkdir -p /mnt/web_data
lsblk -f /stratis/data_pool/web_data

/etc/fstab に以下の行を追加します。注意:システムがStratisデーモンの起動を待ってからディスクをマウントするように、x-systemd.requires=stratisd.service オプションが必須です。

UUID=xxxx-xxxx-xxxx  /mnt/web_data  xfs  defaults,x-systemd.requires=stratisd.service 0 0

スナップショット – データの保険

コードの更新や大きな設定変更の前には、必ずスナップショットを作成しています。万が一システムを壊してしまっても、ロールバックは数秒で完了します。

web_data のコピーを作成します:

sudo stratis fs snapshot data_pool web_data web_data_backup_$(date +%F)

このスナップショットは独立したファイルシステムとして機能します。実行中のサービスに影響を与えることなく、別のディレクトリにマウントしてデータを救出することができます。

6か月間の運用から得た実務経験

以下は、本番環境でStratisを使用する際の重要な注意点です:

  • 80%ルール: シン・プロビジョニングですが、物理プールが100%になるとファイルシステム全体のI/Oが停止します。私は常に、プールが80%に達したときにZabbixで警告が出るように設定しています。
  • 一瞬で拡張: 容量必要ですか?新しいディスクを接続して sudo stratis pool add-data data_pool /dev/sdd を実行するだけです。ダウンタイムもアンマウントも不要です。
  • パフォーマンス: fio によるテストの結果、Stratisの読み書き速度は純粋なLVMと同等であり、レイテンシの差もごくわずかでした。
  • 制限事項: Stratisは現在XFSのみをサポートしています。プロジェクトでext4の使用が必須な場合、Stratisはまだ適切な選択肢ではありません。

結び

Stratisはストレージ管理をよりシンプルで楽なものにしてくれます。煩雑な手動手順を排除し、パーティション拡張コマンドを打つ代わりに、データの保護に集中できるようになります。

もしCentOS Stream 9やAlmaLinuxを使用しているなら、Stratisで小さなラボ環境を構築してみてください。信じてください、超高速なファイルシステム作成に慣れてしまうと、もう以前のやり方には戻りたくなくなるはずです。

Share: