FedoraでStratisを使いこなす:PoolとSnapshotでストレージ管理をより効率的に

Fedora tutorial - IT technology blog
Fedora tutorial - IT technology blog

わずか5分で完了するStratisによるストレージシステムのセットアップ

Fedoraをメインの開発マシンとして2年以上愛用しており、パッケージの更新速度が非常に気に入っています。しかし、一つ「悩み」がありました。新しいハードディスクを追加するたびに、LVMと格闘し、パーティションを分割してフォーマットする…という作業に非常に時間がかかることです。Stratisを知るまでは、それが当たり前だと思っていました。

まず、DNFを使用して以下のツールをインストールします:

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

例えば,空のSSDを /dev/sdb に接続したとします。以下は、ストレージ環境を構築するための「クイック」な手順です:

  1. Poolの作成: 物理ハードディスクを一つの管理グループにまとめます。
    sudo stratis pool create storage-pool /dev/sdb
  2. ファイルシステムの作成: 作成したPoolからデータ領域を初期化します。
    sudo stratis filesystem create storage-pool data-work
  3. マウントと使用:
    sudo mkdir /mnt/data
    sudo mount /stratis/storage-pool/data-work /mnt/data

5分もかからずに、すぐに使用可能なストレージシステムが整います。ブロック容量を計算したり、以前のように手動でファイルシステムのサイズ変更(resize)に煩わされる必要もありません。

なぜStratisはシステム管理者にとっての「救世主」なのか?

実のところ,StratisはBtrfsやZFSのような全く新しいファイルシステムではありません。これは、**XFS**、**LVM**、**Device Mapper**といった非常に安定した既存の技術の上で動作する、インテリジェントな管理層(デーモン)のようなものです。

Thin Provisioning(シン・プロビジョニング)の威力

これは私が特にお気に入りの機能です。Stratisでは、ファイルシステムの表示容量を実際のハードディスク容量よりも大きく設定できます。データは、実際にファイルを書き込んだ時にのみ物理的な容量を消費します。

実践的な例: わずか250GBのSSD上に、1TBの仮想ファイルシステムを作成できます。データが増えるにつれてStratisが自動的に容量を割り当てるため、従来の分割方法のように「将来のために確保しておく」といった無駄な容量を気にせず、ストレージを最大限に活用できます。

瞬時に行える拡張性

もしドライブ /dev/sdb が容量不足で赤色表示になっても、焦る必要はありません。別のドライブ /dev/sdc をマシンに接続し、それを現在のPoolに追加するだけです:

sudo stratis pool add-data storage-pool /dev/sdc

即座に storage-pool 内のすべてのファイルシステムに「余裕」が生まれます。面倒な umountresize2fs コマンドを叩く必要は一切ありません。

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

運用担当者(Ops)や開発者(Dev)にとって、rm -rf コマンドを誤って入力したり、設定ファイルを壊したりすることは避けられないトラブルです。Stratisのスナップショットは、一瞬で時間を巻き戻すことができる「救命いかだ」となります。

ファイルシステム data-work のスナップショットを作成するには、次のようにします:

sudo stratis filesystem snapshot storage-pool data-work data-backup-$(date +%Y%m%d)

このスナップショットは完全に独立して動作します。誤ってデータをすべて削除してしまっても、バックアップ版をマウントしてコピーし直すだけで完了です。実際、私は危険な設定変更を試す際にスナップショットをよく利用します。失敗しても、オリジナルから数秒で作り直すことができます。

自動マウント設定と「痛い目を見ないための」重要事項

重要な注意事項: /etc/fstab ファイルで /dev/sdb のようなデバイス名を使用することは絶対に避けてください。再起動後、 sdbsdc に入れ替わってしまう可能性があり、システムが即座に起動不能になる恐れがあります。

最も標準的な方法は UUID を使用することです。次のコマンドで Stratis ファイルシステムの UUID を取得します:

lsblk -f

その後、以下の必須オプションを添えて /etc/fstab に追加します:

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

x-systemd.requires=stratisd.service オプションは小さなコツですが、極めて重要です。これは、Stratisサービスが準備完了してからディスクをマウントするようにオペレーティングシステムに強制するものです。この行がないと、再起動後にマシンがレスキューモード(Emergency Mode)に陥りやすくなります。

実践テクニック:システムのヘルスチェック

予期せぬ事態を避けるために、Stratisの直感的なコマンドセットを使用して、定期的にPoolの状態を確認することをお勧めします:

  • stratis pool list: Poolの容量の概要を監視します。
  • stratis filesystem list: パーティションのリストと、実際に占有されている容量を確認します。
  • stratis blockdev list: 物理ハードディスクが「健全」かどうかを確認します。

もし “Alerts” 列に不審な情報が表示された場合は、すぐに journalctl -u stratisd コマンドでシステムログを確認し、迅速に対応しましょう。

おわりに

現在のFedoraはデフォルトでBtrfsを採用していますが、大規模なストレージサーバーや、XFSの安定性とPooling의 柔軟性を必要とするワークステーションにとって、Stratisは依然として非常に魅力的な選択肢です。管理を最大限に簡素化してくれるため、ハードディスク上のデータの1バイト1バイトと格闘する代わりに、コードに集中することができます。

Share: