Особливості роботи програмного raid в windows server

У цій статті я оглядово розповім про можливості по організації 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 і буде марна до кінця синхронізації одного з томів.

Якщо ви потрапили в описану ситуацію, то не варто чекати завантаження ОС і зношування дисків.

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

Опишу сценарій, при якому ви не зможете відновити деградованих масив 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

Корисні посилання

Хоч це вже майже не актуально, опишу позитивний практичний досвід з організації «дзеркала» засобами ОС на прикладі 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 з нього).

До речі, а ось на RAID через драйвера Intel нарікань багато (правда теж в основному вони не дуже свіжі) - що після деградації масиву він може відновлюватися дуже довго (аж до доби), і не завжди при цьому система зберігає працездатність, тобто можна отримати тривалий простій системи.
Дуже був би цікавий Ваш практичний досвід з цього питання.

Схожі статті