mdのbcacheまたはbcacheのmd


11

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

正しく理解できれば

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

どちらがより賢明なアプローチなのか疑問に思っています。RAID5 / 6を拡張することは、何らかの方法を使用する方が簡単かもしれないと思いますが、どちらが良いかわかりません!

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


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


どちらの場合でも、バックアップbcacheするすべてのディスクをフォーマットするbcache必要があります。そのため、mdアレイを作成するか、単一の結果ディスクを完全にbcacheバックアップパーティションとしてフォーマットするか、キャッシュドライブにリンクしてそこから移動するか、多数をフォーマットする必要があります。でディスクを作成しbcache、キャッシュドライブにリンクして、多数のディスクを1つのアレイとしてフォーマットします。どちらの場合も、可能性のある障害の複数のポイントがあり、それらはすべて、2つのファイルシステム間の相互運用性に依存します。最終的なファイルシステムは言うまでもありません。参照ここでスクロールダウン
mikeserv 2014年

github.com/g2p/blocksのおかげで、インプレースで変換できますが、これにはいくつかの制限があります。
Adam Ryczkowski 14年

@mikeserv私はそれをすべて理解しています。これは目的専用サーバーのため、すべて良いです。「2つのファイルシステム」とはどういう意味ですか?bcacheはファイルシステムではありません-私が持つ唯一のファイルシステムは、最終的なbcacheまたはmdadmデバイス上のXFSです(選択するオプションによって異なります)。

@Adamに感謝します。インプレース変換は私にとって問題ではありません。

@mikeservいいえ、そうではありません。ファイルシステム(例:btrfs、xfs、extNなど)は、ブロックデバイスの上にあります。mdadmとbcacheは、ファイルシステムレベルではなく、ブロックデバイスレベルで機能します(btrfsは、レイヤー違反と問題を混同しますが、それは完全に別の会話です)。

回答:


4

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

mdデバイス全体をキャッシュするようにbcacheを配置すると、レイドのアイデア全体が犠牲になります。これは、別の単一障害点をもたらすためです。

  • SSDディスクのOTH障害は比較的まれであり、bcacheをwritethrough/ writearoundモードにすることができます(モードとは対照的にwriteback)。この場合、データはキャッシュデバイスにのみ保存されず、キャッシュの障害によって情報が失われることはありません。襲撃はそれを比較的安全なオプションにします。

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

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

  • どちらのオプションも、成長プロセスの時間には比較的影響しません。ただし、スピンドライブが個別にキャッシュされるオプションは、バストラフィックが増えるため、遅くなる可能性があります

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

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


1
非冗長SSDキャッシュを使用する予定がないことを明確にするために質問を更新しました。おかげで、2番目の箇条書きは優れた点です。スペースについての3番目の弾丸:SSDにパリティを保存するためですか?あなたの最後のパラについて、私はF20を使用していますが、最終的にはRHEL / CentOS7またはDebian Jessieを使用することになります(bcache-toolsで解決できる場合)。

@JackDouglas広告第3弾:はい、まさにその通りです。ただし、RAID化されたssdドライブを使用する予定なので、それは当てはまりません。
Adam Ryczkowski 14年

1
それらはミラーリングされるだけでなく、バ​​ッキングドライブのRAIDパリティを保存する必要があるため、依然として機能します。RAIDがbcacheの下で実行されている場合、私はあなたのポイントであると思っていましたが、これは当てはまりません

私はあなたが反対を意味すると信じています:ssdマトリックスは、それがmdraidドライブ全体に供給されている場合、回転するディスクのパリティを格納する必要はありません。
Adam Ryczkowski 14年

1
はい、まさにそれが私の言いたいことです!

1

健全なアプローチは、結果のMDデバイスをキャッシュすることだと思います。

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

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

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

ハードおよびソフトウェアraidの全体のポイントは、結果のファイルシステムが通常のボリュームのように見えるように、バックエンドでデータのストライピングを行うことです。

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


また、非常に良い点

RAID5 / 6への大規模な順次書き込みは、すべてのコンポーネントデバイスへの順次書き込みを生成します。各コンポーネントデバイスはすべてのN-1データブロック(またはパリティ)を取得しますが、取得するデータはシーケンシャルです。しかし、それは物事を歪めるだろうというのは正しいです。部分的なストライプの書き込みが頻繁に発生するチャンクがいくつかあり、その結果、パリティストライプ(の一部)の読み取り-変更-書き込みが発生し、bcacheによってキャッシュされる場合があります。部分的なストライプの書き込みがMDデバイスに到達する前に、キャッシュをより高くキャッシュすることはさらに優れています。
Peter Cordes
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.