Categories: CentOSlinux

Настройка SSD кеширования LVM Cache в CentOS

В этой статье мы покажем, как использовать 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 — инициализирует физический том для LVM
  • vgcreate – создать группу томов
  • lvcreate -l – создать логический том, размер тома указывается в процентах
  • lvcreate -L – создание логического тома с метаданными для кэша
  • lvconvert — объединяем кэш-пул и логический том через метаданные. Задаем режима кеширования, в нашем случае writeback .

Есть два режима кеширования:

  • Writeback — данные сначала пишутся в кэш, затем на диск. Это более производительный вариант. При сбое кэширующего SSD диска, вы потеряете данные, которые не успели записаться на HDD. Хотя и не рекомендуется использовать этот режим на серверах с SSD без RAID, мне кажется с учетом надежности SSD дисков, это вполне рабочее решение.
  • Writethrough — данные сразу пишутся одновременно на диск и в кэш, после чего наиболее часто используемые попадают в кэш. Это безопасный вариант, подходит для серверов с 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 раза.

admin

Share
Published by
admin

Recent Posts

Лучшие дистрибутивы Linux

Если говорить о том, какие лучшие дистрибутивы Linux мы знаем, то этот список может быть…

1 неделя ago

Лучшие браузеры для Ubuntu

Хотя Ubuntu и поставляется со встроенным обозревателем Firefox многие пользователи считают что это не самая…

1 неделя ago

Установка Remmina Ubuntu 16.04 или 16.10

Что такое Remmina? Remmina — это совершенно бесплатный и свободный клиент так называемого удаленного рабочего…

1 неделя ago

Плюсы Ubuntu

Как мы знаем, Ubuntu это самая популярная сборка из систем на базе ядра Linux. У…

1 неделя ago

Выбираем ноутбук для Linux

Выбор ноутбука для каждого пользователя это довольно кропотливый процесс. Люди стараются подобрать ноутбук который будет…

1 неделя ago

Установка Linux рядом с Windows 10

Если вы решили ознакомиться с операционной системой Linux более детально и задались вопросом как установить…

1 неделя ago