ハードウェアRAID 6上のZFSストライプ。何が問題になる可能性がありますか?


9

36 * 4TB HDD SANラックを持っています。RAIDコントローラは、RAID60をサポートせず、1つのRAIDグループで16台以下のHDDをサポートしました。それで、16HDDの2つのRAID6グループまたは8つのHDDのうちの4つのHDDを作ることにしました。すべてのストレージを1つのパーティションとして取得したい。

それで、ハードウェアRAID6の上でzfsプールを使用する場合、何が問題になる可能性がありますか?ええ、ネイティブHDDまたはパススルーモードを使用することを強くお勧めします。しかし、私にはこのオプションはありません。

または、私はこの状況でZFSとソフトウェアRAIDから離れるべきですか?(私は主に圧縮とスナップショットに興味があります)


2
ZFSを使用する場合は、すべてのディスクを個別に公開し(HBAモードと呼ばれることもあります)、ZFSに処理を任せないでください。これが最も効果的です。これには多くの真のエキスパート(最初はewwhite)がいて、これであなたを助けてくれます-どの正確なディスクコントローラを使用していますか?
Chopper3 2016年

1
この方法を使用して多くのZFS機能を破壊することになりますが、全体として、この方法でそれを行うために何も害を及ぼすことはありません。RAIDコントローラーはディスクの詳細をすべて抽象化するため、この構成ではチェックサムは少し役に立ちません。JBODを使用できないと言う理由にもっと興味があります。assuredsan 3530はJBOD対応ユニットです。
スプーラー2016年

2
私はewwhiteを待っています-彼は米国中部にいるので寝ていますが、彼は私が知っている誰よりもZFSをよく知っています
Chopper3

1
@Severgunはまた、4台のHDDがホットスペアで不要cuzを無駄に滞在するあなたは本当にそれが自動的にホットスペアをピックアップするよりも低下モードに沿ってぐったりに失敗したドライブでRAIDアレイのためのより良いだと思いますか、再構築、およびfully-に戻ります機能ステータス?
Andrew Henle

1
@ Chopper3私は答えます...しぶしぶ。
ewwhite 2016年

回答:


5

それで、16HDDの2つのRAID6グループまたは8つのHDDのうちの4つのHDDを作ることにしました。

それは物事を行うための最良の方法ではありません。十分に機能する場合がありますが、パフォーマンス要件によっては機能しない場合があります。

RAID5 / 6アレイの理想的なサイズは、アレイにまたがるデータ量の正確な倍数が、その上に構築されたファイルシステムのブロックサイズと一致するようなサイズになります。

RAID5 / 6アレイはブロックデバイスとして機能します。データの単一のブロックがアレイ内のディスクに広がり、そのブロックにはパリティデータも含まれます。ほとんどのRAIDコントローラは、アレイのディスクに2の累乗のサイズのデータ​​チャンクを書き込みます-その正確な値は、より優れたRAIDシステムで構成可能です-Dot Hillユニットは、それらの「より優れたRAIDシステム」の1つです。それは重要です。

そのため、アレイをスパンするにはN x(ディスクチャンクごとに保存されるデータの量)が必要です。ここで、Nはデータディスクの数です。5ディスクのRAID5アレイには4つの「データ」ディスクがあり、10ドライブのRAID6アレイには8つのデータディスクがあります。

データがRAID5 / 6アレイに書き込まれるとき、データのブロックがアレイ全体にまたがるほど大きい場合、そのデータのパリティが計算されます(通常はコントローラーのメモリ内)。その後、ストライプ全体が書き込まれます。ディスク。シンプルで高速。

しかし、書き込まれるデータのチャンクがアレイ全体に及ぶほど大きくない場合、新しいパリティデータを計算するためにRAIDコントローラは何をしなければならないのでしょうか。考えてみてください。新しいパリティデータを再計算するには、ストライプ全体のすべてのデータが必要です。

したがって、デフォルトのディスク単位のチャンクである512kbで16ドライブのRAID6アレイを作成すると、アレイを「スパン」するのに7 MBが必要になります。

ZFSは通常、128kbブロックで動作します。

そのため、ZFSは128ドライブのブロックを書き込みます-16ドライブのRAID6アレイに。提案する構成では、RAIDコントローラーがアレイから約7 MB を読み取り、その7 MB全体でパリティを再計算する必要があることを意味します。次に、その7 MB全体をディスクに書き戻します。

運が良ければ、すべてキャッシュに入れられ、パフォーマンスに大きな影響を与えることはありません。(これが、「RAID5 / 6を使用しない」という位置に次のような理由がある主な理由の1つです-RAID1 [0]はこの問題の影響を受けません。)

運が悪く、ファイルシステムのパーティションを適切に調整しなかった場合、その128kBブロックはキャッシュにない2つのRAIDストライプにまたがっており、コントローラーは14 MBを読み取り、パリティを再計算してから14 MBを書き込む必要があります。128kBブロックを1つ書き込むためのすべて。

これが論理的に発生する必要があることです。そのようなIOパターンのIOと計算負荷を減らすために、優れたRAIDコントローラーがとることができる最適化はたくさんあるので、それほど悪くないかもしれません。

しかし、128kBのブロックをランダムな場所に書き込む負荷が高い場合、7 MBのストライプサイズの16ドライブRAID6アレイのパフォーマンスが非常に悪くなる可能性が非常に高くなります。

ZFSについては、「理想的には、」RAID5 / 6のLUNの基礎となる最もアクセスが効果的にランダムである汎用のファイルシステムがためにもだストライプサイズだろう除数などの32kB、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がアレイ全体を使用できるようにします- パーティション化しないでください。ドライブがシンプルな単一ディスクであるか、RAIDコントローラによって提供されるRAIDアレイであるかに関係なく、ZFSはドライブ全体に適切に位置合わせします。

この場合、正確なスペースとパフォーマンスの要件を知らずに、3つの10ドライブRAID6アレイまたは6つの5ドライブRAID5アレイを64kBのストライプサイズでセットアップし、いくつかのホットスペアを構成して、4つのドライブを保存することをお勧めします。将来登場するもののためのディスク。何かがあるから。

私はそのディスクシステムをJBODモードで使用しないことをお勧めします。これは完全にNEBSレベル3に準拠したデバイスであり、ハードウェアに組み込まれた信頼性と可用性を大幅に保護します。「ZFS !!!!」だからといって捨てないでください。それが部品から組み立てた安価な商品ハードウェアの場合は?ええ、ZFSがRAIDを処理するJBODモードが最適ですが、それはあなたが持っているハードウェアではありませんご使用のハードウェアが提供する機能を。


つまり、4つのデータディスクを持つRAIDアレイの場合、ディスクごとのチャンクサイズは16kBである必要があります。8データディスクのRAIDアレイの場合、ディスクごとのチャンクサイズは32kBでなければなりません。私はこの数学と少し混乱しています。なぜ8つのディスク-32kBチャンクなのですか?私が間違っている場合は修正してください:128kB(ZFSブロック)/ 3(RAIDアレイ)= 43 kB / RAIDアレイ。10ディスクのRAID6 43kB / 8 = 5kB(使用できないチャンクサイズ)最も近い8kBチャンクサイズもハードウェアでは使用できません。それで、最高のパフォーマンスにアクセスできませんか?
Severgun

@Severgunチャンクサイズを逆に配置します。RAID5 / 6で絶対的な最高のパフォーマンスを目指すことに関する問題は、ほぼすべてのIO操作がRAIDアレイのストライプサイズと完全に一致する場合にのみ発生することです。ストライプサイズよりも小さいIO操作の数が多いと、パフォーマンスが大幅に低下する可能性があります。ブロックサイズを小さくすると、ランダムな小ブロック書き込みの影響を制限できます。私の経験では、最悪の場合のドロップオフを制限する代わりに、可能な最大パフォーマンスの1〜2%をあきらめた方がよいでしょう。汎用ファイルシステムは、大量の小さな書き込みを行う傾向があります。
Andrew Henle

(続き)RAID5 / 6アレイに8つのデータディスクがあり、ディスクあたり16kBのチャンクサイズがあるため、アレイ全体で128kBのストライプサイズになります。同様に、4つのデータディスクアレイの32kBチャンク。ZFSは、128kBのファイルデータブロックを単一のデバイスに書き込みます。すべてのzdev間で分割されるわけではありません。繰り返しになりますが、汎用ファイルシステムの場合、128kB未満の書き込みが多数発生するため、ストライプサイズ(64kB)を小さくすると、書き込み負荷が高い場合のパフォーマンスの低下を回避できますが、コストは低く抑えます。ケース性能。
Andrew Henle

4

かしこまりました...

これは、アプリケーションには不適切なハードウェアです。DotHillセットアップには、HP StorageWorks MSA2000 / P2000と同じ制限があり、単一のアレイグループで使用できるドライブは16台だけです。

ハードウェアRAID上の ZFS またはエクスポートされたSAN LUNは必ずしも問題ではありません。

ただし、拡張シャーシ全体で不明なインターコネクト上にZFS LUNをストライプ化すると、リスクが生じる可能性があります。

  • たとえば、デュアルコントローラーを備えたリングトポロジでマルチパスSASを実行していますか?
  • サーバーへの冗長ケーブル接続はありますか?
  • 単一のシャーシ/ケーブル/コントローラーの障害を軽減し、RAID0ストライプの一部を破壊しないようにエンクロージャー全体にドライブを垂直に分散しましたか?

真剣に、単一の名前空間でこのすべてのストレージが必要かどうかを評価する価値があるかもしれません...

単一のマウントでそのタイプの容量が必要な場合は、専用のHBA接続のJBODエンクロージャーと、場合によっては弾力性のあるケーブルとよりスマートなレイアウトの複数のヘッドユニットを使用する必要があります。


1

ZFSを実行しているボックスにすべてのドライブを直接接続する必要があります。SAS HBAを入手し、ドライブをZFS対応ボックスに接続します(OmniOSまたはSmartOSを実行しているなど)。次に、NFS、SMB、iScsiを介してスペースを共有できます...


ZFSを実行しているボックスにすべてのドライブを直接接続する必要があります。 必ずしもそうとは限りません。一部のコントローラのハードウェアアレイで故障したドライブを交換するのは簡単です。故障ライトを点灯させてハードドライブを引き出し、新しいものを差し込みます。ドライブを交換するためにZFSコマンドを実行する必要はありません。数百または数千のサーバーと、おそらく数万のハードドライブが複数のデータセンターに分散している企業のセットアップでは、それが問題になります。ドライブは、ビットの腐敗が発生するよりもずっと多く失敗します。
Andrew Henle

@Tobi Oetikerは2Uケースに36の3.5" HDDを配置する方法を教えて
Severgun

それらを追加のボックスに入れるだけです... sasエクステンダーを使用します...大規模な展開の場合は、多分joyentがそれをどのように処理しているか尋ねてください。
Tobi Oetiker

@AndrewHenle公平を期すために、ZFSと適切なHBAを使用して、同じ簡単な交換手順とステータスLEDを実現することができます(事前にパッケージ化されたソリューションを使用しない場合は、多少のスクリプトが必要になる場合があります)。
user121391 2016年

0

ハードウェアRAIDの論理ボリュームの上の理由ZFSは非常にBAD、アイデアZFSが実際に適切に機能するためにブロック・レベルのアクセスを必要とするためです。はい、使用できますが、HBAまたは直接SATA接続を介してドライブをOSに直接接続するまで、機能は完了しません。1つの例として、ZFSを提案している構成では、下のデータ(HW RAIDコントローラーの反対側)への変更からデータを合理的に保護できないため、データの安全性を保証できません。これは、ZFSが主に使用されている主な理由の1つであり、それに加えて、非常に高速です。

ZFSは素晴らしい技術であり、私はそれを強くお勧めします。ただし、正しく使用できるようにするには、ここで構造を再検討する必要があります。つまり、ZFSでディスクから直接論理ボリューム(vdevs)を作成します。

提案された内容を正確に理解する前に、ZFSがどのように動作するかについて、多くの読み物が必要であるように思われます。


はいはい、はい。ZFSができる限り機能する方法を理解しています。しかし、いくつかの複雑な点があります。1)すでにSANエンクロージャーがあり、それ使用する必要があります。ストレージを最初から構築しているわけではありません。2)これは私が物を買って捨てることができる私の家のNASではありません。3)ストレージ構成の再構築の予算がゼロに等しい。ストレージからは、100Tb前後のスペースで最大の書き込み速度が必要です。主に圧縮とスナップショットのためにZFSを探しています。私はbtrfsを試すことができますが、それは実験的なものです。うーん、ZoLも不安定かもしれません。今はしません。
Severgun

@Severgun欠点が何であるかを知っている限り、あなたは私の意見では大丈夫です。ZFSには、スナップショットなど、他の機能とは独立して機能する多くの優れた機能があります。インターネットに関するほとんどのアドバイスは、すべての分野でのベストプラクティスの重要性を強調していますが、これらは推奨事項であり、厳密な要件ではありません。この点は、ZFSへのLInuxディストリビューションの変更が多くなり、ほとんどのLinuxシステムが仮想化されて実行されるため、将来的には重要性が低くなるため、正確な状況になります。
user121391

1
ZFSがHW RAID論理ボリュームの上にある理由は、ZFSが実際に適切に機能するためにブロックレベルのアクセスを必要とするためです。 それは非常に悪いので、間違って呼ばれるほどではありません。NEBS 3に準拠したハードウェアが何を意味するのか、見当もつかないようですね。 それに加えて、非常に高速です。 ZFSはたくさんの良いものです。「超高速」はその1つではありませんこれは高速なファイルシステムです。 これもそうです。ファイルシステムが進むにつれて、ZFSは高速ではありません
Andrew Henle
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.