web-dev-qa-db-ja.com

複数のオリジンLVに1つのlvmキャッシュ「キャッシュプールLEVEL」を使用するにはどうすればよいですか?

私は、それほど大きくないSSD(120GB)と2つの巨大な回転するRust HD(それぞれ3TB)を備えた光沢のある新しいコンピューターを持っています。私はそれを次のように分割したいと思います:

  • スワップ(〜128GB)、オペレーティングシステム(〜128GB)、およびデータ(残りすべて)パーティションがHD全体にストライプ化
  • sSD上の小さなブートパーティション
  • sSDの残りのスペースはすべてキャッシュプールに使用されます
  • キャッシュプールは、スワップではない場合を除いて、すべてのHDパーティション間で共有する必要があります

私はlvmcacheでこれを実行しようとしましたが、次の問題が発生しました。

  • 明白な方法でキャッシュプールを作成する場合(たとえば ここ で説明されているように)、それをキャッシュに割り当てることができるのはsingleオリジンLV。したがって、OSまたはデータ用に使用できますが、両方には使用できません。

  • シンプール全体をキャッシュして、そこからOSとデータLVを割り当てることができると考えて、すべてのHDにまたがる「シンプール」を作成することでこれを回避しようとしましたが、キャッシュすることはできないと言われました。薄いプール。 (lvmthinのマンページはあまり意味がありません。私がその部分を間違って行った可能性があります。)

私は考えが足りません。誰かがこれを機能させる方法を提案できますか?私はlvmと結婚していないことに注意してください。bcache+ plainMD(ストライピング用)がこれを実行できる場合、または私が知らない他のツールを使用できる場合、それはJust FineTooになります。

7
zwol

キャッシュされたボリュームを作成し、それをシンプールに変換できます。

キャッシュプール(キャッシュデータ+キャッシュメタデータ)->キャッシュボリューム(キャッシュプール+元の大きな低速ボリューム)->キャッシュされたシンプール

この例では、vg0は、物理ボリューム/ dev/small-fast-diskおよび/ dev/big-slow-diskを持つボリュームグループです。すべての論理ボリュームは同じボリュームグループに属している必要があります。

キャッシュプールボリュームを作成します(1つのコマンドでデータとメタデータをキャッシュします)

lvcreate --type cache-pool --name cachepool --size 128G vg0 /dev/smal-fast-disk

キャッシュボリュームを作成する

lvcreate --type cache --cachepool vg0/cachepool --size 3T --name thincachevol vg0 /dev/big-slow-disk

キャッシュされたボリュームをシンボリュームに変換する

lvconvert --thinpool vg0/thincachevol
2

複数のOriginデバイスに同じキャッシュを使用するメインラインカーネルでは、メタデータにアクセスする競合のため、dm-cache(lvmcacheがその下で使用するもの)ではサポートされていません。開発者からの2013年のコメントについては、 Re:[dm-devel] dm-cache:同じキャッシュを複数のOriginデバイスで使用できますか? を参照してください。

ただし、完全を期すために 元のdm-cache開発者は「同じキャッシュデバイス上の複数のソースデバイス」をサポートするテストリポジトリを放棄していますhttps://groups.google.com/forum /#!topic/dm-cache/q-lM1t438P 詳細)が、このコードはメインラインカーネルにはありません。

2
Anon