понедельник, 20 июля 2015 г.

zfs: подключаем лог записи и кэш (ZIL и l2arc)

ZFS можно существенно ускорить, если подключить кэши чтения и записи, но для этого требуется SSD, и лучше несколько.
О чём нужно помнить:

  • кэш записи будет сильно изнашивать диск(и), поэтому если делать серьёзно, то надо ставить SLC или eMLC диски, в зеркало
  • + сами диски обязаны иметь обвязку для сброса данных на флэш при отключении питания. То есть 99% бытовых дисков использовать себе дороже.
  • Кэш чтения - можно ставить и бытовые SSD, но лучше подбирать по большому числу IOPS и большой линейной скорости. Если денег много или очень много горячих данных - eMLC предпочтительнее.
  • диски кэша чтения в зеркало не объединяются, но учитывая логику работы - ошибка с SSD - читаем с основного массива, это не критично, только упадёт производительность.
  • при использовании аппаратных рейдов кэш чтения крайне желательно подключать в обход рейда, в набортный сата, при его наличии и соответствию минимум sata 3gbit стандарту, лучше сата 3 - 6Гбит.

Теперь о включении.
Пусть будет пул zfspool, и вставили 2 диска ada7 и ada8. Хотим построить схему - 16 гб с кажого диска будут в зеркале и под ZIL (лог), остальное под кэш чтения. Хотя при возможности лучше, чтобы это были независимые диски. Можно собрать так и на 1 диске, для тестовых или слабо нагруженных серверов, но не рекомендуется.

Для начала необходимо убедиться, что диски выбраны правильно, например через smartctl проверить марки и серийники.

Диски размечаем в gpt

gpart create -s gpt ada7
gpart create -s gpt ada8

Далее логи
gpart add -t freebsd-zfs -b 2048 -a 4k -l log0 -s 16G ada7
gpart add -t freebsd-zfs -b 2048 -a 4k -l log1 -s 16G ada8

И кэш
gpart add -t freebsd-zfs -a 4k -l cache0 ada7
gpart add -t freebsd-zfs -a 4k -l cache1 ada8

Подключаем
zpool add zfspool log mirror gpt/log0 gpt/log1
zpool add zfspool cache gpt/cache0 gpt/cache1

если собираем на 1 диске, и очень хочется сделать зеркало, сначала создаём раздел на реальном диске или sparse диск так
mkfile -n 16g /tmp/fakedisk
после создания зеркала делаем этому "диску" offline или удаляем файл - с ним производительность упадёт сильно, а создание временного диска не на диске а в памяти чревато ростом файла и выеданием памяти, а также при любом сбое есть риск потери данных.

Или просто делаем лог без зеркала. Учитываем, что в 8 freebsd нельзя было отключить такой лог, так только через зеркала, но уже вроде с 9 версии эту проблему устранили.

Смотрим zpool status - должны появиться наши диски. И не забываем добавить их в мониторинг - если пойдут ошибки, на лог надо реагировать оперативно.

через
zpool list -v
смотрим заполненность наших кэшей.

Мониторинг.
для freebsd советую поставить 
/usr/ports/sysutils/zfs-stats

текущая эффективность кэша
zfs-mon

Линки

Комментариев нет:

Отправить комментарий