Час відновлення 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 допомагає попередити та частково виправити невідповідності даних.

Нарешті, головне правило зберігання цінних даних – тримати та оновлювати їх резервні копії.