Software-raid howto розуміння raid

  1. В. Що таке RAID? Чому я завжди його використовую? О. RAID - шлях комбінування декількох дисків в одне ціле для збільшення швидкості і / або надійності. Існує кілька різних типів і реалізацій RAID, кожен зі своїми перевагами і недоліками. Наприклад, поміщаючи копію однакових даних на два диска (називається зеркализация дисків. Або RAID рівня 1), швидкість читання може бути підвищена почерговим зчитуванням з кожного диска дзеркала. В середньому, кожен диск менш зайнятий, тому що він обробляє тільки половину операцій читання (для двох дисків), або 1/3 (для трьох дисків), і т.д. На додаток, дзеркало може підвищувати надійність: якщо один диск виходить з ладу, інший диск містить копію даних. Різні шляхи комбінування дисків в один, позначаються рівнями RAID. можуть забезпечити більшу ефективність зберігання, ніж просто зеркализация, або можуть змінити продуктивність по затримках (часу доступу), або продуктивність пропускної здатності (швидкості передачі), для читання або запису, в той же час підтримується надмірність - це корисно для протидії відмов.

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

Software-RAID - набір модулів ядра, разом з утилітами управління, які реалізують чисто програмний RAID, і не вимагають незвичайної апаратури. Підсистема Linux RAID реалізована в ядрі, як рівень над низькорівневими драйверами дисків (для IDE, SCSI і Paraport пристроїв), і інтерфейсом блокових пристроїв. Файлова система, будь то ext2fs, DOS-FAT, або інша, працює поверх блочного інтерфейсу. Програмний RAID, по своїй програмній природі, схильний бути більш гнучким, ніж апаратна реалізація. Зворотний бік цього - потрібно більше процесорного часу, в порівнянні з апаратною реалізацією. Звичайно, ціна не перевершена. Крім того програмний RAID має одну важливу відмінну рису: він оперує базуючись на розділах, де кілька окремих дискових розділів збираються разом для створення розділів RAID. У цьому відмінність від більшості апаратних рішень RAID, які об'єднують разом цілі диски в масив. В апаратних RAID, факт, що масив RAID - прозорий для операційної системи, спрощує управління. У програмному, набагато більше конфігураційних опцій і варіантів, що заплутує справу.

Далі описується різниця між рівнями RAID в контексті реалізації програмного RAID в Linux.

  • RAID-linear просте об'єднання розділів для створення великого віртуального розділу. Це застосовується якщо у Вас кілька маленьких дисків, і Ви хочете створити один великий розділ. Це об'єднання не пропонує надмірності, і фактично зменшує загальну надійність: якщо один з дисків виходить з ладу, весь розділ виходить з ладу.
  • RAID-1 так само званий "зеркалізаціі" ( "mirroring"). Два (або більше) розділу, все однакового розміру, кожен містить точну копію всіх даних, блок в блок. Зеркализация дає сильний захист від відмов диска: якщо один диск відмовляє, є інший з точною копією даних. Зеркализация також може допомогти збільшити продуктивність підсистеми вводу-виводу, так як запити на читання можуть бути розділені між декількома дисками. На жаль, зеркализация також менш ефективна в сенсі ємності: два дзеркальних розділу можуть вмістити не більше даних, ніж один розділ.
  • Striping - базова концепція всіх інших рівнів RAID. stripe - безперервна послідовність дискових блоків. stripe може бути розміром з один дисковий блок, або може складатися з тисяч. Пристрої RAID поділяють містять їх розділи дисків на stripe-и; різні рівні RAID розрізняються в тому, як вони організовують stripe-и, і як дані розміщуються на них. Взаємодія між розміром stripe-ів, типовими розмірами файлів в системі, і їх становищем на диску - визначає загальну продуктивність підсистеми RAID.
  • RAID-0 подібна RAID-linear, виключаючи те, що компоненти розділів діляться на strip-и і потім чергуються. Подібно RAID-linear, результат - один великий віртуальний розділ. Так само як і в RAID-linear, це не передбачає надмірності, і теж зменшує загальну надійність: відмова одного диска вдарить по всьому. RAID-0 часто претендує на збільшення продуктивності в порівнянні RAID-linear. Однак, це може бути чи не бути справедливо, в залежності від характеристик файлової системи, типового розміру файлу в порівнянні з розміром stripe, і типу робочого навантаження. Файлова система ext2fs вже розсіює файли по розділу, намагаючись мінімально фрагментировать. Отже, на найпростішому рівні, будь-який доступ може бути виконаний до одного з декількох дисків, і таким чином, чергування stripe-ів по багатьом дискам надає реальні перевага. Однак, існує різниця в продуктивності, вона залежить від даних, робочої завантаження, і розміру stripe.
  • RAID-4 чергує stripe-и подібно RAID-0, але є потреба у додатковому розділ для розміщення інформації про парності. Парність використовується для отримання надмірності: якщо один з дисків відмовляє, дані на що залишилися дисках можуть бути використані для відтворення даних на відмовив диску. Отримуємо N дисків з даними, і один диск з парністю, stripe парності обчислюється так - береться один stripe з кожного диска з даними, і XOR-ятся разом. Отже, ємність (N + 1)-дисків масиву RAID-4 дорівнює N, що набагато краще ніж зеркализация (N + 1) дисків, і майже так само добре, як RAID-0 на N. Зауважте, що для N = 1, де один диск з даними, і один паритетний, RAID-4 еквівалентний зеркалізаціі, при цьому кожен з двох дисків копіює один одного. Однак, RAID-4 НЕ дає продуктивності читання зеркалізаціі, і має знижену продуктивність записи. По просту, це тому, що оновлення паритету вимагає читання старого паритету, перед тим, ка новий паритет може бути обчислений і записаний. При великій кількості операцій запису, паритетний диск може стати "пляшковим горлечком", тому що кожна операція запису повинна звертатися до паритетного диску.
  • RAID-5 освободжден від "пляшкового горлечка" під час запису на RAID-4 розміщенням паритетних stripe упереміш на кожному диску. Однак, продуктивність записи все ще не настільки хороша, як при зеркалізаціі, так як паритетний stripe все ж повинен бути лічений і XOR-ен перед записом. Продуктивність читання теж не така гарна, як при зеркалізаціі, так як, після цього, є тільки одна копія даних, не дві або більше. Принципова перевага RAID-5 над зеркалізаціі то, що він надає надмірність і захист від відмови одного диска, в той же час надає набагато більше ємності, коли використовується з трьома або більше дисками.
  • RAID-2 і RAID-3 рідко використовуються, і в деякій мірі стали застарілими для сучасних дискових технологій. RAID-2 подібний до RAID-4, але розміщує ECC інформацію замість паритетній. З тих пір як всі сучасні диски реалізують ECC в собі, це надає маленьку додатковий захист. RAID-2 може дати більшу цілісність даних, якщо пропало харчування в процесі запису; однак, резервні акумулятори та чисте завершення роботи можуть дати ту ж вигоду. RAID-3 подібний до RAID-4, виключаючи те, що він використовує найменший можливий розмір stripe. Як результат, будь-яка операція читання буде включати в себе всі диски, роблячи перекриття запитів вводу-виводу важким / неможливим. Для уникнення затримок при очікування обертання, RAID-3 вимагає синхронізації всіх шпинделів дисків. Більшість сучасних дисків немає можливості синхронізувати шпинделі, або, якщо і мають, не мають потрібних з'єднувачів, кабелів, і документації виробників. Ні RAID-2 ні RAID-3 не підтримуються драйверами програмного RAID в Linux.
  • Інші рівні RAID визначені різними дослідниками і постачальниками. Багато з них представляють накладення одного типу raid поверх іншого. Деякі вимагають спеціального обладнання, а інші захищені патентами. Немає єдиної схеми іменування цих рівнів. Іноді переваги цих систем невеликі, або принаймні не виявляються поки система не дуже навантажена. Виключаючи розміщення RAID-1 поверх RAID-0 / linear, Програмний RAID Linux не підтримує ніякі одного варіанти.