Hotspare что это
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете Pyatilistnik.org. В прошлый раз мы с вами рассмотрели ошибку «windows не удается получить доступ к указанному устройству». Идем дальше и поговорим на тему систем хранения данных и RAID массивов, а именно разберем вопрос чем отличаются Global Hot Spare и Dedicated Hot Spare при добавлении диска горячей замены. Уверен, что многие знают эти отличия, но для новичков это будет полезно.
Что такое Global Hot Spare и Dedicated Hot Spare
Если вы хоть раз настраивали сервер, то наверняка задавались вопросом его отказоустойчивости, которая может быть на разных уровнях, например два блока питания или дисковая подсистема, которая для сервера очень важна. Потеря данных просто неприемлема в современной модели бизнеса. Для этого существует технология RAID, где за счет избыточности достигается некий баланс безопасности и денег.
Существует много видов RAID массивов и у каждого свое количество дисков которое может выйти, прежде чем весь массив развалится. Для дополнительной защиты принято выделять один или несколько запасных дисков горячей замены, которые должны успеть подменить выходящий из строя диск, до момента его замены. Существует два вида дисков горячей замены, это Global Hot Spare и Dedicated Hot Spare.
Global Hot Spare — Глобальный диск горячего резервирования позволяет не потерять данные при выходе из строя одного из дисков массива. Это неиспользуемый резервный диск в группе дисков. Данный диск находятся в режиме ожидания и будет активирован на любом из виртуальных дисков, когда возникает сбой физического или повреждение диска, на то он и глобальный. Диск горячего резервирования автоматически активируется только в случае повреждения диска массива. Когда диск горячего резерва активирован, он восстанавливает данные для всех резервных виртуальных дисков, в которых использовался неисправный физический диск. Затем, после замены диска, данные отправляются обратно на новый диск с резервного диска. Следует помнить, что Global Hot Spare диск и физический диск массива должны использовать одну и ту же дисковую технологию и размер (размер может быть больше, но не меньше).
Dedicated Hot Spare — В ыделенный горячий резервный диск — это диск «горячего» резерва, который может использоваться только для одного резервного виртуального диска. Также возможно назначить выделенный Dedicated Hot Spare для защиты более чем одного логического диска; это называется резервным пулом (pool reserve). Прежде чем вы сможете назначить выделенный резервный диск для защиты массива, вы должны создать логический диск.
Из схемы видно, что выделенные диски будут являться резервными только для группы A и B, а вот глобальный Hot Spare для всех массивов.

Что применяется первым из Global Hot Spare и Dedicated Hot Spare
Предположим, что у вас есть два виртуальных диска, для каждого из них есть по одному Dedicated Hot Spare и два общих Global Hot Spare, если выходит из строя один из дисков виртуального массива, вопрос, куда буду переноситься данные? Правильный ответ:
- В первую очередь будет использован «Выделенный горячий резерв (Dedicated Hot Spare)»
- Потом уже будет использоваться глобальный диск резервного назначения (Global Hot Spare)
Как начинается процесс восстановления поврежденного диска RAID
Если у вас в системе есть назначенные Global Hot Spare и Dedicated Hot Spare и они полностью отвечает требованиям восстановления поврежденного диска RAID, восстановление начнется автоматически. Hot Spare диски должны быть запланированы до начала восстановления и должны соответствовать всем требованиям для виртуального диска. Если вы удалите виртуальный диск, то Dedicated Hot Spare станет Global Hot Spare.
FAQ : RAID : Общие вопросы
В: Что такое RAID и зачем он нужен? Какой RAID лучше использовать?
О: Ответу на этот вопрос посвящен раздел [ RAID ].
В: Можно ли использовать в RAID массиве диски разного размера?
О: Да. можно. Но, при этом, используемая емкость у ВСЕХ дисков будет равна емкости наименьшего диска.
Из этого следует, что добавлять в уже существующий RAID массив можно только диски такого же или большего размера.
В: Можно ли использовать в RAID массиве диски разных производителей?
О: Да, можно. Но при этом надо иметь ввиду, что точные размеры дисков одинаковой емкости (36/73/146. ГБ) у разных производителей могут отличаться на несколько килобайт. Когда вы создаете новый RAID массив, на это можно не обращать внимание, но если вы добавляете диски к уже существующему массиву (например, меняете вышедший из строя диск), то важно, чтобы новый диск был больше чем старые, или точно такого же размера.
В: Что такое Write Through и Write Back?
О: Это способ записи данных, полученных RAID контроллером, на дисковый массив. По другому эти способы еще называются так: прямая запись ( Write Through ) и отложенная запись ( Write Back ). Какой из этих способов будет использоваться определяется в BIOS-е контроллера (либо при создании массива, либо позднее).
- Write Through — данные записываются непосредственно на дисковый массив. Т.е. как только данные получены, они сразу же записываются на диски и после этого контроллер подает сигнал управляющей ОС о завершении операции.
- Write Back — данные записываются сначала в кэш , и только потом (либо по мере заполнения кэш -а, либо в моменты минимальной загрузки дисковой системы) из кэш -а на диски. При этом, сигнал о завершении операции записи передается управляющей ОС сразу же по получении данных кэш -ем контроллера.
Write Back работает быстрее, но при этом надо помнить, что в случае сбоя питания все данные, которые находились в этот момент в кэш -е, будут потеряны. Причем, управляющая ОС (а следовательно и приложение, записывавшее эти данные) ничего об этом «не узнают», так как они уже получили сообщение от контроллера об успешном завершении записи. Например, если в кэше находились данные транзакции сервера СУБД, то СУБД будет уверенна, что с данными все хорошо, хотя на самом деле это не так.
Избежать описанной проблемы можно или с помощью установки на RAID контроллер BBU (см. ниже), или посредством подключения всего сервера через источник бесперебойного питания (UPS) с функцией программируемого выключения.
Кстати, некоторые RAID контроллеры не позволяют включить функцию Write Back без установленного BBU .
В: Что такое BBU и зачем он нужен?
О: BBU (Battery Backup Unit ) необходим для предотвращения потери данных находящихся в кэш -е RAID контроллера и еще не записанных на диск (отложенная запись — "write-back caching"), в случае аварийного выключения компьютерной системы.
Существуют три разновидности BBU :
- Просто BBU : это аккумулятор, который обеспечивает резервное питание кэша через RAID контроллер.
- Переносимые (Transportable) BBU (tBBU): это аккумулятор, который размещен непосредственно на модуле кэш и питает его независимо от RAID контроллера. В случае выхода из строя RAID контроллера, это позволяет перенести данные, сохраненные в кэш -е, на резервный контроллер и уже на нем завершить операцию записи данных. : основная идея заключается в следующем: в случае сбоя питания RAID контроллер копирует содержимое кэш -а в энергонезависимую память (например, в случае с технологией Adaptec »Zero-Maintenance Cache Protection — на NAND флэш накопитель). Питание, необходимое для завершения этого процесса, обеспечивается встроенным супер-конденсатором. После восстановления питания, данные из флэш памяти копируются обратно в кэш контроллера.
В: Что такое Hotswap?
О: Hotswap — Hot Replacement of Disks / Hot Swap (Горячая Перестановка / Горячая Замена Дисководов) — это возможность замены вышедших из строя дисководов без прерывания работы системы. Если в системе используется должным образом сконфигурированный RAID контроллер, управляющий избыточной дисковой системой ( RAID массивом), то отказ одного дисковода не приводит к прерыванию функционирования системы. В этом случае системой генерируется соответствующее сообщение для системного оператора. Через некоторое время, когда активизируется замещающий дисковод, системный оператор может удалить отказавший дисковод, установить новый дисковод, и дать контроллеру команду «восстановить» данные на новом дисководе, причем все это происходит без прерывания системных операций и выключения системы.
В: Что такое Hot Spare (Hotspare)?
О: Hot Spare — (Резервная Замена Дисководов («Горячее резервирование»)) — Одна из наиболее важных особенностей, которую обеспечивает RAID контроллер, с целью достичь безостановочное обслуживание с высокой степенью отказоустойчивости. В случае выхода из строя диска, восстанавливающая операция будет выполнена RAID контроллером автоматически, если выполняются оба из следующих условий:
- Имеется «резервный» диск идентичного объема, подключенный к тому же контроллеру и назначенный в качестве резервного, именно он и называется Hotspare ;
- Отказавший диск входит в состав избыточной дисковой системы, например RAID 1 , RAID 3 , RAID 5 или RAID 0+1 .
Обратите внимание: резервирование позволяет восстановить данные, находившиеся на неисправном диске, если все диски подключены к одному и тому же RAID контроллеру.
«Резервный» диск может быть создан одним из двух способов:
- Когда пользователь выполняет утилиту разметки, все диски, которые подключены к контроллеру, но не сконфигурированы в любую из групп дисководов, будут автоматически помечены как «резервные» ( Hotspare ) диски (автоматический способ поддерживается далеко не всеми контроллерами).
- Диск может также быть помечен как резервный ( Hotspare ), при помощи соответствующей утилиты RAID контроллера.
В течение процесса автоматического восстановления система продолжает нормально функционировать, однако производительность системы может слегка ухудшиться.
Для того, что бы использовать восстанавливающую особенность резервирования, Вы должны всегда иметь резервный диск ( Hotspare ) в вашей системе. В случае сбоя дисковода, резервный дисковод автоматически заменит неисправный диск, и данные будут восстановлены. После этого, системный администратор может отключить и удалить неисправный диск, заменить его новым диском и сделать этот новый диск резервным.
В этом разделе использованы материалы с сайта «3dnews».
В: Что такое Copyback Hot Spare?
О: Copyback Hot Spare это функция RAID контроллера, которая позволяет пользователям закрепить физическое расположение диска «горячего резерва» ( Hot Spare ), что позволяет улучшить управляемость системы.
В: Что такое JBOD?
О: JBOD (Just a Bunch of Disks) это способ подключить диски к RAID контроллеру не создавая на них никакого RAID . Каждый из дисков доступен так же, как если бы он был подключен к обычному адаптеру. Эта конфигурация применяется когда необходимо иметь несколько независимых дисков, но не обеспечивает ни повышения скорости, ни отказоустойчивости.
В: Что такое размер страйпа (stripe size)?
О: размер страйпа ( stripe size ) определяет объем данных записываемых за одну операцию ввода/вывода. размер страйпа задается в момент конфигурирования RAID массива и не может быть изменен позднее без переинициализации всего массива. Больший размер страйпа обеспечивает прирост производительности при работе с большими последовательными файлами (например, видео), меньший — обеспечивает большую эффективность в случае работы с большим количеством небольших файлов.
В: Нужно ли заниматься архивированием данных в случае использования RAID?
О: Конечно да! RAID это вовсе не замена архивированию, основное его назначение это повышение скорости и надежности доступа к данным в нормальном режиме работы. Но только регулярное архивирование данных гарантировано обеспечит их сохранность при любых отказах оборудования, пожарах, потопах и прочих неприятностях.
shared hotspare для mdadm
Я обнаружил, что в интернете очень мало (и не очень внятно) объяснено, как mdadm работает с общими (глобальными) дисками горячей подмены. В заметке я опишу, что это такое, и объясню, почему shared hotspare не отмечены в /proc/mdstat как общие, а вместо этого выглядят как вполне себе локальные.
Что такое hot-spare?
(Я пишу не для новичков, так что галопом по европам)
Если массив обладает избыточностью и один из его дисков вышел из строя, то существует возможность восстановить избыточную информацию на резервный диск. Если диск добавляется в массив руками (админу пришло письмо о сбое, он прочитал письмо, проснулся/оделся, приехал на работу, вынул сбойный диск, вставил запасной, добавил его в массив, дал команду на восстановление избыточности), то такой диск называется cold-spare. Просто «запасной диск».
Если же в сервере есть простаивающий диск, на который осуществляется восстановление избыточности сразу после сбоя любого из дисков массива, то такой диск называется hot-spare. Главное достоинство — оно отребилдится (восстановит избыточность) даже если админ письмо прозевал или не успел вовремя приехать.
Локальные hot-spare
Обычно запасной диск добавляется для массива, то есть если в массиве сбой, то его резервный диск и используется. Если сбой происходит в соседнем массиве, то hot-spare из «чужого» массива не используется.
Это на самом деле логично — если у нас стоит выбор — использовать hot-spare для восстановления избыточности системного раздела или раздела с данными, то надо восстанавливать избыточность раздела с данными. А если системный раздел уже «занял» hot-spare, то будет бяка. Более того, некоторые производители предлагают 1EE hotspare, в которой резервный диск используется и для хранения данных (пустое место «размазано» между дисками массива, обеспечивая возможность быстрого ребилда и увеличивая производительность в нормальном режиме).
Глобальные (общие) hot-spare
Однако, бывает так, что массивов с данными много. И им всем нужны hot-spare диски. Но дисков жалко. И тогда возникает желание иметь «общий» диск, который может быть использован для любого из массивов (а ещё лучше 2-3 таких диска).
Это было вступление. Теперь переходим к сути вопроса.
linux md
mdadm (ядерный модуль в DM-стеке) не поддерживает shared hot-spare. Диск может быть добавлен как hot-spare только в конкретный массив.
Но mdadm поддерживает!
Именно так. mdadm поддерживает, ядерный модуль — нет. Mdadm реализует общий hot-spare методом «перекинуть hotspare с одного массива на другой, повреждённый».
Другими словами, для того, чтобы это сработало, должен быть запущен mdadm в режиме -F (follow). Он же обычно присылает сообщения на почту о проблемах рейда. Большинство современных дистрибутивов его запускают (если есть массивы), но, важно понимать, что он обслуживает только те массивы, которые были собраны из mdadm.conf, а не собранные ручками. (Да-да, тут нас ждёт подстава).
spare-group
Для возможности распределять диски между разными массивами есть понятие spare-group, то есть группа, в пределах которой возможно перекидывание дисков. Таких групп может быть много — и hot-spare переносятся только между ними.
Как легко понять из вышенаписанного про mdadm/linux md, в /proc/mdstat нет и не может быть ничего про spare-group. Потому что это личные мысли и соображения mdadm’а, а ядро про это ни сном, ни духом (файлы-то в /proc создаются модулями ядра. ).
Таким образом, обеспечивать shared hot-spare можно только с с помощью mdadm. Тут два варианта: если группа указана для массива, собирающегося при загрузке (/etc/mdadm/mdadm.conf), то там можно указать hot-spare, примерно так:
(сразу отвечаю на вопрос, где столько умных слов взять — mdadm —detail —scan —verbose )
Дописано по сравнению с выводом mdadm тут только spare-group. Обратите внимание — во втором массиве НЕТ hot-spare, однако, т.к. группа указана, то в случае сбоя будет использоваться диск из другого массива с той же самой группой. В нашем случае это будет /dev/md1.
Разумеется, всё это произойдёт, только если у нас есть запущенный в режиме -F mdadm. В debian он в выводе ps выглядит так:
Самих групп при этом на одной системе может быть несколько.
Кстати, тут есть мелкая гадость: при вызове mdadm с —detail упоминания о spare-groups не будет, их нужно будет дописывать самим.
Local && global hotspare
А вот тут, увы, йок. Насколько я знаю, mdadm не поддерживает одновременно и локальные (которые будут принадлежать только одному массиву) и общие hotspare. Если есть два массива с одним spare-group, то все hot-spare из одного массива могут быть использованы на благо другого.
Сценарий не такой редкий, как кажется. Вот простенькая топология:
SYS_ARRAY
DATA_ARRAY
2 hot-spare
Логично было бы один hot-spare сделать принадлежащим только DATA_ARRAY, а второй сделать общим, чтобы использовался и как резерв для SYS_ARRAY, и как «второй уровень резерва» для DATA_ARRAY.
Увы, увы, увы, этого нет (если меня разубедят в комментариях, я буду очень рад).