36 * 4TB HDDがありますSANラック。RAIDコントローラーはRAID60をサポートせず、1つのRAIDグループに16台以下のHDDしかありません。そのため、16HDDの2つのRAID6グループまたは8台のHDDのうち4台を作成することにしました。すべてのストレージを1つのパーティションとして取得したい。
それで、ハードウェアRAID6の上でzfsプールを使用する場合、何が問題になる可能性がありますか?ええ、ネイティブHDDまたはパススルーモードを使用することを強くお勧めします。しかし、私にはこのオプションはありません。
または、私はこの状況でZFSとソフトウェアRAIDから離れるべきですか? (私は主に圧縮とスナップショットに興味があります)
それで、16HDDの2つのRAID6グループ、または8つのHDDのうちの4つのRAID6グループを作成することにしました。
それは物事を行うための最良の方法ではありません。十分に機能する場合がありますが、パフォーマンス要件によっては機能しない場合があります。
RAID5/6アレイの理想的なサイズは、アレイにまたがるデータ量の正確な倍数が、その上に構築されたファイルシステムのブロックサイズと一致するようなサイズになります。
RAID5/6アレイはブロックデバイスとして機能します。単一のデータブロックがアレイ内のディスクに広がり、そのブロックにはパリティデータも含まれます。ほとんどのRAIDコントローラーは、2の累乗のサイズのデータチャンクをアレイ内のeachディスクに書き込みます-その正確な値は、より優れたRAIDシステムで構成可能です-Dot Hillユニットは1つですそれらの「より良いRAIDシステム」の。それは重要です。
そのため、アレイをスパンするにはN x(ディスクチャンクごとに保存されるデータの量)が必要です。ここで、Nはデータディスクの数です。 5ディスクのRAID5アレイには4つの「データ」ディスクがあり、10ドライブのRAID6アレイには8つのデータディスクがあります。
データがRAID5/6アレイに書き込まれるとき、データのブロックがアレイ全体にまたがるほど大きい場合、そのデータのパリティが計算され(通常はコントローラーのメモリ内)、ストライプ全体が書き込まれます。ディスク。シンプルで高速。
しかし、書き込まれるデータのチャンクがアレイ全体にまたがるほど大きくない場合、RAIDコントローラーは新しいパリティデータを計算するために何をする必要がありますか?考えてみてください。newパリティデータを再計算するには、entireストライプ内のすべてのデータが必要です。
したがって、デフォルトのディスクごとのチャンクである512kbで16ドライブのRAID6アレイを作成すると、アレイを「スパン」するのに7 MBが必要になります。
ZFSは通常、128kbブロックで動作します。
したがって、ZFSは128ドライブのブロックを書き込みます-16ドライブのRAID6アレイに。あなたが提案している構成では、それはRAIDコントローラーがアレイからread約7 MBを取得し、それらの7 MB全体でパリティを再計算する必要があることを意味します。次に、その7 MB全体をディスクに書き戻します。
運が良ければ、すべてキャッシュに入れられ、パフォーマンスに大きな影響を与えることはありません。 (これが、「RAID5/6を使用しない」という位置に次のような理由がある主な理由の1つです。RAID1[0]はこの問題の影響を受けません。)
運が悪く、ファイルシステムのパーティションを適切に調整しなかった場合、その128kBブロックはキャッシュにない2つのRAIDストライプにまたがっており、コントローラーは14 MBを読み取り、パリティを再計算してから14 MBを書き込む必要があります。すべてで1つの128kBブロックを書き込みます。
これが、logicallyで発生する必要があることです。優れたRAIDコントローラーがIOおよびそのようなIOパターンの計算負荷を軽減するため、mightそんなに悪くない。
しかし、128kBブロックをランダムな場所に書き込む負荷が高い場合、7 MBのストライプサイズの16ドライブRAID6アレイのパフォーマンスが非常に悪くなる可能性が非常に高くなります。
ZFSの場合、「理想的な」基盤となるRAID5/6 LUN ほとんどのアクセスが事実上ランダムである汎用ファイルシステムの場合のストライプサイズはdivisor32kB、64kB、128kBなどの128kB。この場合、RAID5/6アレイのデータディスクの数は1(これは無意味です-構成することが可能であっても、RAID1 [0]を使用することをお勧めします)、2、4、または8に制限されます。最良のシナリオでは、RAID5/6アレイに128kBのストライプサイズを使用しますが、汎用のファイルシステムでは、ほとんどの場合、最良のケースは発生しません。ファイルシステムは、メタデータをそれらと同じように格納しないためです。ファイルデータを保存します。
5ディスクRAID5アレイまたは10ディスクRAID6アレイのいずれかをセットアップすることをお勧めします。ディスクごとのチャンクサイズは、アレイストライプ全体にまたがるデータの量が64kBになるように小さく設定します(そうです、これを行いました)以前はZFS-何度も)。つまり、4つのデータディスクを持つRAIDアレイの場合、ディスクごとのチャンクサイズは16kBである必要があります。8データディスクのRAIDアレイの場合、ディスクごとのチャンクサイズは8kBでなければなりません。
次に、ZFSがentire配列を使用できるようにします-notでパーティションを作成します。ドライブがシンプルな単一ディスクであるか、RAIDコントローラによって提供されるRAIDアレイであるかに関係なく、ZFSはドライブ全体に適切に位置合わせします。
この場合、スペースとパフォーマンスの正確な要件がわからない場合は、64ドライブのストライプサイズで3つの10ドライブRAID6アレイまたは6つの5ドライブRAID5アレイをセットアップし、2つのホットスペアを構成して、4つのドライブを保存することをお勧めします。将来登場するもののためのディスク。何かがあるから。
私はそのディスクシステムをJBODモードで使用しないことをお勧めします。これは完全に NEBSレベル3準拠のデバイス であり、ハードウェアに組み込まれた重要な信頼性と可用性の保護を提供します。 「ZFS !!!!」だからといって捨てないでください。それが部品から組み立てた安価な商品ハードウェアの場合は?ええ、ZFSでRAIDを処理するJBODモードが最適です。ただし、これは[〜#〜]ではありません[〜#〜]お持ちのハードウェアです。 [〜#〜] use [〜#〜]ハードウェアが提供する機能。
かしこまりました...
これは、アプリケーションには不適切なハードウェアです。 DotHillセットアップには、HP StorageWorks MSA2000/P2000と同じ制限があります。1つのアレイグループで使用できるドライブは16台だけです。
ZFS ハードウェアRAIDの上またはエクスポートされたSAN LUN は必ずしも問題ではありません。
ただし、拡張シャーシ全体で不明なインターコネクト上にZFS LUNをストライプ化すると、リスクが生じる可能性があります。
真剣に、単一の名前空間でこのすべてのストレージが必要かどうかを評価する価値があるかもしれません...
単一のマウントでそのタイプの容量が必要な場合は、専用の HBA接続のJBODエンクロージャーと、場合によっては複数のヘッドユニット を使用して、弾力性のあるケーブル接続とよりスマートなレイアウトを使用する必要があります。
ZFSを実行しているボックスにすべてのドライブを直接接続する必要があります。 SAS HBAを取得し、ドライブをZFS対応ボックスに接続します(例:OmniOSまたはSmartOSを実行)。NFS、SMB、iScsiを介してスペースを共有できます...
HW RAID論理ボリューム上のZFSがVERY BADである理由は、ZFSが実際に適切に機能するためにはブロックレベルのアクセスが必要だからです。はい、使用できますが、HBAまたは直接SATA接続を介してドライブをOSに直接接続するまで、機能は完了しません。 1つの例は、ZFSを提案している構成で、以下のデータ(HW RAIDコントローラーの反対側)への変更からデータを合理的に保護できないためですデータの安全性を保証できません。これは、ZFSが使用される主な理由の1つであり、しかも非常に高速です。
ZFSは素晴らしい技術です。強くお勧めします。ただし、正しく使用できるようにするには、ここで構造を再検討する必要があります。つまり、ZFSで論理ボリューム(vdevs)を作成します。ディスクから直接。
提案された内容を正確に理解する前に、ZFSがどのように動作するかについて、多くの読み物が必要であるように思われます。