58.10. キャッシュを有効にして論理ボリュームのパフォーマンスを改善
LVM 論理ボリュームにキャッシュを追加して、パフォーマンスを向上できます。LVM は、SSD などの高速なデバイスを使用して、論理ボリュームに I/O 操作をキャッシュします。
以下の手順では、高速デバイスから特別な論理ボリュームを作成し、この特別な論理ボリュームを元の論理ボリュームに接続して、パフォーマンスを向上させます。
58.10.1. LVM でのキャッシュの取得方法
LVM は、以下のようなキャッシュの取得方法を提供します。論理ボリューム上のさまざまなタイプの I/O パターンに適しています。
dm-cache
このメソッドは、高速なボリユームで頻繁に使用されるデータをキャッシュして、このようなデータへのアクセス時間を短縮します。このメソッドは、読み取りおよび書き込みの両方の操作をキャッシュします。
dm-cache
メソッドは、cache
タイプの論理ボリュームを作成します。dm-writecache
このメソッドは、書き込み操作のみをキャッシュします。高速なボリュームは書き込み操作を保存し、それらをバックグラウンドで低速なディスクに移行します。高速ボリュームは通常 SSD または永続メモリー (PMEM) ディスクです。
dm-writecache
メソッドは、writecache
タイプの論理ボリュームを作成します。
関連情報
-
システムの
lvmcache (7)
man ページ
58.10.2. LVM キャッシュコンポーネント
LVM は、キャッシュを LVM 論理ボリュームに追加するためのサポートを提供します。LVM キャッシュは、LVM 論理ボリュームタイプを使用します。
- Main LV
- より大きく、より遅い、元のボリューム。
- キャッシュプール LV
-
メイン LV からデータをキャッシュするために使用できる複合 LV。キャッシュデータを保持するためのデータと、キャッシュデータを管理するためのメタデータの 2 つのサブ LV があります。データおよびメタデータ用に特定のディスクを設定できます。キャッシュプールは
dm-cache
でのみ使用できます。 - Cachevol LV
-
メイン LV からデータをキャッシュするために使用できる線形 LV。データとメタデータ用に個別のディスクを設定することはできません。
cachevol
は、dm-cache
またはdm-writecache
でのみ使用できます。
これらの関連付けられた LV はすべて、同じボリュームグループにある必要があります。
メインの論理ボリューム (LV) を、キャッシュされたデータを保持する高速で通常は小さい LV と組み合わせることができます。高速 LV は、SSD ドライブなどの高速ブロックデバイスから作成されます。論理ボリュームのキャッシュを有効にすると、LVM は元のボリュームの名前を変更および非表示にし、元の論理ボリュームで設定される新しい論理ボリュームを表示します。新しい論理ボリュームの設定は、キャッシュ方法と、cachevol
オプションまたは cachepool
オプションを使用しているかどうかによって異なります。
cachevol
オプションおよび cachepool
オプションは、キャッシングコンポーネントの配置に対するさまざまなレベルの制御を公開します。
-
cachevol
オプションを使用すると、高速なデバイスは、データブロックのキャッシュされたコピーとキャッシュ管理用のメタデータの両方を保存します。 cachepool
オプションを使用すると、別のデバイスはデータブロックのキャッシュコピーとキャッシュ管理用のメタデータを保存できます。dm-writecache
メソッドは、cachepool
と互換性がありません。
すべての設定において、LVM は、結果として作成される 1 つのデバイスを公開し、すべてのキャッシングコンポーネントをグループ化します。作成されるデバイスは、元の低速な論理ボリュームと同じ名前になります。
関連情報
-
システムの
lvmcache (7)
man ページ - シンプロビジョニングされたボリューム (シンボリューム) の作成および管理
58.10.3. 論理ボリュームの dm-cache キャッシュの有効化
この手順では、dm-cache
メソッドを使用して、論理ボリュームで一般的に使用されるデータのキャッシュを有効にします。
前提条件
-
システムに、
dm-cache
を使用した高速化したい低速な論理ボリュームがある。 - 低速な論理ボリュームを含むボリュームグループには、高速ブロックデバイスに未使用の物理ボリュームも含まれます。
手順
高速デバイスに
cachevol
ボリュームを作成します。# lvcreate --size cachevol-size --name <fastvol> <vg> </dev/fast-pv>
以下の値を置き換えます。
cachevol-size
-
5G
などのcachevol
ボリュームのサイズ fastvol
-
cachevol
ボリュームの名前 vg
- ボリュームグループ名
/dev/fast-pv
高速ブロックデバイスへのパス (例:
/dev/sdf
)例58.3
cachevol
ボリュームの作成# lvcreate --size 5G --name fastvol vg /dev/sdf Logical volume "fastvol" created.
cachevol
ボリュームをメインの論理ボリュームに接続して、キャッシュを開始します。# lvconvert --type cache --cachevol <fastvol> <vg/main-lv>
以下の値を置き換えます。
fastvol
-
cachevol
ボリュームの名前 vg
- ボリュームグループ名
main-lv
低速な論理ボリュームの名前
例58.4 メイン LV への
cachevol
ボリュームの接続# lvconvert --type cache --cachevol fastvol vg/main-lv Erase all existing data on vg/fastvol? [y/n]: y Logical volume vg/main-lv is now cached.
検証
新しく作成した論理ボリュームで
dm-cache
が有効になっているかどうかを確認します。# lvs --all --options +devices <vg> LV Pool Type Devices main-lv [fastvol_cvol] cache main-lv_corig(0) [fastvol_cvol] linear /dev/fast-pv [main-lv_corig] linear /dev/slow-pv
関連情報
-
システムの
lvmcache (7)
man ページ
58.10.4. 論理ボリュームに cachepool を使用した dm-cache キャッシュの有効化
この手順では、キャッシュデータとキャッシュメタデータ論理ボリュームを個別に作成し、ボリュームをキャッシュプールに統合することができます。
前提条件
-
システムに、
dm-cache
を使用した高速化したい低速な論理ボリュームがある。 - 低速な論理ボリュームを含むボリュームグループには、高速ブロックデバイスに未使用の物理ボリュームも含まれます。
手順
高速デバイスに
cachepool
ボリュームを作成します。# lvcreate --type cache-pool --size <cachepool-size> --name <fastpool> <vg /dev/fast>
以下の値を置き換えます。
cachepool-size
-
cachepool
のサイズ (例:5G
) fastpool
-
cachepool
ボリュームの名前 vg
- ボリュームグループ名
/dev/fast
高速ブロックデバイスへのパス (例:
/dev/sdf1
)注記--poolmetadata
オプションを使用して、cache-pool の作成時にプールメタデータの場所を指定できます。例58.5
cachevol
ボリュームの作成# lvcreate --type cache-pool --size 5G --name fastpool vg /dev/sde Logical volume "fastpool" created.
キャッシュを開始するために、メイン論理ボリュームに
cachepool
をアタッチします。# lvconvert --type cache --cachepool <fastpool> <vg/main>
以下の値を置き換えます。
fastpool
-
cachepool
ボリュームの名前 vg
- ボリュームグループ名
main
低速な論理ボリュームの名前
例58.6 メイン LV への
cachepool
の接続# lvconvert --type cache --cachepool fastpool vg/main Do you want wipe existing metadata of cache pool vg/fastpool? [y/n]: y Logical volume vg/main is now cached.
検証
cache-pool
タイプで新しく作成したデバイスボリュームを調べます。# lvs --all --options +devices <vg> LV Pool Type Devices [fastpool_cpool] cache-pool fastpool_pool_cdata(0) [fastpool_cpool_cdata] linear /dev/sdf1(4) [fastpool_cpool_cmeta] linear /dev/sdf1(2) [lvol0_pmspare] linear /dev/sdf1(0) main [fastpoool_cpool] cache main_corig(0) [main_corig] linear /dev/sdf1(O)
関連情報
-
システム上の
lvcreate (8)
、lvmcache (7)
、およびlvconvert (8) の
man ページ
58.10.5. 論理ボリュームの dm-writecache キャッシュの有効化
この手順では、dm-writecache
メソッドを使用して、論理ボリュームへの書き込み I/O 操作のキャッシュを有効にします。
前提条件
-
システムに、
dm-writecache
を使用した高速化したい低速な論理ボリュームがある。 - 低速な論理ボリュームを含むボリュームグループには、高速ブロックデバイスに未使用の物理ボリュームも含まれます。
- 低速な論理ボリュームがアクティブな場合は、非アクティブ化する。
手順
低速な論理ボリュームがアクティブな場合は、非アクティブにします。
# lvchange --activate n <vg>/<main-lv>
以下の値を置き換えます。
vg
- ボリュームグループ名
main-lv
- 低速な論理ボリュームの名前
高速なデバイス上に非アクティブな
cachevol
ボリュームを作成します。# lvcreate --activate n --size <cachevol-size> --name <fastvol> <vg> </dev/fast-pv>
以下の値を置き換えます。
cachevol-size
-
5G
などのcachevol
ボリュームのサイズ fastvol
-
cachevol
ボリュームの名前 vg
- ボリュームグループ名
/dev/fast-pv
高速ブロックデバイスへのパス (例:
/dev/sdf
)例58.7 非アクティブ化された
cachevol
ボリュームの作成# lvcreate --activate n --size 5G --name fastvol vg /dev/sdf WARNING: Logical volume vg/fastvol not zeroed. Logical volume "fastvol" created.
cachevol
ボリュームをメインの論理ボリュームに接続して、キャッシュを開始します。# lvconvert --type writecache --cachevol <fastvol> <vg/main-lv>
以下の値を置き換えます。
fastvol
-
cachevol
ボリュームの名前 vg
- ボリュームグループ名
main-lv
低速な論理ボリュームの名前
例58.8 メイン LV への
cachevol
ボリュームの接続# lvconvert --type writecache --cachevol fastvol vg/main-lv Erase all existing data on vg/fastvol? [y/n]?: y Using writecache block size 4096 for unknown file system block size, logical block size 512, physical block size 512. WARNING: unable to detect a file system block size on vg/main-lv WARNING: using a writecache block size larger than the file system block size may corrupt the file system. Use writecache block size 4096? [y/n]: y Logical volume vg/main-lv now has writecache.
作成された論理ボリュームをアクティベートします。
# lvchange --activate y <vg/main-lv>
以下の値を置き換えます。
vg
- ボリュームグループ名
main-lv
- 低速な論理ボリュームの名前
検証
新たに作成されたデバイスを確認します。
# lvs --all --options +devices vg LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices main-lv vg Cwi-a-C--- 500.00m [fastvol_cvol] [main-lv_wcorig] 0.00 main-lv_wcorig(0) [fastvol_cvol] vg Cwi-aoC--- 252.00m /dev/sdc1(0) [main-lv_wcorig] vg owi-aoC--- 500.00m /dev/sdb1(0)
関連情報
-
システムの
lvmcache (7)
man ページ
58.10.6. 論理ボリュームのキャッシュの無効化
この手順では、論理ボリュームで現在有効な dm-cache
キャッシュまたは dm-writecache
キャッシュを無効にします。
前提条件
- キャッシュは、論理ボリュームで有効になります。
手順
論理ボリュームを非アクティブにします。
# lvchange --activate n <vg>/<main-lv>
vg はボリュームグループ名に置き換え、main-lv はキャッシュが有効になっている論理ボリュームの名前に置き換えます。
cachevol
ボリュームまたはcachepool
ボリュームの割り当てを解除します。# lvconvert --splitcache <vg>/<main-lv>
以下の値を置き換えます。
vg はボリュームグループ名に置き換え、main-lv はキャッシュが有効になっている論理ボリュームの名前に置き換えます。
例58.9
cachevol
またはcachepool
ボリュームの接続解除# lvconvert --splitcache vg/main-lv Detaching writecache already clean. Logical volume vg/main-lv writecache has been detached.
検証
論理ボリュームが接続されていないことを確認します。
# lvs --all --options +devices <vg> LV Attr Type Devices fastvol -wi------- linear /dev/fast-pv main-lv -wi------- linear /dev/slow-pv
関連情報
-
システムの
lvmcache (7)
man ページ