У цій статті ми покажемо, як використовувати SSD диск в якості кешуючого пристрої для двох SATA дисків, об’єднаних в RAID 1 на сервері з CentOS Linux на прикладі LVM Cache. У такій конфігурації Кешуються і кешувального пристрій повинен входити в одну групу томів LVM, а відключення / включення кеша можна виконувати без на ходу без без перезавантажень і перемонтування.
SSD-кешування – технологія, коли твердотільні SSD накопичувачі використовуються в якості буфера для часто запитуваних даних. Система визначає дані за ступенем “теплоти” і переміщує їх на швидкий накопичувач, який використовується в якості кешуючого диска. Кеш дозволяється системі отримувати доступ до даних в кілька разів швидше, ніж якби вони були отримані з більш повільного жорсткого диска.
Після установки ОС на RAID1 з двох SATA дисків, ми підключили окремий SSD диск на 240 Гб. Перевіримо, що він доступний:
# fdisk -l
SSD-кешування включити до установки програм і налаштування сервера.
За допомогою менеджера пакетів встановіть утиліту lvm2, яка буде використовуватися для реалізації кешу.
# yum install lvm2 -y
Після установки ПО, потрібно визначити блоковий пристрій SSD-диска і розділ, до якого примонтировать потрібна директорія. У моєму випадку це буде директорія home, розділ для якої я створив при установці ОС.
Директорії / home відповідає розділ / dev / md126p2. Зверніть на це увагу, так як подальша настройка буде пов’язана саме з цим розділом.
Тепер можна перейти до налаштування кеша. Отмонтіруйте директорію:
# umount /home
Для створення кешуючого SSD пристрою, виконайте такі команди
# pvcreate /dev/md126p2
# pvcreate /dev/sdb
# vgcreate ssdcache /dev/md126p2 /dev/sdb
# lvcreate -l 100%FREE -n hdd_data ssdcache /dev/md126p2
# lvcreate -L 16G -n ssd_meta ssdcache /dev/sdb
# lvcreate -l 90%FREE -n ssd_data ssdcache /dev/sdb
# lvconvert --type cache-pool --poolmetadata ssdcache/ssd_meta ssdcache/ssd_data
# lvconvert --type cache --cachemode writeback --cachepool ssdcache/ssd_data ssdcache/hdd_data
Опис команд:
pvcreate
– ініціалізує фізичний том для LVMvgcreate
– створити групу томівlvcreate -l
– створити логічний тому, розмір тому вказується в процентахlvcreate -L
– створення логічного тому з метаданими для кешаlvconvert
– об’єднуємо кеш-пул і логічний тому через метадані. Задаємо режиму кешування, в нашому випадку Зворотній запис.
Є два режими кешування:
- Зворотній запис – дані спочатку пишуться в кеш, потім на диск. Це більш продуктивний варіант. При збої кешуючого SSD диска, ви втратите дані, які не встигли записатися на HDD. Хоча і не рекомендується використовувати цей режим на серверах з SSD без RAID, мені здається з урахуванням надійності SSD дисків, це цілком робоче рішення.
- Прорив – дані відразу пишуться одночасно на диск і в кеш, після чого найбільш часто використовувані потрапляють в кеш. Це безпечний варіант, підходить для серверів з 1 * SSD, але набагато менш продуктивний.
Обраний режим кешування стосується лише операцій записи. На швидкість читання даних з LVM томи з кешем він не впливає.
Після виконання всіх налаштувань, можна перевірити кеш на наявність помилок:
# lvs -a
Якщо помилок немає, значить ви все зробили правильно. Дана команда покаже відсоток використання кеша. На даний момент розмір кешу буде трохи практично нульовий.
Тепер створимо файлову систему на новому LVM розділі:
# mkfs.ext4 /dev/ssdcache/hdd_data
Після створення розділу, потрібно визначити його UUID, щоб замінити його в fstab:
# blkid|grep cache
/dev/mapper/ssdcache-hdd_data: UUID="a89f0bb8-7bb2-4d83-87e2-39918154135b" TYPE="ext4"
Замінюємо в / etc / fstab
# nano /etc/fstab
Після заміни UUID в fstab для потрібного розділу, перезавантажте сервер і перевіряємо поточні настройки:
# df -h
Щоб дізнатися поточний режим роботи SSD кеша, використовуйте команду:
# lvs -o+cache_mode ssdcache
Для зміни режиму, використовуються команди:
# lvchange --cachemode writeback ssdcache
# lvchange --cachemode writethrough ssdcache
Якщо вам потрібно замінити SSD диск, обов’язково потрібно видалити кеш:
# lvconvert --uncache /dev/ssdcache/hdd_data
# lvremove /dev/ssdcache/ssd_meta
# vgreduce ssdcache /dev/sdb
# pvremove /dev/sdb
Після цього ви сміливо можете відключити сервер, замінити диску і додати кеш заново за допомогою наступних команд:
# pvcreate /dev/sdb
# vgextend ssdcache /dev/sdb
# lvcreate -L 16G -n ssd_meta ssdcache /dev/sdb
# lvcreate -l 90%FREE -n ssd_data ssdcache /dev/sdb
# lvconvert --type cache-pool --poolmetadata ssdcache/ssd_meta ssdcache/ssd_data
# lvconvert --type cache --cachemode writeback --cachepool ssdcache/ssd_data
На цьому робота по налаштуванню SSD-кешування закінчена. Визначити швидкість роботи ssd-кеша звичайними утилітами для виміру операцій читання / запису, неможливо. Швидкість буде така ж як на звичайному SATA диску, але це все через специфіку роботи кеша, як раніше ми описували, він спрацьовує саме для “гарячих” даних. При тестуванні роботи в різних додатках, підвищення швидкості дійсно відчутно, десь в 3-4 рази.