LVM Cache

Недавно узнал об одной интересной технологии, позволяющей обеспечивать прозрачное кеширование HDD используя SSD. Но, к сожалению, никаких тестов и результатов толком не видел и сам не замерял. Подключение и отключение кеша можно производить на ходу, а также кешируемое устройство и кеширующее должно принадлежать одной группе томов. Кеш может работать в 2 режимах:
  • writethrough - любые данные будут записаны на кеш и диск, при потере кеша данные не теряются
  • writeback - данные пишутся сначала на кеш, после сбрасываются на диск, есть риск потерять данные
Ну и дальше само создание кеша
# Создаем lv для метаданных и данных, где sdb - SSD
lvcreate -n metacache_lv1 -L20 vg1 /dev/sdb
lvcreate -n datacache_lv1 -L20G vg1 /dev/sdb
# Создаем пул из томов данных и метаданных
lvconvert --type cache-pool --cachemode writeback --poolmetadata vg1/metacache_lv1 vg1/datacache_lv1
# Cборка кеша из исходного тома данных и пула
lvconvert --type cache --cachepool vg1/datacache_lv1 vg1/lv1
# Смотрим состояние, тут должен быть указан в скобках наш кеш
lvs -a
Есть еще более быстрый вариант
# Создаем lv на 100гб в группе vg1 на SSD который /dev/sdb
lvcreate --type cache-pool -L100G vg1 /dev/sdb
# И можно сразу его собирать, где vg1/lvol1 - пул кеша, а vg1/lv1 - раздел который кешируем
lvconvert --type cache --cachepool vg1/lvol1 vg1/lv1
# Если необходимо разделить
lvconvert --splitcache vg1/lv1
В плане метрик есть dmsetup, который показывает в не совсем удобном виде
dmsetup -v status vg1/lv1
Name: vg1-lv1
State: ACTIVE
Read Ahead: 256
Tables present: LIVE
Open count: 1
Event number: 108
Major, minor: 252, 4
Number of targets: 1
UUID: LVM-2f0CRd8MKObNN8GmSM3kZ5NErr9jNLNkugXhCTyyDLtG7gOdJn4QlOjh1b3U13T3
0 11221590016 cache 8 4550/35840 128 364661/2293760 79890 74509 839384 380627 0 364661 0 1 writethrough 2 migration_threshold 2048 mq 10 random_threshold 4 sequential_threshold 512 discard_promote_adjustment 1 read_promote_adjustment 4 write_promote_adjustment 8 rw -
Для преобразования его в кошерный вид существует скрипт, который приводит к читабельному виду
Из проблем с которыми столкнулся так это ошибка при попытке включить lv
/usr/sbin/cache_check: execvp failed: No such file or directory
Check of pool vg1/lv1_cache failed (status:2). Manual repair required!
Failed to active cache locally vg1/lv1.
Решается установкой thin-provisioning-tools