Время восстановления RAID-массивов

14.02.2024 | Хранилища

Восстановление RAID

После замены неисправного диска RAID-массива на новый начинается процесс восстановления RAID – копирование на него данных с оставшихся дисков. Как долго это продлится, зависит от нескольких факторов: емкости и скорости дисков, их заполнения, уровня RAID, производительности контроллера, загруженности системы. Чем больше и медленнее диски, чем больше данных для копирования, чем ниже производительность контроллера, чем выше активность системы – тем продолжительнее время восстановления.

Различные уровни RAID используют разные методы хранения и восстановления данных. RAID 1 зеркалирует данные уцелевшего диска на новый. Подобным образом восстанавливается RAID 10 (распараллельное зеркалирование). Более сложные RAID 5 и RAID 6 вычисляют четности, распределяя их по дискам, наряду с данными. Их реконструкция по данным оставшихся дисков требует значительного ресурса и времени восстановления.

Схематически процесс выглядит так:

Оценка времени восстановления

Выглядит так, что у восстановления RAID с четностью есть два узких места – расчеты RAID 5/6 и ширина канала записи на новый диск (условная скорость 100 МБ/с на рисунках соответствует усредненным показателям механических дисков).

Считая, что RAID-контроллер (или центральный процессор, если речь идет о программных реализациях) достаточно мощный, для оценки времени восстановления RAID-массива нужно знать размер диска, скорость диска, заполнение массива данными, долю задействованного ресурса контроллера и нагрузку на систему. Логика оценочных формул проста: делим объем данных на скорость восстановления (произведение скорости диска, коэффициентов потребления контроллера и загрузки системы). К примеру, для массива RAID 1 с двумя дисками по 1 ТБ, 500 ГБ данных, скоростью диска 100 МБ/с, ресурсом контроллера 80 % и загрузкой системы 50%, время восстановления будет следующим:

Размер данных / Скорость обновления = 500 ГБ / (100 МБ/с x 0,8 x 0,5) = 12,5 часов

Для массива RAID 6 с шестью дисками по 1 ТБ, 4 ТБ данных, скоростью диска 100 МБ/с, скоростью контроллера 80% и загрузкой системы 50% время восстановления составит:

Размер данных / Скорость обновления = 4 ТБ / (100 МБ/с x 0,8 x 0,5 x (n-2)) = 200 часов,

где n – количество дисков в массиве.

Исходя из этого, зеркало RAID 1 на дисках 20 ТБ будет иметь такое же время восстановления, как массив RAID 6 полезной емкости 40 ТБ (4 x 20 ТБ) или массив RAID 10 на 40 ТБ (4 x 20 ТБ) – все они будут ждать заполнения данными одного диска 20ТБ, с его скоростью.

Это в теории.

Тормоза восстановления

На практике все хуже. Скорость последовательной записи на новый накопитель – не единственный параметр в уравнении. Кроме заполненности дисков и степени дисковой активности рабочих приложений нужно многое учитывать. Обычно, не I/O – узкое место системы.

Тормозом может быть чтение, а не запись – сбор фрагментированной информации с живых дисков замедляется задержками чтения (которые в механических дисках составляют миллисекунды). К тому же природа обновляемых данных разная. Помимо пользовательских данных, пересчитываются и пишутся на новый диск четности, указатели, метаданные – в зависимости от того, какое именно программное обеспечение занимается хранением данных. При разном размере блоков данных процесс восстановления теряет кажущуюся «потоковость». Основной метрикой становятся не мегабайты в секунду в канале записи на диск, а способность дисковой подсистемы прорабатывать запросы коротким блоком (4K) – как у метаданных. Чем мельче фрагменты смеси данных, тем больше вклад задержек обращения к дискам и выше требования по IOPS.

Пострадавшие знают, что на типичном NAS реконструкция может занимать недели или месяцы.

Rebuild , resilvering

Процесс восстановления данных массива после выхода диска из строя и замены его на новый обычно называют rebuild. В программно управляемых средах ZFS пользуются термином reslivering.

Логика rebuild и resilvering несколько разная. Традиционный RAID поблочно опрашивает все диски, вычисляет и записывает данные на новый диск. Этот процесс повторяется для всех блоков, включая те, которые не содержат данных - RAID не знает, какие блоки используются, а какие пусты. При любой заполненности массива будут считываться все сектора уцелевших дисков.

Скорость восстановления ZFS RAIDz медленнее, однако RAIDz требует только перестройки блоков, содержащих данные и не восстанавливает пустые блоки. На мало используемых пулах восстановление может быть завершено быстрее, чем в случае традиционного RAID. Однако это преимущество исчезает, когда пул заполняется.

ZFS использует блоки переменного размера. Для каждого массива данных с блоками от 4 КБ до 1 МБ проверяется дерево указателей блоков. Все указатели внутри файловой системы содержат контрольную сумму в целевом блоке. Активные данные записываются в новые блоки, как и метаданные любых ссылающихся на них блоков. Все перераспределяется и записывается. Деревья указателей блоков фрагментированы, как и файлы данных, так что головкам дисков приходится активно двигаться. Ротационные жесткие диски работают гораздо медленнее с интенсивным перемещением головок, поэтому скорость восстановления мегабайт в секунду ниже, чем у традиционных RAID.

SSD превосходят HDD по потоковой скорости (МБ/c) и гораздо лучше по IOPS. Однако удельная стоимость хранения на SSD обычно выводит массивы SSD за пределы экономической целесообразности.

Что можно сделать ?

Возможности настройки массивов RAID зависят от того, кто управляет этими массивами, контроллер, ОС или файловая система. Программное обеспечение (встроенное, служебное, командной строки или постороннее) содержит опции для настройки параметров обновления.

Например, у md raid (программный RAID Linux) есть параметры минимальной и максимальной скорости. Если установить оба значения выше потолка скорости диска, система восстановит диск настолько быстро, насколько это возможно.

echo 300000 >/proc/sys/dev/raid/speed_limit_min

echo 300000 >/proc/sys/dev/raid/speed_limit_max

Массив, используемый при восстановлении, перестроится медленнее. Если требуется максимальная производительность массива в течение дня, но хочется как можно быстрее перестроить его ночью, изменение параметров позволяет управлять процессом обновления. В контроллерах RAID есть настройка скорости восстановления в % выделенного ресурса.

ZFS RAID-Z2 медленнее, чем RAID-Z1, однако предлагает хороший баланс между емкостью и резервированием. Поскольку RAID-Z2 подобно RAID 6 может выдержать потерю двух дисков, более длительное время восстановления является разумным компромиссом.

Много маленьких файлов будут восстанавливаться дольше нескольких больших файлов.

Восстановление массива RAID с емкими дисками и сложными уровнями RAID – длительный процесс. При реконструкции существует риск дополнительных сбоев и потери данных, поэтому важно оптимизировать построение массива заранее. Где это оправдано, перевести хранение на SSD. Оценить стоимость массива RAID 10 по сравнению с RAID 6. Подобрать соотношение емкости диска и их количества. Уменьшить нагрузку на систему. Установить приоритет процесса обновления.

Важно создать благоприятные условия эксплуатации дискам, следить за их исправностью и заменять до того, чем они выйдут из строя. В аппаратных контроллерах и программных реализациях RAID функция scrubbing проверки целостности и согласованности данных RAID 5 и 6. Регулярный scrubbing помогает предупредить и частично исправить несоответствия данных.

Наконец, главное правило хранения ценных данных – хранить и обновлять их резервные копии.