web-dev-qa-db-ja.com

mdadm raid10上のbtrfs、またはベアデバイス上のbtrfs raid10?

mdadmによって管理されているRAID10があり、その上にEXT4ファイルシステムがあります。しかし、私はBTRFSが好きで、EXT4ファイルシステムをBTRFSに変換したいのですが、パフォーマンスと保守性について考えていました。 BTRFSの例では、mdadmの場合のように、アレイに別のディスクを削除/追加したときにステータスを簡単に確認できません(または、方法がわからない場合があります-BTRFSドキュメントを検索したところ、これが見つかりませんでした)。

だから、あなたの経験から、より良い選択は何ですか:

  1. 単にEXT4ファイルシステムを変換し、mdadmにRAID10を管理させるには?

  2. Mdadmを取り除き、BTRFSにすべてを実行させるには?

9
DejanLekic

Btrfsにすべてを任せます。

一つには、Btrfsには、madmよりも賢い独自の統合ミラーリングコードがあります。

もちろん、madm raid10のミラーリングされたペアでディスクに障害が発生した場合は、不良ディスクを交換して、人生を続けることができます(ただし、非常に複雑なシェルコマンドのセットの後)。問題は、ディスクがもう少しソフトに故障した場合です。いくつかのブロックが不良ブロックに適切なエラーコードを与えるのではなく、間違ったビットを返すだけの場合、データを読み取るときにランダムに不良データを取得します。 Btrfsはそれよりも賢いです:それはデータのすべてのビットをチェックサムします。正直なところ、「すべてのBTreeノード」または「すべてのブロック」と言う方が正しいかどうかはわかりませんが、重要なのは、ミラーリングされた配列からデータを読み取るときに、チェックサムをチェックしてからユーザーに返すということです。ユーザーランドプロセス。チェックサムが一致しない場合は、最初にアレイ内の他のミラーを調べ、それが正しいチェックサムを提供する場合は、ディスクがサイレントに失敗し始めたことを警告します。

Btrfs wikiはあなたの質問に具体的に言及しています

BtrfsがミラーリングのためにデバイスマッパーまたはMDに依存している場合、ミラーリングされたコピーをチェックすることによってチェックサムの失敗を解決することはできません。下位層はファイルシステムブロックのチェックサムまたは粒度を認識していないため、返されるデータを検証できません。

最後に、この実質的な利点がなくても、削除または追加されたBtrfsデバイスを処理するためのコマンドラインワークフローは非常に単純です。ファイルシステムのdegraded-mount-then-fix-your-filesystemシェルコマンドを正しく取得できるかどうかさえわかりませんが、Btrfsの場合は 複数のデバイスのページに非常に明確に記載されています 次のようになります。

mount -o degraded /dev/sdb /mnt
btrfs device delete missing /mnt

この時点で、残りのディスクに十分なスペースがある場合は、いつでもbtrfs rebalanceだけで完了できます。あなたは絶対にmadmで行う必要があるので、ミラーを交換する必要はありません!また、交換する場合は、最初にbtrfs device addを実行できます。

11
Glyph

BTRFSはまだ実験段階であり、何かがクラッシュした場合に「興味深い」機能を使用することになります。本当にbtrfsを実行したい/実行したい場合は、直接実行するよりも、ソフトウェアRAID上で実行する方が当面ははるかに安全です。 btrfsが成熟して本番環境に移行すると、これはもはや当てはまらない可能性があります。

3
Waxhead