SW RAID + LVM + Flashcache on Debian Jessie

Итак, поднимаем производительность дисковой системы за счет кеширования на SSD

Имеется тазик с Jessie 8 и тремя дисками:
2х SATA 2 TB – SW 1-го уровня (/dev/sdb, /dev/sdc)
1x SSD 240 Gb – не размеченный диск (/dev/sda)

Поверх рейда используется LVM2 для логических разделов.

/dev/md0 – /boot
/dev/md1 – vg0
/dev/md2 – LVM vg1

vgs:
VG #PV #LV #SN Attr VSize VFree
vg0 1 2 0 wz--n- 186.14g 89.29g
vg1 1 1 0 wz--n- 744.19g 278.53g

lvs:

LV VG Attr LSize
root vg0 -wi-ao---- 93.13g
swap vg0 -wi-ao---- 3.72g
home vg1 -wi-a----- 465.66g

Для того чтобы можно было использовать LVM снепшоты, кешировать будем физический раздел рейда md2, а не логический lvm том.

Хорошо, что уже в Jessie не нужно собирать модуль руками, в репе уже есть готовые пакеты. Их и ставим.


# aptitude update
# aptitude install -dkms flashcache-utils

В процессе установки будет собран модуль и обновлен initramfs.

Для чистоты експеримента – ребут

Проверяем, что модуль загружен:
# lsmod | grep flashcache
flashcache 84305 1
dm_mod 89405 12 flashcache

1. Отмонтируем раздел /home

# umount /home

2. Необходимо указать lvm фильтровать физический раздел, который будем кешировать. В моем случае это /dev/md2
До изменений pvscan показывал:

  PV /dev/md2   VG vg1   lvm2 [744.19 GiB / 278.53 GiB free]
  PV /dev/md1   VG vg0   lvm2 [186.14 GiB / 89.29 GiB free]
  Total: 2 [930.32 GiB] / in use: 2 [930.32 GiB] / in no VG: 0 [0   ]

Правим конфиг /etc/lvm/lvm.cfg. Прописываем фильтровать физ. раздел:

    filter = [ "r|/dev/md2|"]

3. Создаем SSD кеш для /dev/md2:

flashcache_create -b 4k -p back -s 200G ssd /dev/sda /dev/md2

Проверяем что показывает pvscan:

  PV /dev/mapper/ssd   VG vg1   lvm2 [744.19 GiB / 278.53 GiB free]
  PV /dev/md1          VG vg0   lvm2 [186.14 GiB / 89.29 GiB free]
  Total: 2 [930.32 GiB] / in use: 2 [930.32 GiB] / in no VG: 0 [0   ]

смотрим на вывод dmsetup:

# dmsetup status ssd
0 1560682496 flashcache stats: 
        reads(420906), writes(3)
        read hits(242857), read hit percent(57)
        write hits(3) write hit percent(100)
        dirty write hits(0) dirty write hit percent(0)
        replacement(0), write replacement(0)
        write invalidates(0), read invalidates(1)
        pending enqueues(1), pending inval(1)
        metadata dirties(3), metadata cleans(1)
        metadata batch(0) metadata ssd writes(4)
        cleanings(1) fallow cleanings(0)
        no room(0) front merge(0) back merge(0)
        force_clean_block(0)
        disk reads(178049), disk writes(1) ssd reads(242858) ssd writes(178055)
        uncached reads(1), uncached writes(0), uncached IO requeue(0)
        disk read errors(0), disk write errors(0) ssd read errors(0) ssd write errors(0)
        uncached sequential reads(0), uncached sequential writes(0)
        pid_adds(0), pid_dels(0), pid_drops(0) pid_expiry(0)
        lru hot blocks(26111744), lru warm blocks(26111744)
        lru promotions(0), lru demotions(0)

Файл /etc/fstab не менялся, т.к. кеширование делается на уровне md-устройтва, поєтому домашний каталог доступен без бубнов и танцев сразу после загрузки системы.

Твики в sysctl.conf:
dev.flashcache.sda+md2.fallow_delay = 240
dev.flashcache.sda+md2.fast_remove = 1
dev.flashcache.sda+md2.reclaim_policy = 1
dev.flashcache.sda+md2.skip_seq_thresh_kb = 1024

Убрать кеширование.
1. umount /home
2. sysctl -w dev.flashcache.sda+md2.do_sync=1
(может занять продолжительное время для записи данных на медленный диск)
3. vgchange -an vg1
3. dmsetup remove ssd
4. flashcache_destroy /dev/sda

Теперь логический раздел vg1-home можно примонтировать без SSD кеша
5. vgchange -ay vg1
6. mount /dev/mapper/vg1-home /home

*** Писал по памяти. Возможны ошибки в тексте

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

*