サイズがXのディスク2つとサイズが2Xのディスクが1つあります。
必要なもの:2倍サイズのミラー型冗長zpool
ZFSでは、2台のXドライブを接続するのは非常に簡単です。しかし、作成されたvdev(サイズ2X)を他の2XディスクにミラーリングするためにZFSの内部方法を使用できないことがわかりました。
私は次のような(ややエレガントではない)解決策を思いつきました。
- オペレーティングシステムツール(Linuxの場合はmdadm、FreeBSDの場合はgstripe)を使用して、2台のXドライブを2Xドライブにミラーリングできる物理デバイスに接続します。しかし、私はZFSの追加の複雑さ、プラットフォームの依存関係、およびベアメタルの利点の損失が不便です。
- 2Xドライブを2つのパーティションに分割し、
zpool create tank mirror /dev/Xone /dev/2Xpart1 mirror /dev/Xtwo /dev/2Xpart2
物理的に隣接するハードウェアに分散されたストライプパーティションを使用して、4つのメンバーで構成されるRAID10を作成します。
答え1
ZFSは実際に望む作業をサポートしていません。必要に応じて動作するように努めることができますが、そうする過程で意図した用途と戦うことになります。
ZFS企業ファイルシステムとボリュームマネージャソリューション。企業環境では、説明することの複雑さが増すため、どちらも同じサイズのドライブを購入するためのコストが削減されます。
最もクリーンなソリューション持っていることを考えると実際には、より大きなドライブを半分に分割し、それぞれがより小さいディスクとより大きなディスクの半分を含む2つのvdevプールを設定することが可能かもしれません。その後、ZFSは2つのvdev間でデータをストライプし、双方向にミラーリングされる2幅のストライプセットを提供します。標準のRAID用語では、RAID 1の2つのデバイスは、各Aに2つのデバイスがあります。 RAID 0では、RAID内の各デバイス1は実際には単一のデバイスの一部です。次のようになります(物理デバイスは*で示されています)。
_ small1*
/
_ raid0left ----< _ largeleft
/ \ /
pool ---< >---- large* ----<
\ / \
` raid0right ---< ` largeright
\
` small2*
どれくらい柔らかく見えますか?まず、何らかの理由で大きなドライブを失うと、すべての冗長性が失われ、ZFSのエラー回復能力が大幅に制限されます。
これにより、より大きなディスクがI / O要求を満たすために狂ったように検索されます。実際には、1つのデバイスの場合、ZFSはディスクを2つの別々のデバイスとして扱い、ZFSはもはやできないため、ZFSの最適化の多くがオフになる可能性が高いためです。より大きなドライブ全体を制御するとします。回転式ドライブであれば、検索だけでも膨大なストレスを受けます。
また、少なくとも最後に確認した場合、vdevはプールに追加のみ可能で削除できないため、この設定に閉じ込められます。 vdevのデバイスを交換できますが、プール全体を破壊して再作成しないと、vdev自体では何もできません。また、DEGRADED
プールが正しく機能するためには、プール内の各vdevが少なくとも実行されている必要があることに注意してください。したがって、最良のシナリオでも、単純なミラーリング構成よりも多くの安定性を得ることはできません。これは、ある物理デバイスに障害が発生すると、他のエラーがなくてもストライプの両側のパフォーマンスが低下するためです。この場合、これら2つの小さなドライバが再シルバリングの過酷さに耐えることを望むのが最善です。
とにかくこれを試してみると、より大きなディスクがSSDではない限り、検索アクティビティだけではプールのパフォーマンス、特にIOPSの点でプールのパフォーマンスに絶対に致命的な影響を与える可能性があります。スループット。
私はちょうど大きなドライブと同じサイズのドライブをもう1つ購入し、簡単な双方向ミラーをインストールします。