mdのbcacheまたはbcacheのmd

bcache は、フラッシュベースなどの1つ以上の高速ディスクドライブを許可します1つ以上の低速ハードディスクドライブのキャッシュとして機能するソリッドステートドライブ(SSD)

正しく理解していれば、

  • SSD * を割り当てて複数のバッキングHDDをキャッシュし、結果としてキャッシュされたデバイスをmdadm
    または
  • 複数のHDDを単一のバッキングmdデバイスにRAIDで接続することができます。キャッシュに割り当てられたSSD

どちらが賢明なアプローチか疑問に思います。RAID5/ 6の成長は、いずれかの手法を使用した方が簡単かもしれませんが、そうではありません。どちらかを確認してください!

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


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

コメント

  • いずれの場合も、bcache背面はbcacheでフォーマットする必要があります-したがって、'はmd配列、結果の単一ディスクをbcacheでバックアップされたパーティションとして完全にフォーマットするか、キャッシュドライブにリンクしてそこから移動するか、、それらをキャッシュドライブにリンクしてから、多数のディスクを1つのアレイとしてフォーマットします。いずれの場合も、障害が発生する可能性のあるポイントが複数あり、そのすべてが2つのファイルシステム間の相互運用性に依存します。最終的なfsは言うまでもありません。 こちらを参照してください:スクロールダウン
  • github.com/g2p/blocks 、インプレースで変換できますが、これにはいくつかの制限があります。
  • @mikeserv私はそれをすべて理解しています、これは専用サーバー用ですしたがって、'はすべて問題ありません。 " 2つのファイルシステム"とはどういう意味ですか? bcacheはファイルシステムではありません-私が'持つ唯一のファイルシステムは、最終的なbcacheまたはmdadmデバイス上のXFSです(選択したオプションによって異なります)。
  • ありがとうございます。 @Adam、インプレース変換は私にとって問題ではありません。
  • @mikeservいいえ、そうではありません' t。ファイルシステム(btrfs、xfs、extNなど)はブロックデバイスの上にあります。 mdadmとbcacheは、ファイルシステムレベルではなく、ブロックデバイスレベルで機能します(btrfsは、問題を'の階層化違反と混同しますが、これは完全に別個の会話です)。

回答

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

bcacheを配置してmdデバイス全体は、別の単一の障害ポイントをもたらすため、レイドを使用するという考え全体を犠牲にします。

  • SSDディスクのOTH障害は比較的まれであり、bcacheを<に入れることができます。データがないdivid = "bd62d369fd">

/ writearoundモード(writebackモードとは対照的)キャッシュデバイスにのみ保存され、キャッシュに障害が発生してもレイド内の情報が強制終了されないため、比較的安全なオプションになります。

  • その他の事実は、かなりの計算が行われることです。ソフトRAID-5のオーバーヘッド。回転する各レイドメンバーを個別にキャッシュする場合でも、コンピューターはキャッシュヒットの場合でも、すべてのパリティを再計算します

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

  • どちらのオプションも、プロセスの成長時間には比較的影響しません。ただし、回転するドライブを個別にキャッシュするオプションは、次の理由で遅くなる可能性があります。より多くのバストラフィック。

  • 交換が必要なときにssdドライブを削除するようにbcacheを構成するのは、高速で比較的簡単なプロセスです。ブロックレイドセットアップをオンプレースで双方向に移行できるはずです。

    また、現時点ではほとんど(すべて?)がライブであることに注意してください- CDディストリビューションは bcache をサポートしていないため、bcachemdraid選択したレイアウトオプション。

    コメント

    • I '質問を更新して、' m 非冗長SSDキャッシュを計画していないことを明確にしました。2番目の箇条書きポイントは優れたポイですnt、ありがとう。スペースに関する3番目の箇条書き:'がSSDにパリティを保存しているからですか?最後のパラグラフでは、' mはF20を使用していますが、最終的にはRHEL / CentOS7またはDebianJessieを使用します(bcache-toolsが効果を発揮する場合)。
    • @JackDouglas Ad 3番目の箇条書き:はい、その通りです。ただし、レイドされたssdドライブを使用する予定なので、'は適用されません。
    • ' llはミラーリングされるだけでなく、バッキングドライブのRAIDパリティも保存する必要があります。これは' RAIDがbcacheの下で行われている場合は当てはまりません
    • 反対の意味だと思います:ssdマトリックスは' mdraidドライブ全体に供給される場合、回転するディスク'パリティを保存する必要はありません。
    • はい、その'まさに私が言っていることです!

    回答

    I ” d正しいアプローチは、結果のMDデバイスをキャッシュすることだと思います。

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

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

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

    ハードおよびソフトウェアRAIDの全体的なポイントは、バックエンドでデータのストライピングを実行して、結果のfilesysがtemは通常のボリュームのように見えます。

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

    コメント

    • これも非常に良い点です
    • RAID5 / 6への大規模なシーケンシャル書き込みは、すべてのコンポーネントデバイス。各コンポーネントデバイスはすべてのN-1データブロック(またはパリティ)を取得しますが、取得するデータはシーケンシャルです。しかし、あなたは'それが物事を歪めることは正しいです。部分ストライプ書き込みが頻繁に発生し、その結果、パリティストライプ(の一部)の読み取り-変更-書き込みが発生するチャンクがいくつかある場合は、bcacheによってキャッシュされる可能性があります。ただし、部分ストライプ書き込みがMDデバイスにヒットする前に、それをより高い位置にキャッシュすることは、さらに良いでしょう。

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です