大容量メディアストレージとZFSまたはBTRFS

大容量メディアストレージとZFSまたはBTRFS

単一の8TB WDドライブに約6TBのメディアファイルを持つサーバーがあります。

質問をする前に、いくつかの背景知識を提供する必要があるようです。

ファイルは数週間BTRFSにありましたが、関連しないハードウェアの問題と、その後のOSの再構築後に誤ってディスクを破壊し、バックアップからファイルを復元する必要があったため、この機会にZFSを使用しようとしました。

私がzfsを使いたい主な理由は、データの整合性を維持する能力です。 btrfs(今はzfs)に移動する前は、ext4にこれらのファイルがあり、ドライブでビット破損の問題が発生した後、静かに破損したファイルがたくさんありました。

したがって、データをzfsにリロードした後、数週間ですべてがうまく機能しましたが、今朝までディスクが無慈悲にホイップされることがわかりました。

ちょっとした調査の終わりに、zfsはめまいがするほど速い586K / sの速度で「スクラブ」していることがわかりました。このスピードでは絶対に終わらないんですよ!

今、このプロセスの一部はZFSに慣れることです。したがって、ここで何かが間違って理解されている場合は、お知らせください。しかし、データセット全体が単一の物理ストレージに格納されるため、データの整合性にはスクラブが必要だと思います。ディスク?

これが正しい場合は、ディスクをさらに購入し、どのような形でもraidzを使用すると、ウィフラッシュの問題は解決されますか?

それでは、この問題を解決するための最良の方法は何ですか?

1)2つの4TBディスクを購入し、非冗長ストライピングを使用しますか? (最も安い)

2)4TBディスクを3枚購入し、重複ストライピングを使用しますか? (より高価な)

3)2番目の8TBディスクを購入してミラーリングしますか? (最も高価な)

オプション2と3の冗長性(可用性)は実際には必要ではなく、ディスクを常に清掃せずにデータ(整合性)を維持することに興味があることに注意してください。

システム詳細:intel i3 6100T 16Gb RAM 8TB WD Red Ubuntu 16.04(別途SSD)

zfs圧縮と重複排除がオフになりました(最初はオンになり、後でオフになりました)

読んでくれてありがとう

ベストアンサー1

データセット全体が単一の物理ディスクに格納されるため、データの整合性のためにスクラブが必要であると仮定しますか?

ZFSクリーンアップは、ZFSの一般的なファイルチェックメカニズムが問題をすばやく検出できるように、データセットがデータセット内のすべての重要なファイルに頻繁にアクセスする場合にのみ必要です。週に1回クリーンアップすることを選択しましたが、一般的な使用パターンが1日に1回すべての重要なデータブロックを読み取ったり変更したりすると、クリーンアップは重複します。

あなたのような状況では、いくつかのファイルに長年アクセスできない可能性がありますが、後でそこ彼らはついにする定期的な手術を受けることは本当に良い考えです。

単一のディスクプールで実行されるすべてのクリーンアップ操作は、破損したブロックを持つファイルにアクセスできないとマークすることです。そうですね。 ZFS がそのファイル内の 1 つのビットエラーも検出すると、ファイル全体を読み取ることができないように拒否します。 ZFSは、破損していないと判断されたデータのみを渡します。

これが可能な場合は、ある量の冗長ストレージでZFSを使用したい理由です。 ZFSに使用するミラーを提供すると、同じブロックが両方同じ結果を得るには、ミラーを破壊する必要があります。

ZFSを使用すると、単一のディスクプールからこの状況を手動で回復できます。つまり、バックアップからファイルを復元できます。 (同様のチェックサムがあれば、ファイルの破損していないバージョンを修復していることがわかりました。)なぜなら、ZFSは書き込み中のコピーファイルシステムから回復されたファイルは、未使用のデータブロックに保存され、破損したデータブロックを含む以前のバージョンが削除されます。

ディスクをさらに購入し、一種のraidzを使用すると、頸椎の問題は解決しますか?

プールがアイドル状態の場合、クリーンアップにはプール全体を読み取るのとほぼ同じ時間がかかります。このように大きなディスクの場合、8〜24時間かかることが予想されます。

これよりはるかに長い時間がかかる場合は、プールがアイドル状態になってはいけません。もしあなたならアイデアプールがアイドル状態の場合、クリーンアップを頻繁に中断するいくつかのバックグラウンドジョブがあるため、ZFSは優先順位の低いバックグラウンドクリーンアップジョブをすばやく完了できない可能性があります。

私はこれが一種のホームメディアサーバーであると感じたので、この実験を試してみました。寝る前にScrubを起動し、シングルユーザーモードでシステムをシャットダウンしてから、次のコマンドを実行します。

# watch -n 120 zpool status

スクラブにかかる時間を記録し、寝てください。 N時間寝て、朝起きたときの予想時間がN時間以上か、以下であるか確認してください。私はそれがNよりはるかにダウンしていると思います。今、システムはそのディスクをクリーンアップする以外に何もすることがほとんどないからです。

この場合、マルチユーザーモードで実行されているバックグラウンドプロセスがZFSを振り続けて、多くの便利なタスクを実行できないようにする必要があります。

実際の質問についてではありません。より多くのディスクを購入しても、クリーンアップが速くなるわけではありません。これは、単にZFSにデータ破損イベントを自動的に回復するより多くの機会を提供します。プロビジョニングされたディスクの数に関係なく、ZFSはディスクをクリーンアップするためにディスク上のすべてのデータブロックを読み取る必要があり、今日のマルチテラバイトディスクではこれに数時間かかります。

注:ディスクを追加すると、プール全体のMTBFも減少しますが、これはトレードオフです。バックアップに頼るよりもエラーを回復するにはコストがかかり、長期的にはコストがかかります。 ZFSはバックアップではありませんが、冗長ストレージを介してファイルのバックアップに戻る必要がある回数を減らすことができます。

(バックアップは、誤った削除、マルウェア、オフサイトの災害復旧など、記憶媒体の障害を超えて保護します。バックアップにはまだZFSを使用する必要があります。)

2つの4TBディスクを購入し、非冗長ストライピングを使用しますか? (最も安い)

これはMTBFの半分であり、速度以外の利点はありません。プール全体を失う余裕があるプールでのみこれを実行してください。

4TBディスク3枚を購入し、冗長ストライピングを使用しますか? (より高価な)

最新のマルチテラバイトのプールでドライブを交換するのに数時間かかることがあるため、少なくとも二重冗長性を使用することをお勧めします。4つディスクとraidz2。単純な双方向ミラーの場合、いずれかのディスクに障害が発生した場合は、不良ディスクを直接交換して修復すると冗長性はありません。また、交換品が到着するのを待っている間は余裕時間もありません。 (すでに交換品をお持ちの場合は、バックアップ用にプールに保管しますか?正しいですか?)

1つの制限された例外を除いて、ストレージシステムに利用可能なスロットがある場合、ZFSミラーリングを使用すると、N方向ミラーに代替エントリを追加して一時的にN + 1方向ミラーにすることができます。その後、ZFS再構築プロセスでは、不良ディスクの良好なブロックをチェックして、ディスクの不良ブロックを確認できます。考える悪くないただし、これはソフトエラーのあるディスクでのみ機能します。ディスクに致命的なエラーが発生した場合はN-1冗長に戻り、Nが2の場合は重複はありません。

2番目の8TBディスクを購入してミラーリングしますか? (最も高価な)

3つのオプションのうち、ミラーグループを介してZFSプールを拡張するのが最も簡単なオプションなので、これは私が選択したオプションです。 3方向ミラーに簡単に移動するオプションを提供しますが、プール全体を再構築しないとraidz1からraidz2に移動することはできません。

オプション2と3(可用性)の冗長性は実際には必要ではなく、データの維持(整合性)にも興味があります。

バックアップについて100%確信していない限り、これはあまり違いがないようです。バックアップを取得した後にバックアップがわずかに破損する可能性がある場合、または復元する必要があるファイルのバックアップがない場合、使用できないデータの残りの整合性はゼロです。

正直なところ、別の冗長ZFSプールを使用して冗長ZFSプールをバックアップすることをお勧めします。それ以外の場合、バックアップはどのように信頼できますか?

はい、高価です。これで、8TBのデータをコンピュータに接続するかどうかを決定する必要があります。

おすすめ記事