У цій статті я оглядово розповім про можливості по організації 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 і буде марна до кінця синхронізації одного з томів.
Якщо ви потрапили в описану ситуацію, то не варто чекати завантаження ОС і зношування дисків.
- Відключаєте один з фізичних дисків.
- Завантажуєтесь в ОС з нормальною швидкістю.
- Розбиваєте дзеркало, перетворивши томи RAID1 в прості.
- Підключаєте назад другий диск.
- Створюєте тільки одне дзеркало для необхідного вам томи.
Опишу сценарій, при якому ви не зможете відновити деградованих масив RAID5 до здорового стану, навіть якщо для цього надані всі умови.
- Є масив RAID5 з шести дисків (Діск1-Діск6).
- Серед них є один зіпсований Діск1 (наприклад, з терабайтного обсягу пара мегабайт не читаються), але операційна система про це ще не знає і як зіпсований його не відзначила.
- За яких-небудь причин від масиву був відключений справний диск2.
- За логікою RAID5, при відмові одного диска працездатність масиву зберігається, такий масив позначається як деградованих (degraded), швидкість його роботи різко падає, потрібна синхронізація з новим справним диском.
- Справний диск2 підключається на місце. Система його пізнає як зіпсований. Щоб синхронізувати масив, цей зіпсований диск потрібно видалити з масиву RAID5 і визначити як порожній.
- Все готово для синхронізації масиву. Запускаємо виправлення масиву (repair) на порожній диск2.
- РАПТОМ синхронізація натикається на помилки читання на дійсно несправному диску Діск1 і зупиняється.
- Звістка масив залишається деградованих. Діск1 позначений як містить помилки (errors), диск2 позначений як online, проте через перерваної синхронізації не містить повних коректних даних.
- У надії на відновлення підключається абсолютно новий справний Діск7. Запускається відновлення масиву на нього.
- В результаті справний диск2 замінюється на інший справний Діск7, але синхронізація знову переривається, знайшовши помилку на несправному диску Діск1.
- І так далі по циклу.
Нічого зробити, крім як скопіювати ще читающиеся дані і пересобрать весь масив не можна.
Аби не допустити визнавати поразки, я намагався зробити наступні речі:
- Синхронізувати масив з пропуском помилок читання на диску Діск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 нарікань багато (правда теж в основному вони не дуже свіжі) - що після деградації масиву він може відновлюватися дуже довго (аж до доби), і не завжди при цьому система зберігає працездатність, тобто можна отримати тривалий простій системи.
Дуже був би цікавий Ваш практичний досвід з цього питання.