Основні цілі використання надлишкових масивів недорогих дисків (RAID) це поліпшення продуктивності дискової підсистеми даних і забезпечення надмірності даних.
RAID може реалізувати або за допомогою програмного забезпечення операційної системи, або він може бути реалізована за допомогою спеціального RAID контролера диска, без необхідності налаштування операційної системи взагалі. У цій статті я спробую пояснити, як налаштувати програмний RAID на Ubuntu.
Для домашнього використання RAID-масиви в принципі не потрібні, але якщо ви хочете підстрахуватися, що б не втратити ваші важливі дані (наприклад фотографії – момент не повториш, чи ваші документи – багаторічну працю, тощо) разом з жорстким диском – то софтвий RAID-масив найкращий вихід (співвідношення ціна-якість). Також можна використати RAID для пришвидшення роботи комп’ютера. Якщо ви надумали реалізувати софтовий рейд, чи просто ознайомитися з цією ідеєю – тоді продовжимо!
Будь то софтовий, чи хардварний RAID масив, його можна налаштувати в різних режимах. Розглянемо найпопулярніші:
У лінійному RAID, контролер RAID сприймає RAID-масив у вигляді ланцюжка дисків. Дані записуються на наступний пристрій в ланцюзі тільки після того як попередній буде заповнений.
Мета лінійних RAID полягає в розміщенні великої файлові системи на декількох пристроях, без будь-якої надлишковості.
Збій у роботі жорсткого диска приведе до пошкодження даних.
У RAID 0, RAID контролер намагається рівномірно розподіляти дані по всіх дисках в RAID-масиві.
Уявіть що диск це тарілка, данні – це торт. У вас є 4-торти: шоколадний, ванільний, вишневий, полуничний і 4 тарілки. Процес ініціалізації RAID 0, ділить торти і продає скибочки на всі тарілки. RAID 0 драйвер зробить так що операційна система буде вважати, що торти цілі та розміщені на одній великій тарілці. Наприклад, 4 жорстких диска ємкістю по 9GB налаштованих в RAID 0-масив для операційної системи – це буде один диск на 36 ГБ.
Як і лінійний RAID, RAID 0, призначений для розміщення великих файлових систем на декількох пристроях без будь-якої надлишковості. Перевага RAID 0, швидкості доступу до даних. Файл, який розміщений на чотирьох дисках можна читати в чотири рази швидше. Також RAID 0 часто називають смугою.
RAID 0 може містити диски нерівних розмірів. Коли закінчується вільне місце на маленьких дисках, рейд продовжує чергування, використовуючи вільне місце на інших дисках (більших). Коли це відбувається, швидкість доступу до даних нижче в цій частині даних, так як загальна кількість доступних дисків RAID знижується. З цієї причини, RAID 0 найкраще використовувати з дисками однакового розміру.
У RAID 1, дані клонуються на диску в двох примірниках. Тому цей тип RAID часто називають дзеркальним. Кажуть: «два народи і та одна історія» – якщо один забуває деякі деталі, ви можете попросити інший щоб нагадали вам.
Коли один з дисків в наборі RAID виходить з ладу, інший продовжує функціонувати і після заміни пошкодженого диску, дані автоматично копіюються на новий. RAID 1 також надає можливість використання гарячого резервування даннх, які будуть автоматично дублюватися в разі відмови диска в RAID масиві.
RAID 1 породжує надмірність даних, без переваги швидкості, як в RAID 0. Недолік програмних RAID 1 є те що, доводиться посилати данні на запис двічі: на 2 диски, що породжує додаткове навантаження на систему. А от у випадку хард-варного RAID 1 – данні надсилаються на дисковий контролер тільки один раз, а вже дисковий контролер дублює данні. Саме тому хардварний рейд масив є рекомендований при реалізації RAID-1.
Обмеження RAID 1 в тому, що загальний розмір RAID у гігабайтах – розмір найменшого диску в RAID-масиві. На відміну від RAID 0, додатковий простір на великих пристрій не використовується.
RAID 4 працює як RAID 0, але вставляється спеціальна комірка корекції помилок парності на додатковому диску виділеному під ці потреби.
RAID 4 вимагає принаймні 3-ох дисків в RAID масиві і може пережити втрату одного диску. Коли це відбудеться, дані в ньому може бути відтворено на льоту – за допомогою інформації про парності диск RAID масиву. А після заміни зіпсованого диску, він буде заповнений втраченими даними.
RAID 4 поєднує в собі високу швидкість RAID 0 і надмірність даних RAID 1. Його основний недолік в тому, що дані данні не можна записати паралельно, оскільки для зберігання парності даних використовується інший диск. Парності можуть бути вузьким місцем. З цієї причини, RAID 4 не використовується дуже часто.
RAID 5 – це поліпшений RAID 4, за допомогою чергування паритету даними між всіма дисками в наборі RAID. Це дозволяє уникнути вузьких місць паритету диска, зберігаючи при цьому багато особливостей, таких як швидкість RAID 0 і надмірності RAID 1. Як RAID 4, RAID 5 може пережити втрату одного жорсткого диску.
Для RAID 5 потрібно не менше 3 дисків або розділів.
Спеціально вбудований апаратний RAID контролер дисків доступний як для IDE і SCSI дисків. Як правило, вони мають свій власний BIOS, так що ви можете налаштувати їх відразу ж після вашої системи Power On Self Test (POST). Апаратні RAID є повністю прозорими для операційної системи; залізо робить всю роботу.
Якщо апаратного RAID немає, то ви повинні знати про основні принципи, щоб дотримуватися їх при створенні програмного RAID.
Щоб скоротити витрати, багато малих бізнес-систем, ймовірно, використовують IDE диски, але вони мають деякі обмеження:
З цих причин рекомендують використовувати тільки один диск IDE при використанні RAID, особливо в корпоративному середовищі. В домашніх умовах програмний IDE-RAID може бути адекватним.
Serial ATA диски швидко замінили IDE, або Ultra ATA диски, оскільки мають ряд переваг:
Якщо ви не можете дозволити собі більш дорогий і швидкий SCSI диск, Serial ATA – є кращим пристроєм для програмного і апаратного RAID.
SCSI жорсткі диски мають ряд особливостей, які роблять їх більш привабливими для використання в RAID ніж будь-які IDE або Serial ATA диски.
SCSI диски, як правило, дорожче, ніж диски IDE, що може зробити їх менш привабливими для домашнього використання.
Програмний RAID створює еквівалент одного віртуального RAID диску, що складається з усіх розділів реальних дисків. Ви повинні форматнути новий RAID пристрій, що б ваша Linux система могла зберігати файли на ньому. Форматування видалить всі данні що були на дисках, тому краще всього зробити резервну копію даних які знаходять на цих розділах та на інших розділах на диску, на якому необхідно реалізувати RAID. Помилка може видалити, чи зіпсувати дані.
Оскільки ви будете модифікувати дискову структуру вашої системи, ви повинні звернути увагу на те, що б ви єдинй користувалися системо – в single-user режимі і бажано з консолі. Це гарантує, що більшість програм та мережевих дій виключені, і що інші користувачі не можуть отримати доступ до системи, що знижує ризик пошкодження даних під час налаштування.
Коли закінчите, вийдіть і ваша система буде завантажуватися у дефолтовому режимі, який передбачено в файлі /etc/inittab.
Налаштування RAID під Linux вимагає ряду кроків, яких необхідно ретельно дотримуватися. У статті ми будемо налаштування RAID 1 з використанням системи з двома дисками. Розділи, які будуть використовуватися наступні:
Зважайте на те що вивід команд може відрізнятися від ваших
.
Спочатку ви маєте виділити розділи в залежності від питу RAID-масиву, який в будете реалізовувати. В нашому прикладі ми будемо робити RAID-1, тому нам необхідно два однакових розділи за обємом на різних дисках.
Для початку використаємо команду fdisk -l для перегляду всіх змонтованих та не змонтованих розділів доступних у вашій системі. Ви також можете використати команду df -k, яка покаже тільки змонтовані файлові системи.
Ці дві команди повинні допомогти вам з легкістю визначити розділи, які ви хочете використовувати. Ось приклад виводу цих команд:
[root@nine-blog tmp]# fdisk -l
Disk /dev/hda: 12.0 GB, 12072517632 bytes
255 heads, 63 sectors/track, 1467 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 144 1052257+ 83 Linux
/dev/hda3 145 209 522112+ 82 Linux swap
/dev/hda4 210 1467 10104885 5 Extended
/dev/hda5 210 655 3582463+ 83 Linux
…
…
/dev/hda15 1455 1467 104391 83 Linux
[root@nine-blog tmp]#
[root@nine-blog tmp]# df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda2 1035692 163916 819164 17% /
/dev/hda1 101086 8357 87510 9% /boot
/dev/hda15 101086 4127 91740 5% /data1
…
…
…
/dev/hda7 5336664 464228 4601344 10% /var
[root@nine-blog tmp]#
Ви маєте переконатися що розділи відмонтовані, перед створенням RAID-масиву.
Вам необхідно змінити тип кожного розділу в RAID-масиві на FD (Linux raid autodetect), ви це можете зробити за допомогою утиліти fdisk. Ось приклад для /dev/hde1:
Command (m for help):
Використаємо команду m, для отримання допомоги:
Розділ /dev/hde1 перший на диску /dev/hde. Змінимо його тип, за допомогою команди t визначивши номер розділу і код типу. Ви також можете використати команду L, що б отримати повний список ID питиів, якщо ви призабули. В моєму випадку тип для RAID-масиву це fd, він може відрізнятися в залежності від версії Linux.
Command (m for help):
Використаємо команду р, що б отримати нову таблицю розділів:
Command (m for help): p
Disk /dev/hde: 4311 MB, 4311982080 bytes
16 heads, 63 sectors/track, 8355 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks Id System
/dev/hde1 1 4088 2060320+ fd Linux raid autodetect
/dev/hde2 4089 5713 819000 83 Linux
/dev/hde4 6608 8355 880992 5 Extended
/dev/hde5 6608 7500 450040+ 83 Linux
/dev/hde6 7501 8355 430888+ 83 Linux
Command (m for help):
Використаємо команду w для збереження змін на диск /dev/hde:
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@nine-blog tmp]#
Помилки, як наведено вище, будуть з’являтися, якщо на диску містяться змонтовані розділи.
Для стислості, я не буду показувати аналогічні дії ля іншого розділу (або ж розділів, в залежності від вибраного типу RAID-масиву). Нам просто необхідно пам’ятати які зміни треба зробити для іншого розділу. Все по аналогії
.
Тепер, коли розділи підготовлені, ми повинні об’єднати їх в новий RAID розділ, який ми потім будемо форматувати і монтувати. Ось як це робиться.
Ви використаємо команду mdadm з –create опцією, що б створити RAID-масив. В нашому прикладі ми використаємо –level опцію, яка відповідає RAID 1 і --raid-devices опцію для визначення кількості розділів в масиві.
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 64K
mdadm: /dev/hde1 appears to contain an ext2fs file system
size=48160K mtime=Sat Jan 27 23:11:39 2007
mdadm: /dev/hdf2 appears to contain an ext2fs file system
size=48160K mtime=Sat Jan 27 23:11:39 2007
mdadm: size set to 48064K
Continue creating array? y
mdadm: array /dev/md0 started.
[root@nine-blog tmp]#
/proc/mdstat файл містить інформацію про RAID пристрої. Перевірте,чи ініціалізація звершена.
unused devices:
[root@nine-blog tmp]#
Зверніть увагу, що новий RAID пристрій називається /dev/md0. Ця інформація буде потрібна для наступного кроку.
Ваш новий RAID-розділ зараз буде відфорфматовано. mkfs.ext3 це зробить
(або виконайте форматування в іншу файлову систему за бажанням).
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 33 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@nine-blog tmp]#
Ваша операційна система не запам’ятовує автоматично всі компоненти вашого RAID масиву. Ця інформація зберігається у файлі mdadm.conf.
Тут ми експортуємо вивід на екран в файл, щоб створити файл конфігурації.
Наступний крок створить точку монтування для /dev/md0. В нашому випадку створимо її під назвою /mnt/raid
/etc/fstab – файл який містить список всіх розділів, які неодхідно змонтувати при завантаженні системи. Додамо рядок для RAID масиву – /dev/md0 пристрій.
Не використовуйте назви розділів в файлі /etc/fstab для RAID пристроїв; тільки реальну назву, таку як /dev/md0. В старих версіях Linux, скріпт /etc/rc.d/rc.sysinit перевіряв файл /etc/fstab на наявність розділів, які використовуються в RAID масиві, тепер використовується файл конфігурації /etc/raidtab. Скріпт не автоматично стартує драйвер для RAID-масиву, якщо він не знайшов сторіку. Монтування пристроїв відбувається пізніше за завантаження, тому монтування RAID-пристрою, якщо не було завантажено драйвер може пошкодити данні.
/raiddata: The filesystem size (according to the superblock) is 2688072 blocks.
The physical size of the device is 8960245 blocks.
Either the superblock or the partition table is likely to be corrupt!
/boot: clean, 41/26104 files, 12755/104391 blocks
/raiddata: UNEXPECTED INCONSISTENCY; Run fsck manually (ie without -a or -p options).
Якщо ви не знайомі з файлом /etc/fstab використайте команду man fstab щоб отримати докладні пояснення кожного стовпця що він містить.
/dev/hde1, /dev/hdf2 розділи замінені одним /dev/md0 розділом. Тому вам не потрібно що б старі розділи були змонтовані. Переконайтеся, що всі посилання на них у цьому файлі закоментовані з # на початку рядка або повністю вилучені.
Використайте команду mount для монтування RAID-масиву. Ви можете вибрати один з методів:
Файл /proc/mdstat містить поточний статус всіх пристроїв.
unused devices:
[root@nine-blog tmp]#
Linux software RAID забезпечує надмірність та швидкість для розділів та дисків, але він менш стабільний та швидкий ні апаратний RAID, який забезпечеється апаратним RAID контролером дисків.
Конфігурація апаратного RAID, як правило, здійснюється за допомогою системи BIOS, коли комп’ютер завантажується, і потрібно налаштовувати тільки один раз, це абсолютно прозоро для Linux. На відміну від програмного RAID, апаратний RAID вимагає, що б цілі диски були виділені і в поєднанні з тим фактом, що він зазвичай вимагає більш швидких жорстких дисків SCSI і додаткової картки контролера а це, як правило, дорого.
Памє’тайте ці факти і прийміть їх до уваги що б прийняти правильне рішення для задоволення вашої потреби та дослідіть детальніше ці питання перед тим як продовжити. Зважування вартості в порівнянні з надійністю завжди важкий вибір для системах адміністраторів
.