web-dev-qa-db-ja.com

SSDからHDDへのさまざまなキャッシュオプション(dm-cache、flashcash ...)の利点/欠点は何ですか?

SSDを使用してHHDのキャッシュとして機能するさまざまなテクノロジーが利用できるようです。私が知っているもの:

  • dm-cache(Redhatによる-3.9カーネルで、ubuntu 13.10にあるはずです)
  • Flashcache(facebookで開発および使用)
  • Bcache(Googleが開発および使用)
  • EnhanceIO(STECによる、Flashcacheに基づく)

さまざまな実装に注目すべき違いはありますか? Webブラウザやゲームなどの通常のプログラムのパフォーマンスを向上させるために、通常のデスクトップPCの使用に最適なのはどれですか?

23
Uli

どこから始めればいいのか本当にわかりません。これはすべて素晴らしい情報だからです。 SSDについての情報から始め、次にすべての異なるキャッシュ方法の説明から始めます。私はあなたことを願っています

長所/短所

  • 価格:SSDはなんとなく高価です
  • 最大容量および共通容量:大容量SSDは非常にまれで高価です
  • 速度:ここでSSDがエッジを獲得します
  • 耐久性:SSDには可動部品がない

ハイブリッドシステムを持ち、両方の長所(容量、信頼性、速度など)を活用するのが最善

Linux 3.9カーネル(2013年4月28日に利用可能になりました)はSSDキャッシングを導入しています。カーネルのデバイスマッパーには、dm-cacheと呼ばれるキャッシュターゲットが含まれ、SSDまたはその他のストレージデバイスをハードドライブのキャッシュとして使用できるようになりました。より高速なSSDが最初にデータをキャッシュし、それを低速のハードドライブに転送できるため、データの書き込みと読み取りが本質的に高速化されます。

ソース: Iwn

Flashcacheは、2010年4月にFacebook(Mohan Srinivasan、Paul Saab、Vadim Tkachenko)によって最初に作成およびリリースされたモジュールです。別のドライブ上のドライブのライトスルーキャッシングを可能にするカーネルモジュールです。これは、パフォーマンス上の理由から、より小さなソリッドステートドライブに回転ドライブをキャッシュするために最もよく使用されます。これにより、SSDの速度と、最近キャッシュされたファイルの標準的な回転ドライブのサイズが得られます。 FlashCacheは、Linux用の汎用ライトバックブロックキャッシュです。

ソース: ArchLinux

Bcacheは、Linuxカーネルブロックレイヤーキャッシュです。フラッシュベースのソリッドステートドライブ(SSD)などの1つまたは複数の高速ディスクドライブを、1つまたは複数の低速のハードディスクドライブのキャッシュとして機能させることができます。

ハードドライブは安価で大きく、SSDは高速ですが、小さくて高価です。透過的に両方の利点を得ることができたらいいと思いませんか? Bcacheを使用すると、ケーキを持って食べることもできます。

LinuxカーネルのBcacheパッチにより、SSDを使用して他のブロックデバイスをキャッシュできます。 ZFSのL2Arcに似ていますが、Bcacheはライトバックキャッシング(キャッシングによる書き込みだけでなく)も行い、ファイルシステムに依存しません。最小限の労力でオンに切り替えられるように設計されており、セットアップを設定しなくても正常に動作するように設計されています。デフォルトでは、シーケンシャルIOはキャッシュされず、SSDがExcelでランダムに読み書きするだけです。これは、デスクトップ、サーバー、ハイエンドストレージアレイ、さらには組み込みに適していることを意味します。

設計の目標は、SSDとキャッシュされたデバイス(キャッシュヒット対ミス、ライトスルー対ライトバックの書き込みに依存)と同等のエラーを許容範囲内に収めることです。まだシーケンシャルリード用ではありません。しかし、テストにより、主にランダムな書き込みを行うことが、場合によってはより強力に可能であり、場合によってはさらに改善できることが示されています。

ソース: Bcache

Bcacheには大きな欠点があり、キャッシュを実装するためにシステムからメモリを奪います。

EnhanceIOは、アプリケーション層の下で実行されるソリューションであり、アプリケーションが主要なITインフラストラクチャを変更することなくSSDのパフォーマンス上の利点を活用できるようにします。 SSDキャッシュは、すべてのSSDシステムの数分の1のコストで、HDDからSSDに切り替えるメリットのほとんどを得ることができます。キャッシュされたシステムは、通常、同様のパフォーマンスのHDDベースのシステムよりも少ない電力で動作し、冷却要件を減らすことで副次的な利点を生み出します。

また、SSDキャッシュは、既存のシステムの大規模なアップグレード/交換ではなく、段階的な投資によって増大する需要を満たすためにパフォーマンスを改善することにより、既存のシステムの耐用年数を延長できます。

また、キャッシュにより、新しいディスクシェルフを取得してインストールするための余分なストレージ管理オーバーヘッド、新しいLUNの構成、および新しいLUNへのデータの移行を行うことなく、データへのアクセスが高速化されます。キャッシングはほぼ透過的であり、ダウンタイムはほとんど必要ありません。 EnhanceIOはFlashcacheに基づいています。

出典: Stec-Inc

bcacheは、特別に準備された(フォーマットされた)データパーティションを必要とするため、最も価値がありません。これにより、(可能であれば)200%の容量が必要になるため、データを含む既存のパーティションにキャッシュをアタッチし、キャッシュを有効化/無効化するために長時間のデータ移動を実行することが困難になります。

EnhanceIOの優れた点は、中間デバイスをまったく必要とせず、デバイスが既にマウントされている場合でも、オンザフライで任意のブロックデバイスに接続できることです。もう1つのすばらしい点は、EnhanceIOキャッシュをパーティションだけでなく、パーティション化されたブロックデバイスに接続して、すべてのパーティションを一度にキャッシュできることです。 flashcache enchanceioモジュールがDKMSで構築されているように、古いカーネルでも使用できます。

ソース:Debian

DMキャッシュの利点

DMキャッシュは単純化されたアーキテクチャを使用しているため、適応性があり、カスタマイズが容易です。ユーザーは、処理する必要があるデータの量またはデータの値に基づいて、ブロックサイズとキャッシュ容量を調整できます。特定のアプリケーションが大量のデータを順番に保存する必要がある場合、ユーザーはその目的のためにキャッシュを構成できます。ユーザーがキャッシュと同時に情報をデータベースに記録したい場合、キャッシュの操作に干渉しません。

DMキャッシュのデメリット

DMキャッシュを使用することの1つの欠点は、Linuxオペレーティングシステムのメタデータを保存するスペースが限られていることです。キャッシュが大きく、多数の小さなブロックが含まれている場合、保存された情報のメタデータが多くなります。この問題を解決するには、ユーザーはブロックサイズを大きくする必要があります。もう1つの考えられる問題は、サーバーがクラッシュした後、キャッシュメタデータがキャッシュの内容と一致しなくなる可能性があることです。

ソース:フレイザーシャーマンの補数

したがって、上記の情報からEnhanceIOを使用する方法が明らかですが、Flashcacheに基づいているため、フラッシュキャッシュを使用すると思います。しかし、最終決定を下す前に、必ず両方を試してみます。

14
Mitch

フィードバック:SSDの50GBスライスに/ home(2TB)をキャッシュするために、約1年前にライトバックモードでUbuntuにflashcache標準debパッケージをインストールしました。それは問題なく素晴らしい性能を発揮しました。 Xに関連する「ハング」がいくつかあり(つまり、フラッシュキャッシュに起因しない)、「Ctrl-Alt-PrtScr REISUB」を数回使用して、問題や破損の問題なく回復しました。 a)利用可能なデバッグがあり、b)/ homeのバックアップと復元が必要ないため、フラッシュキャッシュを使用しました。

1
Kairuri