Особенности работы программного RAID в Windows Server

2010-08-10, 12:50 / Argon

В этой статье я обзорно расскажу о возможностях по организации RAID массивов встроенными средствами Windows Server и подробно о том, какие подводные камни могут встретиться при создании и эксплуатации таких массивов.

Возможности программного RAID в Windows Server

Поддерживаются следующие массивы:

  • чередующийся том (striped volume, RAID0)
  • зеркальный том (mirrored volume, RAID1)
  • том RAID5 (RAID5 volume)
  • охватывающий том (spanned volume, один логический том размещается более чем на одном физическом диске)

Динамические диски

Массивы RAID можно создавать только на динамических дисках — особая разметка физических дисков (понятная только Windows), которая обладает следующими особенностями:

  • Обычный (базовый) диск можно преобразовать в динамический только целиком.
  • Обратное преобразование динамического диска в базовый возможно, но только если с динамического диска удалить все тома.
  • Динамический диск представляет собой один большой NTFS раздел, на котором с помощью хитрой служебной информации может размещаться большое количество томов (как простых, так и RAID), имеется возможность изменять размеры простых томов штатными средствами Windows. Однако, насколько оптимально и фрагментировано будут размещаться данные, мне не известно.
  • Известные мне программы клонирования, восстановления и изменения размеров дисков не поддерживают динамические диски.
  • Динамические диски, содержащие RAID-тома, могут быть перенесены на другой компьютер с Windows Server, так как содержат необходимую информацию для правильной сборки массива.

Невозможно создать тома с разными уровнями RAID

На одной группе физических дисков можно создавать тома RAID только одного типа (уровня). Например, если у нас есть 3 физических диска, и мы создали на них том RAID5, не занимая всего пространства. Мы не сможем в свободном пространстве создавать тома другого уровня RAID (RAID0 и RAID1), а только RAID5 и простые тома.

Одновременная синхронизация томов

Если на одной группе дисков создано несколько томов RAID, то в случае какого-либо сбоя после загрузки компьютера они начинают восстанавливаться одновременно. Это лютый, бешеный EPIC FAIL! Простая ситуация: имеется два физических диска, на них создано два RAID1 тома, один под операционную систему, другой под данные.

Такая схема замечательно работает до первого сбоя (простейшие виды — внезапное отключение питания или синий экран). И тут приходит ужас. Операционная система загружается и в это же время начинает одновременно синхронизировать оба тома RAID1. Таким образом, физические диски получают конкурирующие команды для интенсивных последовательных операций сразу в трех разных физических областях. При этом механика дисков дико изнашивается, кэш бесполезен.

Со стороны такая «отказоустойчивость» выглядит следующим образом: общее быстродействие дисковой подсистемы падает раз в 20, сама ОС загрузится либо после окончания синхронизации одного из томов (минут 15, если он небольшой, гиг на 50), либо минут через 20 и будет бесполезна до конца синхронизации одного из томов.

Вышеописанное поведение я считаю недопустимым архитектурным просчетом со стороны Microsoft и удивлен тем, что эта беда не решена до сих пор со времен появления программного RAID в Windows 2000 Server.

Если вы попали в описанную ситуацию, то не стоит дожидаться загрузки ОС и изнашивания дисков.

  1. Отключаете один из физических дисков.
  2. Загружаетесь в ОС с нормальной скоростью.
  3. Разбиваете зеркало, превратив тома RAID1 в простые.
  4. Подключаете обратно второй диск.
  5. Создаете только одно зеркало для необходимого вам тома.

RAID5

Опишу сценарий, при котором вы не сможете восстановить деградировавший массив RAID5 до здорового состояния, даже если для этого предоставлены все условия.

  1. Имеется массив RAID5 из шести дисков (Диск1-Диск6).
  2. Среди них есть один сбойный Диск1 (например, из терабайтного объёма пара мегабайт не читаются), но операционная система об этом еще не знает и как сбойный его не отметила.
  3. По каким-либо причинам от массива был отключен исправный Диск2.
  4. Следуя логике RAID5, при отказе одного диска работоспособность массива сохраняется, такой массив помечается как деградировавший (degraded), скорость его работы резко падает, требуется синхронизация с новым исправным диском.
  5. Исправный Диск2 подключается на место. Система его опознает как сбойный. Чтобы синхронизировать массив, этот сбойный диск нужно удалить из массива RAID5 и определить как пустой.
  6. Все готово для синхронизации массива. Запускаем исправление массива (repair) на пустой Диск2.
  7. ВНЕЗАПНО синхронизация натыкается на ошибки чтения на действительно неисправном диске Диск1 и останавливается.
  8. Весть массив остается деградированным. Диск1 помечен как содержащий ошибки (errors), Диск2 помечен как online, однако из-за прерванной синхронизации не содержит полных корректных данных.
  9. В надежде на восстановление подключается совершенно новый исправный Диск7. Запускается восстановление массива на него.
  10. В результате исправный Диск2 заменяется на другой исправный Диск7, но синхронизация снова прерывается, найдя ошибку на неисправном диске Диск1.
  11. И так далее по циклу.

Ничего сделать, кроме как скопировать еще читающиеся данные и пересобрать весь массив нельзя.

Не желая признавать поражения, я пытался сделать следующие вещи:

  • Синхронизировать массив с пропуском ошибок чтения на диске Диск1 (ведь это всего лишь мегабайты их целого терабайта). Но Microsoft не дает такой возможности.
  • Посекторно переписать весь сбойный Диск1 на другой здоровый диск с помощью программ для клонирования. Однако, доступные мне программы с динамическими дисками не работали.

Пример грамотной реализации программного RAID

От перечисленных выше недостатков избавлена аппаратно-программная реализация RAID-контроллера, известная как Intel Matrix Storage, и недавно переименованная в Intel Rapid Storage (работает на RAID-версиях чипсетов, таких как ICH9R, ICH10R). Аппаратно-программный RAID от Intel обеспечивает многие преимущества «врослых» RAID-контроллеров:

  • возможность определить диски горячей замены
  • возможность создавать тома разного уровня RAID на одной группе дисков
  • последовательная синхронизация и проверка RAID томов на группе дисков

Основным ее недостатком, в отличии от полностью аппаратных RAID-контроллеров, остается «программность», из которой вытекают:

  • отсутствие встроенного кеша и возможности автономной работы в случае аварии
  • полностью зависит от операционной системы и драйверов
  • выполняемые операции на дисковой подсистеме нагружают основной процессор и память
  • отсутствует поддержка продвинутых вычислительно емких уровней RAID, таких как RAID6

Полезные ссылки



9 комментариев

Baf
# Комментарий от 2010-11-15, 07:38

Спасибо, было интересно почитать.
А насколько у вас большой опыт использования ICH10R ? p.s. уведомлений на комментарии нет?

Argon
# Комментарий от 2010-11-20, 15:42

Использовал интеловский RAID на самосборных персоналках, которые используются в качестве серверов для небольших предприятий… Эти «серваки» уже не один год служат, пережили несколько замен вышедших из строя дисков.

Александр
# Комментарий от 2012-01-23, 21:48

Статья очень заинтересовала посколько сам использую софт рейд. Если материнская плата не запускается насколько сложно восстановить информацию?

Argon
# Комментарий от 2012-01-24, 04:31

Одним из преимуществ софтрейда является то, что его достаточно просто перенести на другой комп: для Win RAID вообще ничего не нужно, кроме поддержки со стороны ОС, для Intel — аналогичный чип на материнке.

Stanky
# Комментарий от 2012-04-26, 02:24

«особая разметка физических дисков (понятная только Windows)
Обратное преобразование динамического диска в базовый возможно, но только если с динамического диска удалить все тома.»

В действительности, «особого» там не так уж и много, особенно, если говорить про зеркало. Так как физическая структура хранения данных полностью аналогична Basic, преобразование не составляет ни малейшего труда. Всё что нужно — в таблице разделов у типа файловой системы вместо HEX-значения 42 поставить 07 (NTFS). Правда, при определённых обстоятельствах, для части разделов может потребоваться переопределение параметров начала раздела и его длины, но это тоже выполняется более чем просто.
Такие зеркала, в случае различных сбоев, я неоднократно преобразовывал в Basic.

Argon
# Комментарий от 2012-04-27, 11:05

В случае зеркала из одного тома на весь диск, полностью согласен. Но если на динамическом диске создавались несколько томов, а потом еще их размер динамическим менялся средствами Win Disk Mgmt, то такая каша получается, что HEX редактором разбираться даже не хочется пробовать.

Stanky
# Комментарий от 2012-04-28, 00:17

Я не припомню, чтоб имел дел с единственным разделом — обычно, это было три, реже два. В любом случае, если очень нужно, то сделать это можно :) .

anim
# Комментарий от 2013-12-03, 21:29

Хоть это уже почти не актуально, опишу положительный практический опыт по организации «зеркала» средствами ОС на примере Windows XP PRO _SP3_.

Вообще в сети хватает описаний, как небольшой правкой файлов включить поддержку RAID в Windows XP _PRO_ (PRO — потому что HOME не поддерживает динамические диски, нужные для организации RAID), но писались они во времена SP2, и по изучении вопроса получается, что там хватает граблей:
— RAID включается, но после перезагрузки ОС его надо повторно активировать, что делают например через запуск .bat-файла с командами diskpart;
— приходится по новой активировать расшаренные ресурсы;
— приходится колдовать, чтобы обеспечить возможность «загрузки» со второго диска при вылете первого (вот это мне непонятно, но со слов Интернетов все так — сам не проверял), и т.д.

Так вот, в WinXP PRO _SP3_ никаких ухищрений уже не надо, все работает как и во «взрослой» Windows Server — включили зеркало (RAID1) один раз, и все работает. В том числе при поломке или отключении одного из дисков (не важно какого — они абсолютно идентичный и ОС без разницы, какой вы вынули или сломали).

Также замечу, что динамические диски прекрасно видятся при загрузке «mini WinXP» с Hiren’s Boot CD v.15 — можно например спокойно зайти на такой диск, снятый с другой машины, и скопировать нужные файлы.
Если нужно клонировать «динамический» диск / раздел, или сделать образ, это выполняется там же в Hiren’s Boot CD с помощью Norton Ghost, который тоже прекрасно с таковыми работает (примеч.: Ghost с динамическими дисками работает даже в стареньком Hiren’s v.10, хотя они и не видны при загрузке mini WinXP с него).

Плюс реализации «зеракала» средствами ОС — «бесплатность» реализации (вычислительных ресурсов для этого тоже не особо много нужно — информация пишется как всегда, но не на один, а на два диска синхронно) и легкость восстановления информации удаленно, даже силами малограмотных ИТ-шников или простых пользователей:
если «полетел» один из дисков зеркала (или Вам просто для чего-то понадобилось скопировать информацию), достаточно выключить ПК, снять жесткий диск (любой), подключить его к другому ПК с WinXP Pro или более старшей (Win2k3, Win7/8…), и он увидится как самый обычный жесткий диск. ПК, оставшийся тем временем с единственным диском, после включения продолжит работать как ни в чем не бывало — просто после возвращения диска на место, придется по новой «активировать» зеркало, чтобы система скопировала на новый диск всю информацию.
Такие дела.
p.s. И спасибо автору — без него я бы не узнал, что на «ЗЕРКАЛЕ» не стоит держать более одного раздела (КСТАТИ, ЭТО ВАЖНО — обратите внимание на этот момент!), иначе в случае поломки настанет пи$да со скоростью восстановления =)
Других «подводных» камней в использовании «зеркала» средствами WinXP/Server пока не вижу.

anim
# Комментарий от 2013-12-03, 21:34

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

Добавить комментарий