5.2. 論理ボリュームのキャッシュ
dm-cache
または dm-writecache
ターゲットを使用して論理ボリュームをキャッシュできます。
dm-cache
は、高速なストレージデバイス (SSD) を、低速なストレージデバイス (HDD) のキャッシュとして利用します。読み取りおよび書き込みデータをキャッシュし、頻繁に使用されるデータへのアクセス時間を最適化します。読み取り操作と書き込み操作を強化することでパフォーマンスが大幅に向上する混合ワークロード環境で役立ちます。
dm-writecache
は、書き込みデータがプライマリーストレージデバイス (HDD) にコミットされる前に、高速なストレージメディア (SSD) を使用して一時的に書き込みデータを保持することで、書き込み操作を最適化します。書き込みのパフォーマンスによってデータ転送プロセスが遅くなる可能性がある、書き込みが多いアプリケーションに役立ちます。
5.2.1. dm-cache による論理ボリュームのキャッシュ
dm-cache
を使用して LV をキャッシュすると、キャッシュプールが作成されます。キャッシュプールは、キャッシュされた実際の内容を保存するキャッシュデータと、キャッシュに保存された内容を追跡するキャッシュメタデータを組み合わせた LV です。このプールは、データをキャッシュするために特定の LV に関連付けられます。
dm-cache
は、2 種類のブロックを対象とします。頻繁にアクセスされる (ホット) ブロックは、キャッシュに移動されます。あまり頻繁にアクセスされない (コールド) ブロックは、低速のデバイスに残ります。
前提条件
- 管理アクセスがある。
手順
キャッシュする LV とそのボリュームグループを表示します。
# lvs -o lv_name,vg_name LV VG LogicalVolumeName VolumeGroupName
キャッシュプールを作成します。
# lvcreate --type cache-pool --name CachePoolName --size Size VolumeGroupName /FastDevicePath
CachePoolName は、キャッシュプールの名前に置き換えます。Size は、キャッシュプールのサイズに置き換えます。VolumeGroupName は、ボリュームグループの名前に置き換えます。/FastDevicePath は、SSD や NVME などの高速デバイスへのパスに置き換えます。
キャッシュプールを LV にアタッチします。
# lvconvert --type cache --cachepool VolumeGroupName/CachePoolName VolumeGroupName/LogicalVolumeName
検証
LV がキャッシュされたことを確認します。
# lvs -o lv_name,pool_lv LV Pool LogicalVolumeName [CachePoolName_cpool]
関連情報
-
lvcreate(8)
、lvconvert(8)
、lvs(8)
man ページ
5.2.2. dm-writecache による論理ボリュームのキャッシュ
dm-writecache
を使用して LV をキャッシュすると、論理ボリュームと物理ストレージデバイスの間にキャッシュレイヤーが作成されます。dm-writecache は、
書き込み操作を SSD などの高速ストレージメディアに一時的に保存し、最終的にプライマリーストレージデバイスに書き戻すことで、書き込み集中型のワークロードを最適化します。
前提条件
- 管理アクセスがある。
手順
キャッシュする論理ボリュームとそのボリュームグループを表示します。
# lvs -o lv_name,vg_name LV VG LogicalVolumeName VolumeGroupName
キャッシュボリュームを作成します。
# lvcreate --name CacheVolumeName --size Size VolumeGroupName /FastDevicePath
CacheVolumeName は、キャッシュボリュームの名前に置き換えます。Size は、キャッシュプールのサイズに置き換えます。VolumeGroupName は、ボリュームグループの名前に置き換えます。/FastDevicePath は、SSD や NVME などの高速デバイスへのパスに置き換えます。
キャッシュボリュームを LV にアタッチします。
# lvconvert --type writecache --cachevol CacheVolumeName VolumeGroupName/LogicalVolumeName
CacheVolumeName は、キャッシュボリュームの名前に置き換えます。VolumeGroupName は、ボリュームグループの名前に置き換えます。LogicalVolumeName は、論理ボリュームの名前に置き換えます。
検証
LV がキャッシュされたことを確認します。
# lvs -o lv_name,pool_lv LV Pool LogicalVolumeName [CacheVolumeName_cvol]
関連情報
-
lvcreate(8)
、lvconvert(8)
、lvs(8)
man ページ
5.2.3. 論理ボリュームのキャッシュ削除
LV からキャッシュを削除するには、主に 2 つの方法を使用します。
- 分割
- キャッシュボリューム自体を保持しながら、キャッシュを LV からデタッチできます。この場合、LV はキャッシュメカニズムの恩恵を受けられなくなりますが、キャッシュボリュームとそのデータはそのまま残ります。キャッシュボリュームは保持されますが、キャッシュ内のデータは再利用できず、次回キャッシュ設定で使用されるときに消去されます。
- キャッシュ削除
- キャッシュを LV からデタッチし、さらにキャッシュボリュームを完全に削除できます。この操作により、キャッシュが効果的に破棄され、領域が解放されます。
前提条件
- 管理アクセスがある。
手順
キャッシュされた LV を表示します。
# lvs -o lv_name,pool_lv,vg_name LV Pool VG LogicalVolumeName [CacheVolumeName_cvol] VolumeGroupName
キャッシュされたボリュームをデタッチまたは削除します。
キャッシュされたボリュームをデタッチするには、次のコマンドを使用します。
# lvconvert --splitcache VolumeGroupName/LogicalVolumeName
キャッシュされたボリュームをデタッチして削除するには、次のコマンドを使用します。
# lvconvert --uncache VolumeGroupName/LogicalVolumeName
VolumeGroupName は、ボリュームグループの名前に置き換えます。LogicalVolumeName は、論理ボリュームの名前に置き換えます。
検証
LV がキャッシュされていないことを確認します。
# lvs -o lv_name,pool_lv
関連情報
-
lvconvert(8)
、lvs(8)
man ページ