FreeBSDからZFSファイルサーバーを構築します。最近、RAIDZ udevがプールの一部になると、拡張できないことを知りました。私はホームユーザーであり、おそらく年に1枚のディスクを追加するので、これは問題です。
しかし、プール全体に対してcopys = 3を設定し、個々のドライブを別々のプールに投入するとどうなりますか?可能であれば、コピーがドライブ間で配布されることをどこかで読んだことがあります。そこに保証はありますか?私は本当に安い上でビット腐敗とドライブ障害からの保護を望んでいます。速度は1Gbネットワークを経由し、MOSTストリームは720pポッドキャストになるため、速度は問題になりません。
私のデータは、単一のドライブ障害から安全であることが保証されますか?考えていないことはありますか?ありとあらゆる入力を歓迎します。
特にcopys = 3の場合、ファイルシステムデータは冗長になる可能性が非常に高いため、データはビット腐敗から保護されます。
ただし、障害のあるディスクを新しいディスクと交換する方法がないため、ディスク全体の障害から確実に保護されることはありません。障害が発生した直後でも、すべてのデータにアクセスできるはずですが、プールはインポートできないため、システムは再起動後も存続しません。
同様の質問については、 ZFS:ドライブを失った後、どのようにして正しいコピー数を復元しますか? を参照してください。
同じプールでraidzvdev +シングルディスクvdevを使用しても保護されません。一度に2つのディスクをzpoolに追加する(そしてそれらをミラーリングする)必要があります。これにより、1つのディスク障害がカバーされます。
その理由は、copies
は、ブロックが異なるディスクに配置されることを保証しないためです。
Raidz vdevを拡張する代わりの方法の1つは、zfs send
を使用してすべてのデータを一時的にどこかに保存し、ディスクを追加してraidz vdevを再構築してから、zfs receive
を使用して元に戻すことです。いくつかのTBを超えると、データを格納するために多くのスペースが必要になるため、困難になります。
興味深いことに、今日これを見つけました。コピーは、「コピー」によって作成された同上ブロックが異なるvdevに格納されることを保証する必要があります: https://blogs.Oracle.com/bill/entry/ditto_blocks_the_amazing_tape (「スプレッド」のセクションを参照)
したがって、このブログ投稿によると、複数のコピーが利用可能なファイルシステムでのフルディスク障害から保護されます。ただし、これらのファイルシステムではonlyです。
「複数のデバイス(vdev)があるストレージプールでは、状況が少しスパイシーになります。ブロックの各コピーを個別のvdevに割り当てます。」