среда, 28 сентября 2016 г.

ZRAMRAID или как разогнать виртуальный том без потери данных


Данный проект является производной всех тех экспериментов с использованием виртуализации XEN\KVM, который мы начали еще в 2012г. Тогда нам очень не нравилась скорость работы дисковой подсистемы в режиме HVM для сервера WINDOWS 2003.

В процессе поиска решений вспомнили о модуле zram и первым делом сделали виртуальный раздел для swop. Безусловно определенно работать OS WINDOWS в «таком» окружении стала быстрее, точнее стала более «отзывчивее», но недостаточно для серверных задач. Вот тогда у нас и родилась идея сделать так называемый виртуальный RAID, который мы и назвали от производной zram —> ZRAMRAID. Идея собственно проста, создаем блочное устройство из области памяти с применением модуля ядра zram, по размеру одинаковое с образом диска для виртуальной машины, после чего объединяем оба носителя в RAID массив и уже готовый RAID (MD) отдаем виртуальной машине в XEN или KVM как носитель для работы с данными.
Схема построения RAID массива:
После этого уже в виртуальной машине форматируем и используем по назначению. Что в результате получается? Во первых — скорость общения с носителем практически равна скорости памяти, а это я вам скажу по круче SSD будет! Во вторых, что касается переживаний о сбоях, специально в процессе работы виртуальной машины проводили аварийное отключение системного блока и машина достойно выдерживала такие «сбои». Все таки программный RAID в системе LINUX достоин уважения! При всех наших экспериментах по экстремальным отключениям как частей ZRAMRAID, так и аварийных остановках, данные оставались целыми, что помогло нам решить многие производственные проблемы в процессе эксплуатации виртуальных машин. На данный момент есть у нас такой сервер который отработал 3года и несмотря на редкие сбои по питанию достойно выдержал тест на надежность. Безусловно наш скромный проект не может претендовать на промышленную эксплуатацию и является скорее нестандартным решением, но я думаю поможет в решении многих задач на серверах. В частности у меня например в таком «ZRAMRAID» прекрасно себя «чувствует» почтовая база данных. Кроме описания и функциональной схемы «ZRAMRAID», прилагаем код на языке BASH который является системным на OS LINUX для более простого использования данного решения. Программный код распространяется согласно лицензии GNU Public License.

Код на языке BASH состоит из 3х скриптов:
1. zramraid-install — инсталлятор, установщик скриптов поддерживает OS Debian
2. zramraid-config — скрипт по управлению конфигурацией zramraid носителей
3. zramraid-maker — скрипт управления запуском и остановкой zramraid носителей

При вызове любого из скриптов с ключом —help можно получить справку по использованию скриптов с примерами.
Скачать архивом можно тут
Зеркало: тут

2 комментария:

  1. Ещё на стадии "экспериментов" тест файловой базы 1с версии 7.7 3Gb в стандартном файловом режиме было в среднем 40~45мин, на рейде стало 11мин. Надо учитывать тот момент, что максимальная скорость идёт на чтение, на запись ускорение меньше и ограничено буферизацией в пределах объема блочного устройства, которое создано в рейде. Проще говоря, если база 3Gb и носитель 3,5 -4Gb то в записи будет работать медленнее, чем на чтение. Если размер больше, практически одинаково. Скорость работы рейда равна скорости работы памяти.

    ОтветитьУдалить