У цій статті ми покажемо, як використовувати SSD диск в якості кешуючого пристрої для двох SATA дисків, об’єднаних в RAID 1 на сервері з CentOS Linux на прикладі LVM Cache. У такій конфігурації Кешуються і кешувального пристрій повинен входити в одну групу томів LVM, а відключення / включення кеша можна виконувати без на ходу без без перезавантажень і перемонтування.

SSD-кешування – технологія, коли твердотільні SSD накопичувачі використовуються в якості буфера для часто запитуваних даних. Система визначає дані за ступенем “теплоти” і переміщує їх на швидкий накопичувач, який використовується в якості кешуючого диска. Кеш дозволяється системі отримувати доступ до даних в кілька разів швидше, ніж якби вони були отримані з більш повільного жорсткого диска.

Після установки ОС на RAID1 з двох SATA дисків, ми підключили окремий SSD диск на 240 Гб. Перевіримо, що він доступний:

# fdisk -l

ssd диск в linux centos

SSD-кешування включити до установки програм і налаштування сервера.

За допомогою менеджера пакетів встановіть утиліту lvm2, яка буде використовуватися для реалізації кешу.

# yum install lvm2 -y

установка lvm2

Після установки ПО, потрібно визначити блоковий пристрій SSD-диска і розділ, до якого примонтировать потрібна директорія. У моєму випадку це буде директорія home, розділ для якої я створив при установці ОС.

визначити нвзваніе розділу директорії

Директорії / home відповідає розділ / dev / md126p2. Зверніть на це увагу, так як подальша настройка буде пов’язана саме з цим розділом.

Тепер можна перейти до налаштування кеша. Отмонтіруйте директорію:

# umount /home

umount / будинок

Для створення кешуючого 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

створення LVM кеша на SSD диску в linux

Опис команд:

  • pvcreate – ініціалізує фізичний том для LVM
  • vgcreate – створити групу томів
  • lvcreate -l – створити логічний тому, розмір тому вказується в процентах
  • lvcreate -L – створення логічного тому з метаданими для кеша
  • lvconvert – об’єднуємо кеш-пул і логічний тому через метадані. Задаємо режиму кешування, в нашому випадку Зворотній запис.

Є два режими кешування:

  • Зворотній запис – дані спочатку пишуться в кеш, потім на диск. Це більш продуктивний варіант. При збої кешуючого SSD диска, ви втратите дані, які не встигли записатися на HDD. Хоча і не рекомендується використовувати цей режим на серверах з SSD без RAID, мені здається з урахуванням надійності SSD дисків, це цілком робоче рішення.
  • Прорив – дані відразу пишуться одночасно на диск і в кеш, після чого найбільш часто використовувані потрапляють в кеш. Це безпечний варіант, підходить для серверів з 1 * SSD, але набагато менш продуктивний.

Обраний режим кешування стосується лише операцій записи. На швидкість читання даних з LVM томи з кешем він не впливає.

Після виконання всіх налаштувань, можна перевірити кеш на наявність помилок:

# lvs -a

Якщо помилок немає, значить ви все зробили правильно. Дана команда покаже відсоток використання кеша. На даний момент розмір кешу буде трохи практично нульовий.

інвормація про lvm томах

Тепер створимо файлову систему на новому LVM розділі:

# mkfs.ext4 /dev/ssdcache/hdd_data

створити файлову систему на LVM розділі mkfs.ext4

Після створення розділу, потрібно визначити його UUID, щоб замінити його в fstab:

# blkid|grep cache

/dev/mapper/ssdcache-hdd_data: UUID="a89f0bb8-7bb2-4d83-87e2-39918154135b" TYPE="ext4"

Замінюємо в / etc / fstab

# nano /etc/fstab

отримати UUID розділу

Після заміни UUID в fstab для потрібного розділу, перезавантажте сервер і перевіряємо поточні настройки:

# df -h

інформація про розділи df

Щоб дізнатися поточний режим роботи SSD кеша, використовуйте команду:

# lvs -o+cache_mode ssdcache

lvs -o + cache_mode ssdcache режим роботи ssd кеша

Для зміни режиму, використовуються команди:

# 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 рази.

Leave a Reply

Your email address will not be published. Required fields are marked *