web-dev-qa-db-ja.com

LVMレイド1 + SSDキャッシング

私は3つのディスクを持っています:

  • /dev/sda遅いhdd
  • /dev/sdb遅いhdd
  • /dev/sdcfast ssd
  • /dev/vg0/dev/sd{a,b,c}で構成されるボリュームグループ

各論理ボリューム(lv)は、raid1ミラーリングされ、ssdキャッシュされる必要があります。

次のコマンドを使用して、vg0でtestという名前のミラーリングされたraid1lvを作成できます。

lvcreate --type raid1 -m 1 -L 1G -n test vg0
  • 前のコマンドで何を変更して、raid1ミラーに低速のHDDのみを使用するようにする必要がありますか?これにLVMタグシステム(@hdd, @ssd)を使用できますか?
  • LVMキャッシュ機能の使用方法を説明するチュートリアルをいくつか見つけました。しかし、lvごとに独自のキャッシュプールを作成する必要があるようです。 vg0内のすべてのlvがキャッシュされるように、vg0全体に対して1つの大きなキャッシュプールを作成することは可能ですか?または、既存のキャッシュプールを他のレベルで安全に再利用できますか?
4
user1091344

lvmcacheのマニュアルページ に基づくと、キャッシュは完全に論理ボリュームのものであり、ボリュームグループレベルで実装できるものではないようです。 VG全体をキャッシュできないのは面倒なようですが、これはアーキテクチャ上の制限のようです。

特定のPVのみを使用してLVを強制的に作成する場合は、lvcreateコマンドの最後でPVを指定できます。

無関係なオプションが削除されたmanページの概要は次のとおりです。

lvcreate  <...> [VolumeGroup{Name|Path} [/ExternalOrigin  |  Origin  |  Pool}LogicalVolumeName]  [PhysicalVolumePath[:PE[-PE]]...]

そのあらすじはかなり「関与」しているので、多くの人がこれを見逃していると思います。ただし、キャッシュLVをSSD PVに強制的に配置できる必要があるため、キャッシュを作成するときにこの機能が実際に必要になります。

補足:a クイック検索 は、LVMミラーリングは一般にLinuxソフトウェアRAIDよりもはるかに遅いと考えられていることを示しています。しかし、いくつかの調整を行うことで、失われたパフォーマンスの一部を取り戻すことができると思います。

1
Mark Caudill

興味深いプロジェクトはbcacheです: https://bcache.evilpiepirate.org/

Bcacheを使用すると、ssdを低速(回転)の大きなディスクの高速キャッシュとして設定できます。このようにして、最もアクセスの多いブロックは、より遅いディスク上のより大きなファイルシステムを維持しながら、より速いssdから(そしてそのように構成されている場合は書き込まれ)読み取られます。

1
SimoneLazzaris