web-dev-qa-db-ja.com

ZFSとキャッシュデバイス

SSDドライブをキャッシュとしてZFSストレージに追加します。誰かこれについて何か経験がありますか?キャッシュデバイスが停止した場合、データは影響を受けますか?

9
disserman

http://web.archive.org/web/20100911224754/http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide

(Solaris Internals Webサイトはもう稼働していませんが、WebArchiveにはコピーがあります)

7
user48838

基本的に、3種類のZFSキャッシュがあり、すべてデータとメタデータの両方に使用されます。

  • ARC(アダプティブリプレースメントキャッシュ)-読み取りおよび書き込み用のメインメモリDRAMキャッシュ。
  • L2ARC(レベル2 ARC)-安全な読み取りキャッシュ:デバイス障害によるデータ損失/サービス中断なし。通常はSSDベースです。
  • ZIL(ZFSインテントログ)-ARCでディスクにフラッシュされるのを待機している永続ストレージへの書き込みを安全に保持します。データがこのキャッシュに30秒以上存在することはめったになく、コミットされていないプールの書き込みを再生するためのクラッシュ後を除いて、データが読み取られることはありません。最近のZFSバージョンでは、Zilデバイスの障害によってデータが失われることはありません(すべてのデータはまだARCにあります)が、デバイスの障害+クラッシュまたは停電により、一部の書き込みが失われる可能性があります。

最初にARCをアップグレードし、メインメモリを大量に購入します。 L2ARCとZilはどちらも、ARCからオーバーヘッドが割り当てられていることに注意してください。

L2Arcは、ARCから削除されるときに、読み取りキャッシュされたブロックによって作成されます。 ZFSはデフォルトで、ランダムIO(小さな読み取り)をL2ARCにキャッシュするだけで、ストリーミングワークロードには使用されません( 指示がない限り )。これには任意のデバイス(高速15k HDを含む)を使用しますが、多くのランダム読み取りIOPSを簡単に処理するSSDで最適に動作します。

ZILは、同期書き込みを必要とするワークロードを高速化します(プロセスは、書き込みが実際にディスクにコミットされたことの確認を待ってから、実行を続行します)。 Zilは、ハイエンドRAIDコントローラーのバッテリーバックアップキャッシュと同様の役割を果たします。書き込みレイテンシとストリーミング書き込みIOPSが優れたZilSSDを定義するものですが、何よりもZilは、電力損失が発生した場合にデータを失うことはありません。多くの適切なデバイスには、システム電源なしで保留中の操作を完了するためのスーパーキャパシタがあります。以前は書き込み耐久性の高いSLCSSD(Intel X25-E)が推奨されていましたが、新しいデバイスでは、停電時にNANDに書き戻すためにRAMバッテリー/スーパーキャパシタ付き)を使用します。ZILが必要大きくはありませんが、大きなデバイスのごく一部(たとえば、300GB Intel 320 MLC SSDのうち8GB)を使用することで、はるかに高い効果的な書き込み耐久性を実現できます。「エンタープライズ」ベンダーは常にミラーリングされたZILを推奨していますが、私のワークロードはこれまでにありませんでした。それは重要です。

特定の製品に関しては、STECはSunのFishworksプロジェクト(LogzillaとReadzillaの両方)用の最初のSSDを作成し、ZIL( ZeusRAM $ 2500/8GB)とL2ARC( Zeus IOPS $ 3k/400GB)どちらも強くお勧めします。 PCIeベースのSSDも、ZIL固有の DDRdrive x1 ($ 2k/4GB)やL2ARC用の大きなPCIeSSDのように検討する価値があります。その他のパフォーマンスの低い(読み取り:安価な)2.5インチSSDデバイスも、特にL2ARCに集約して使用すると、パフォーマンスが大幅に向上します。

13
notpeter