web-dev-qa-db-ja.com

ZFS:RAIDZと同上ブロックを使用したスト​​ライプ

FreeBSDからZFSファイルサーバーを構築します。最近、RAIDZ udevがプールの一部になると、拡張できないことを知りました。私はホームユーザーであり、おそらく年に1枚のディスクを追加するので、これは問題です。

しかし、プール全体に対してcopys = 3を設定し、個々のドライブを別々のプールに投入するとどうなりますか?可能であれば、コピーがドライブ間で配布されることをどこかで読んだことがあります。そこに保証はありますか?私は本当に安い上でビット腐敗とドライブ障害からの保護を望んでいます。速度は1Gbネットワークを経由し、MOSTストリームは720pポッドキャストになるため、速度は問題になりません。

私のデータは、単一のドライブ障害から安全であることが保証されますか?考えていないことはありますか?ありとあらゆる入力を歓迎します。

5
RandomInsano

特にcopys = 3の場合、ファイルシステムデータは冗長になる可能性が非常に高いため、データはビット腐敗から保護されます。

ただし、障害のあるディスクを新しいディスクと交換する方法がないため、ディスク全体の障害から確実に保護されることはありません。障害が発生した直後でも、すべてのデータにアクセスできるはずですが、プールはインポートできないため、システムは再起動後も存続しません。

同様の質問については、 ZFS:ドライブを失った後、どのようにして正しいコピー数を復元しますか? を参照してください。

3
jlliagre

同じプールでraidzvdev +シングルディスクvdevを使用しても保護されません。一度に2つのディスクをzpoolに追加する(そしてそれらをミラーリングする)必要があります。これにより、1つのディスク障害がカバーされます。

その理由は、copiesは、ブロックが異なるディスクに配置されることを保証しないためです。

Raidz vdevを拡張する代わりの方法の1つは、zfs sendを使用してすべてのデータを一時的にどこかに保存し、ディスクを追加してraidz vdevを再構築してから、zfs receiveを使用して元に戻すことです。いくつかのTBを超えると、データを格納するために多くのスペースが必要になるため、困難になります。

3
Martin

興味深いことに、今日これを見つけました。コピーは、「コピー」によって作成された同上ブロックが異なるvdevに格納されることを保証する必要があります: https://blogs.Oracle.com/bill/entry/ditto_blocks_the_amazing_tape (「スプレッド」のセクションを参照)

したがって、このブログ投稿によると、複数のコピーが利用可能なファイルシステムでのフルディスク障害から保護されます。ただし、これらのファイルシステムではonlyです。

「複数のデバイス(vdev)があるストレージプールでは、状況が少しスパイシーになります。ブロックの各コピーを個別のvdevに割り当てます。」

1
RandomInsano