28 сентября 2015 г.

Маленькие эксперименты. Fake RAID

RAID массив это технология виртуализации данных, которая объединяет несколько дисков в логический элемент для избыточности и повышения производительности. В русской версии Википедии есть прекрасная статья про виды массивов. Поэтому повторяться здесь не буду. Остановлюсь лишь на том, что RAID массивы строятся с помощью RAID контроллеров, которые бывают трех видов:
  • аппаратный RAID контроллер,
  • программный RAID контроллер,
  • аппаратно-программный RAID контроллер.

Первый наиболее привлекателен по отказоустойчивости и производительности. Отличный выбор для использования в промышленном серверном оборудовании. Второй представляет собой скорее возможности операционной системы (или дополнительного ПО), когда при работе существенно нагружается основной процессор системы.

Третий вид - это чип, чаще всего, интегрированный в современные материнские платы для стационарных компьютеров, выполняющий часть работы на аппаратном уровне, а часть с помощью ресурсов основного процессора (необходима установка драйверов для ОС).

Как я уже упоминал в этом посте, у меня есть небольшой сервер для экспериментов и обучения. Сервер собран на базе 6-ти ядерного процессора AMD Phenom II X6 1055T, которому до сих пор нет адекватной по цене замены. :) В качестве материнской платы для моей системы была установлена модель ASUS M4A77T, которая имела на своем борту встроенный аппаратно-программный RAID контроллер. На тот момент у меня было 3 диска по 750 Гб, которые, ради эксперимента, я пробовал объединять в RAID массив. Ничего хорошего у меня тогда не вышло. Массив после 2-3-х недель работы сбоил, 'разваливался' и терял данные. И в таких видах RAID массивов (аппаратно-программный) я на тот момент разочаровался. После я даже узнал, что такие контроллеры называют fake RAID, что, согласитесь, не очень лестно. :)

В этом году я заменил материнскую плату на новую модель - ASUS M5A97 R2.0, оставив процессор и память из старой конфигурации. Новая материнская плата - новые эксперименты. :) На этот раз я работал с двумя дисками объемом 1 Тб каждый (модель WD Caviar Blue 7200 rpm 64 Mb).

Стоит отметить, что на данный момент, наибольшее распространение получили 3 уровня RAID:
  • RAID 0 или striping - дисковый массив повышенной производительности, использующий для хранение данных чередование блоков данных (stripe), без отказоустойчивости, но чем больше дисков, тем больше производительность.
  • RAID 1 или зеркало (mirroring) - массив из двух (или более) дисков, являющихся полными копиями друг друга. Обладает высокой отказоусточивостью, но низким коэффициентом использования дискового пространства.
  • RAID 5 - дисковый массив с чередованием и «не выделенным диском чётности». Обладает самой низкой производительностью из данных трех, но оптимально использует дисковое пространство при хорошем уровне отказоустойчивости. Отлично подходит для хранения больших объемов данных - "дешево и сердито".
У меня стояла задача прежде всего получить ускорение при использовании обычных SATA3 дисков. Выбор пал в пользу RAID 0. Результаты тестов отображены на рисунках 1, 2 и 3.
Рис. 1. Тест чтения одиночного диска и RAID 0 массива.

Рис. 2. Тест записи одиночного диска и RAID 0 массива.

Рис. 3. Тест чтения/записи одиночного диска и RAID 0 массива.

На всех снимках экранов слева результаты теста одиночного диска, справа - RAID 0 массива на двух дисках. Операционная система на сервере - MS Windows 2008 Server.

Как видно из тестов, прирост производительности есть (гарантировано 60-70 %), и при чтении, и при записи. Стабильность работы контроллера - средняя. Ошибок, сбоев пока не было. 

Плюсы:
  • увеличение скорости дисковой подсистемы,
  • использование всего дискового пространства,
  • относительная стабильность решения.

Минус один, но существенный:
  • низкая отказоустойчивость.

Во-первых, вероятность выхода из строя диска в массиве увеличивается в 2 раза, чем в случае использования одного диска. Во-вторых, привязка данного вида RAID массива к контроллеру (как и в случае аппаратного RAID контроллера), в данном случае, ко всей материнской плате. То есть поиск не только отдельного контроллера, но и идентичной материнской платы, в случае выхода её из строя.

В целом, как мне кажется, решение на базе fake RAID имеет право на жизнь. Конечно, необходимо настроить систему резервного копирования для устранения минусов.

Еще хочу отметить, что система, установленная на данный RAID массив, работает гораздо веселее, даже по субъективным ощущениям. :)


5 комментариев:

  1. Подкину свои пять копеек:

    RAID5 - уже всё меньше и меньше используется. Так-как при объёмах массива, более 4тб, он превращается в RAID0. Есть у НЖМД такой параметр, как: Неисправимых ошибок чтения/прочитанных бит. И равен он: 1 ошибка на 10E15 (10 в 15-й степени) бит. Учитывая данный параметр, при пересборке массива RAID5, наткнуться на ошибку чтения, и потерять весь массив на объёмах выше 4ТБ - практически 100 гарантия.

    По сему, когда надо побольше дисков, и подешевле, пользуются RAID6. Когда нужна надёжность и скорость, используют RAID 10.

    ОтветитьУдалить
    Ответы
    1. Да, все верно. А еще в дисковых массивах уровня HP EVAxxxx используются виртуальные уровни RAID, со своей сложной логикой и алгоритмами.

      Виктор, лучше расскажи, как ты на SSD живешь. Как скорость, надежность, ощущения? :)

      Удалить
  2. Я живу в режиме hardcore. А именно: linux как хост ОС, kvm как гипервизор, zfs как файловая система. zfs бежит поверх SSD. Из косяков: я не правильно создал zfs том (не указал ashift=12), и таким образом потерял 30 процентов производительности. Живу примерно так: SAP бегает в виртуалке на SSD в режиме: writethougth (т.е. сперва пишем, потом отчитываемся). Там же болтается НЖМД для рез. копирования. Через db13 (база в 180 гб.) улетает за 25 минут fulloffline backup, и её забираю на вообще другой узел, через bacula. Каждый день делаю снепшот от ssd (в сутки разница не более 5гб выходит). Каждый день, отправляю снепшот на физический другой узел. Снепшотов могу иметь столько, сколько позволяет место и здравый смысл. Таким образом: поднимаюсь с шагом в рабочий день, прям на ssd с любого снепшота. Если случится катастрофа - поднимусь на другом узле с любого из удачных снепшотов. Если система zfs и снепшотов подведёт - поднимусь с древней файловой копии виртуалок, и актуального db13 backup.

    SAP на ssd чувствует себя - прекрасно! Прекрасно, от слово прекрасно! Всё очень быстро (на глаз, отсутствует какая-либо задержка при открытии ежедневных транзакций SAP)! Сейчас планирую разводить Руководство, для покупки ssd, хотя-бы на чтение, для не продуктивных SAP систем.

    ОтветитьУдалить
    Ответы
    1. Только тут, нужно понимать, что у меня SSD корпоративного класса. Т.е. не самые быстрые, зато, с защитой от потери данных в кеше SSD, при сбоях питания.

      В общем, в серьёзный продакшн, я бы не совался с таким решением как у меня, в любом случае.

      Удалить
    2. Ах да, если выражаться в абсолютных цифрах, то: без SSD, работа по обновлению SAP, поднимала load average системы от 18 до 40. То с ssd, load average, не поднимается выше 5. Максимум 12. Что выражается, как: 5-10 раз более быстрое обновление SAP

      Удалить