bcache on md または md on bcache

bcache on md または md on bcache

キャッシュフラッシュベースのソリッド ステート ドライブ (SSD) などの 1 台以上の高速ディスク ドライブを、1 台以上の低速ハードディスク ドライブのキャッシュとして機能させることができます。

私の理解が正しければ、

  • SSD * を複数のバックアップHDDのキャッシュに割り当てることができ、その結果得られたキャッシュデバイスはmdadm
    または
  • 複数のHDDを1つのバックアップMDデバイスにRAID化し、SSDをキャッシュに割り当てることができます。

どちらがより合理的なアプローチなのか疑問に思っています。RAID5/6 の拡張は、どちらかの手法の方が簡単かもしれないと思いましたが、どちらがよいのかわかりません。

VM バッキング ファイルを含む大規模な非ルート ファイル システムの場合、一方のアプローチを他方のアプローチよりも選択する正当な理由 (バッキング ストレージの拡張など) はありますか?


* 「SSD」とは、ある種の冗長SSDデバイス、例えば2つの物理SSDのRAID1を意味します。

答え1

md デバイス全体をキャッシュするのが最も理にかなっていると思います。

bcache を使用して md デバイス全体をキャッシュすると、別の単一障害点が導入されるため、raid を使用するという概念全体が犠牲になります。

  • SSD ディスクの OTH 障害は比較的まれであり、bcache は( モードとは対照的に) writethrough/モードに設定できます。このモードでは、データはキャッシュ デバイスにのみ保存され、キャッシュの障害によって RAID 内の情報が失われることはないため、比較的安全なオプションになります。writearoundwriteback

  • もう一つの事実は、ソフトRAID-5にはかなりの計算オーバーヘッドがあることです。各回転RAIDメンバーを個別にキャッシュする場合、キャッシュヒット時でもコンピューターはすべてのパリティを再計算する必要があります。

  • 当然ですが、各回転ドライブを個別にキャッシュすると、高価な SSD スペースがいくらか犠牲になります。- RAID された SSD キャッシュを使用する予定がない限り。

  • どちらのオプションも、成長プロセスの時間には比較的影響しませんが、回転ドライブを別々にキャッシュするオプションは、もっとゆっくりバスの交通量が増えたため。

SSDドライブを交換する必要があるときに、bcacheを設定してSSDドライブを削除するのは、高速で比較的簡単なプロセスです。ブロックRAID 設定をその場で両方向に移行できるはずです。

また、現時点ではほとんどの(すべての?)ライブCDディストリビューションはサポートしないbcacheしたがって、選択したレイアウト オプションbcacheに関係なく、このようなツールを使用してデータに簡単にアクセスすることはできません。mdraid

答え2

結果として得られる MD デバイスをキャッシュするのが健全なアプローチだと思います。

bcache は、順次読み取りと書き込みをパススルーするように設計されています。

各デバイスを個別に bcache すると、論理的には、raid またはストリップされた MD にストライピングされる複数のデバイスが、bcache の観点から、常にランダム ブロックを書き込むことになります。

bcached MD ボリュームは通常のように見えますが、複数のデバイスにランダム ブロックを書き込むのではなく、ボリュームにファイルを書き込みます。

ハード RAID とソフトウェア RAID の全体的な目的は、バックエンドでデータのストライプ化を実行して、結果として得られるファイルシステムが通常のボリュームのように見えるようにすることです。

これは正しくない可能性があります (bcache 開発者は賢く、そのような状況を考慮している可能性があります) が、論理的に最適な方法は、デバイスをブロックするのではなく、ボリュームをキャッシュすることです。

関連情報