software RAID для дому

Основні цілі використання надлишкових масивів недорогих дисків (RAID) це поліпшення продуктивності дискової підсистеми даних і забезпечення надмірності даних.

RAID може реалізувати або за допомогою програмного забезпечення операційної системи, або він може бути реалізована за допомогою спеціального RAID контролера диска, без необхідності налаштування операційної системи взагалі. У цій статті я спробую пояснити, як налаштувати програмний RAID на Ubuntu.

Навіщо рейд вдома?

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

Типи RAID масивів

Будь то софтовий, чи хардварний RAID масив, його можна налаштувати в різних режимах. Розглянемо найпопулярніші:

Лінійний режим RAID

У лінійному RAID , контролер RAID сприймає RAID-масив у вигляді ланцюжка дисків. Дані записуються на наступний пристрій в ланцюзі тільки після того як попередній буде заповнений.

Мета лінійних RAID полягає в розміщенні великої файлові системи на декількох пристроях, без будь-якої надлишковості.

Збій у роботі жорсткого диска приведе до пошкодження даних.

RAID 0

У  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 1, дані клонуються на диску в двох примірниках. Тому цей тип RAID часто називають  дзеркальним. Кажуть: «два народи і та одна історія» — якщо один забуває деякі деталі, ви можете попросити інший щоб нагадали вам.

Коли один з дисків в наборі RAID виходить з ладу, інший продовжує функціонувати і після заміни пошкодженого диску, дані автоматично копіюються на новий. RAID 1 також надає можливість використання гарячого резервування даннх , які будуть автоматично дублюватися в разі відмови диска в RAID масиві.

RAID 1 породжує надмірність даних, без переваги швидкості , як в RAID 0. Недолік програмних RAID 1 є те що, доводиться посилати данні на запис двічі: на 2 диски, що породжує додаткове навантаження на систему. А от у випадку хард-варного RAID 1 — данні надсилаються на дисковий контролер тільки один раз, а вже дисковий контролер дублює данні. Саме тому хардварний рейд масив є рекомендований при реалізації RAID-1.

Обмеження RAID 1 в тому, що загальний розмір RAID у гігабайтах — розмір найменшого диску в RAID-масиві. На відміну від RAID 0, додатковий простір на великих пристрій не використовується.

Ілюстрація процес розподілу даних в RAID 0

RAID 4

RAID 4 працює як RAID 0, але вставляється спеціальна комірка корекції помилок парності на додатковому диску виділеному під ці потреби.

RAID 4 вимагає принаймні 3-ох дисків в RAID масиві і може пережити втрату одного диску. Коли це відбудеться, дані в ньому може бути відтворено на льоту — за допомогою інформації про парності диск RAID масиву. А після заміни зіпсованого диску, він буде заповнений втраченими даними.

RAID 4 поєднує в собі високу швидкість RAID 0 і надмірність даних RAID 1. Його основний недолік в тому, що дані данні не можна записати паралельно, оскільки для зберігання парності даних використовується інший диск. Парності можуть бути вузьким місцем. З цієї причини, RAID 4 не використовується дуже часто.

RAID 5

RAID 5 — це поліпшений RAID 4 , за допомогою чергування паритету даними між всіма дисками в наборі RAID. Це дозволяє уникнути вузьких місць паритету диска, зберігаючи при цьому багато особливостей, таких як швидкість RAID 0 і надмірності RAID 1. Як RAID 4, RAID 5 може пережити втрату одного жорсткого диску.

Для RAID 5 потрібно не менше 3 дисків або розділів.

Ілюстрація процес розподілу даних в RAID 5

Перед тим як почати

Спеціально вбудований апаратний RAID контролер дисків доступний як для IDE і SCSI дисків. Як правило, вони мають свій власний BIOS, так що ви можете налаштувати їх відразу ж після вашої системи Power On Self Test (POST). Апаратні RAID є повністю прозорими для операційної системи; залізо робить всю роботу.

Якщо апаратного RAID немає, то ви повинні знати про основні принципи, щоб дотримуватися їх при створенні програмного RAID.

IDE диски

Щоб скоротити витрати, багато малих бізнес-систем, ймовірно, використовують IDE диски, але вони мають деякі обмеження:

  • Загальна довжина кабелю IDE може бути тільки кілька футів в довжину, яких як правило вистачає в межах IDE дисків для невеликих домашніх системних блоків.
  • IDE диски не «гарячої» заміни. Ви не можете замінити їх, поки ваша система працює.
  • Тільки два пристрої можна підключити на контролер.
  • Робота шини IDE може розділятися за наявності другого пристрою на кабелі.
  • Відмова одного диска на шині IDE часто призводить до неправильної роботи другого пристрою. Це може бути смертельним, якщо у вас є два IDE диска одного і того ж RAID-масиву прикріплені до одного кабелю.

З цих причин рекомендують використовувати тільки один диск IDE при використанні RAID, особливо в корпоративному середовищі. В домашніх умовах програмний IDE-RAID може бути адекватним.

Serial ATA диски

Serial ATA диски швидко замінили IDE, або Ultra ATA диски, оскільки мають ряд переваг:

  • Кабель диска для даних може бути до одного метра в довжину, в порівнянні з 18 дюйми IDE.
  • Serial ATA має кращу обробку помилок, ніж IDE.
  • Існує тільки один диск на один кабель, що дозволяє «гарячу» заміну, або можливість заміни компонентів, і це при працюючій операційній системі, на переймаючись про вплив на інші пристрої на кабелі для передачі даних.
  • Також немає перемичок для установки на Serial ATA диску, щоб зробити його master або slave, що робить їх простими в налаштуванні.
  • IDE накопичувачі мають швидкість передачі даних: 133Mbytes/с, в той час як Serial ATA специфікація починається з 150 Мбайт/с, і до 600+ Мбайт/с.

Якщо ви не можете дозволити собі більш дорогий і швидкий SCSI диск, Serial ATA — є кращим пристроєм для програмного і апаратного RAID.

SCSI диски

SCSI жорсткі диски мають ряд особливостей, які роблять їх більш привабливими для використання в RAID ніж будь-які IDE або Serial ATA диски.

  • SCSI контролери більш терпимі до дискових помилок. Відмова одного диска має менше шансів зірвати роботу інших диски на шині.
  • SCSI кабелі можуть бути до 25 метрів, що робить їх придатними для використання в дата-центрах.
  • Набагато більше, ніж два пристрої можуть бути підключені до кабелю шини SCSI. На ньому можуть розміститися 7 (для single-ended SCSI) або 15 (для всіх інших типів SCSI) пристроїв.
  • Деякі моделі пристроїв SCSI мають підтримку «гарячої заміни», що дозволяє вам замінити їх під час роботи системи.
  • SCSI на даний час підтримує швидкість передачі даних до 640 Мбайт/с, що робить їх вельми бажаним для установок, де швидкий доступ до даних є обов'язковою умовою.

SCSI диски, як правило, дорожче, ніж диски IDE, що може зробити їх менш привабливими для домашнього використання.

Резервне копіювання системи в першу чергу

Програмний RAID створює еквівалент одного віртуального RAID диску, що складається з усіх розділів реальних дисків. Ви повинні форматнути новий RAID пристрій, що б ваша Linux система могла зберігати файли на ньому. Форматування видалить всі данні що були на дисках, тому краще всього зробити резервну копію даних які знаходять на цих розділах та на інших розділах на диску, на якому необхідно реалізувати RAID. Помилка може видалити, чи зіпсувати дані.

Конфігурація RAID в Single User Mode

Оскільки ви будете модифікувати дискову структуру вашої системи, ви повинні звернути увагу на те, що б ви єдинй користувалися системо — в single-user режимі і бажано з консолі. Це гарантує, що більшість програм та мережевих дій виключені, і що інші користувачі не можуть отримати доступ до системи, що знижує ризик пошкодження даних під час налаштування.

[root@nine-blog tmp]# init 1

Коли закінчите, вийдіть і ваша система буде завантажуватися у дефолтовому режимі, який передбачено в файлі /etc/inittab.

Конфігурація софтового RAID-масиву

Налаштування RAID під Linux вимагає ряду кроків, яких необхідно ретельно дотримуватися. У статті ми будемо налаштування RAID 1 з використанням системи з двома дисками. Розділи, які будуть використовуватися наступні:

/dev/hde1
/dev/hdf2

Зважайте на те що вивід команд може відрізнятися від ваших ;).

RAID розділи

Спочатку ви маєте виділити розділи в залежності від питу 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-масиву.

[root@nine-blog tmp]# umount /dev/hde1
[root@nine-blog tmp]# umount /dev/hdf2

Підготовка розділів за допомогою FDISK

Вам необхідно змінити тип кожного розділу в RAID-масиві на FD (Linux raid autodetect), ви це можете зробити за допомогою утиліти fdisk. Ось приклад для /dev/hde1:

[root@nine-blog tmp]# fdisk /dev/hde
The number of cylinders for this disk is set to 8355.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help):

Звернемося до допомоги FDISK

Використаємо команду m, для отримання допомоги:

Command (m for help): m
...
...
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
...
...
Command (m for help):

Визначимо ID типу

Розділ /dev/hde1 перший на диску /dev/hde. Змінимо його тип, за допомогою команди t визначивши номер розділу і код типу. Ви також можете використати команду L , що б отримати повний список ID питиів, якщо ви призабули. В моєму випадку тип для RAID-масиву це fd , він може відрізнятися в залежності від версії Linux.

Command (m for help): t
Partition number (1-5): 1
Hex code (type L to list codes): L
...
...
...
16 Hidden FAT16 61 SpeedStor f2 DOS secondary
17 Hidden HPFS/NTF 63 GNU HURD or Sys fd Linux raid auto
18 AST SmartSleep 64 Novell Netware fe LANstep
1b Hidden Win95 FA 65 Novell Netware ff BBT
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

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:

Command (m for help): w
The partition table has been altered!

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-масиву

Тепер, коли розділи підготовлені, ми повинні об'єднати їх в новий RAID розділ, який ми потім будемо форматувати і монтувати. Ось як це робиться.

Створення RAID-масиву

Ви використаємо команду mdadm з --create опцією, що б створити RAID-масив. В нашому прикладі ми використаємо --level опцію, яка відповідає RAID 1 і - -raid-devices опцію для визначення кількості розділів в масиві.

[root@nine-blog tmp]# mdadm --create --verbose /dev/md0 --level=1 \
--raid-devices=2 /dev/hde1 /dev/hdf2

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 пристрої. Перевірте, чи ініціалізація звершена.

[root@nine-blog tmp]# cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 hdg1[2] hde1[1]
4120448 blocks [2/2] [UU]

unused devices:
[root@nine-blog tmp]#

Зверніть увагу, що новий RAID пристрій називається /dev/md0. Ця інформація буде потрібна для наступного кроку.

Форматуємо новий RAID-пристрій

Ваш новий RAID-розділ зараз буде відфорфматовано. mkfs.ext3 це зробить ;) (або виконайте форматування в іншу файлову систему за бажанням).

[root@nine-blog tmp]# mkfs.ext3 /dev/md0
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
36144 inodes, 144192 blocks
7209 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
18 block groups
8192 blocks per group, 8192 fragments per group
2008 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729

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]#
Створимо файл конфігурації mdadm.conf

Ваша операційна система не запам'ятовує автоматично всі компоненти вашого RAID масиву. Ця інформація зберігається у файлі mdadm.conf.

Тут ми експортуємо вивід на екран в файл, щоб створити файл конфігурації.

[root@nine-blog tmp]# mdadm --detail --scan --verbose > /etc/mdadm.conf
Створимо точку монтування для RAID-масива

Наступний крок створить точку монтування для /dev/md0. В нашому випадку створимо її під назвою /mnt/raid

[root@nine-blog mnt]# mkdir /mnt/raid
Відредагуємо файл /etc/fstab

/etc/fstab — файл який містить список всіх розділів, які неодхідно змонтувати при завантаженні системи. Додамо рядок для RAID масиву — /dev/md0 пристрій.

/dev/md0 /mnt/raid ext3 defaults 1 2

Не використовуйте назви розділів в файлі /etc/fstab для RAID пристроїв ; тільки реальну назву, таку як /dev/md0. В старих версіях Linux, скріпт /etc/rc.d/rc.sysinit перевіряв файл /etc/fstab на наявність розділів, які використовуються в RAID масиві, тепер використовується файл конфігурації /etc/raidtab. Скріпт не автоматично стартує драйвер для RAID-масиву, якщо він не знайшов сторіку. Монтування пристроїв відбувається пізніше за завантаження, тому монтування RAID-пристрою, якщо не було завантажено драйвер може пошкодити данні.

Starting up RAID devices: md0(skipped)
Checking filesystems
/raiddata: Superblock has a bad ext3 journal(inode8)
CLEARED.
***journal has been deleted - file system is now ext 2 only***

/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 розділом. Тому вам не потрібно що б старі розділи були змонтовані. Переконайтеся, що всі посилання на них у цьому файлі закоментовані з # на початку рядка або повністю вилучені.

#/dev/hde1 /data1 ext3 defaults 1 2
#/dev/hdf2 /data2 ext3 defaults 1 2
Монтуємо новий RAID розділ

Використайте команду mount для монтування RAID-масиву. Ви можете вибрати один з методів:

  • Флаг -a команди mount в Linux, що б змонтувати всі пристрої з файлу /etc/fstab, ті які монтуються автоматично, чи не були змонтовані ще.
[root@nine-blog tmp]# mount -a
  • Ви також можете змонтувати пристрій окремо
[root@nine-blog tmp]# mount /dev/md0 /mnt/raid
Перевіряємо статус нового RAID-пристрою

Файл /proc/mdstat містить поточний статус всіх пристроїв.

[root@nine-blog tmp]# raidstart /dev/md0
[root@nine-blog tmp]# cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid5 hdg1[2] hde1[1]
4120448 blocks level 1, [2/2] [UU]

unused devices:
[root@nine-blog tmp]#
Висновок

Linux software RAID забезпечує надмірність та швидкість для розділів та дисків, але він менш стабільний та швидкий ні апаратний RAID, який забезпечеється апаратним RAID контролером дисків.

Конфігурація апаратного RAID, як правило, здійснюється за допомогою системи BIOS, коли комп'ютер завантажується, і потрібно налаштовувати тільки один раз, це абсолютно прозоро для Linux. На відміну від програмного RAID, апаратний RAID вимагає, що б цілі диски були виділені і в поєднанні з тим фактом, що він зазвичай вимагає більш швидких жорстких дисків SCSI і додаткової картки контролера а це, як правило, дорого.

Памє'тайте ці факти і прийміть їх до уваги що б прийняти правильне рішення для задоволення вашої потреби та дослідіть детальніше ці питання перед тим як продовжити. Зважування вартості в порівнянні з надійністю завжди важкий вибір для системах адміністраторів ;).

Це крос-постінг з мого блогу оригінал тут

Коментарі 4

vacula - 29 липня 2010, 11:59

Про практичну сторону справи:

Чи маєш якісь показники швидкості читання/запису для RAID 0/1/5/10?

Чи є в тебе досвід власне побудови таких рейдів і можливо також пробував «залізні» рейди. Якщо так, то на яких чіпах, які показники швидкостей? Що думаєш про NAS'и?

odevyatkov - 29 липня 2010, 12:12

У мене вдома софтовий рейд типу 1: дублювання одного розділу вже майже рік працює.

Чесно кажучи у софтового рейду типу 1 є незначна вктрата швидкості в порівнянні з хардварним (адже в софрварному рейді роботу контролера виконує пз...).

Хардварний рейд не пробував — для дому дороговато буде ;)

NAS — мені на практиці не потрібний був ще, тому нічого сказати не можу конкретного...(я програміст, а не адмін)

vacula - 29 липня 2010, 12:58

я теж дев, теж для дому)

пробував програмні RAID 0/1/5/10 — якось поділюся практичними враженнями в окремому дописі.

odevyatkov - 29 липня 2010, 13:44

мені потрібний був перший, що б данні (фтоки і документи) не втрати… швидкості для домашнього пк вистачає, тому… тільки його і пробував =)

правда єдине від кривих рук не спасає рейд =(

Коментувати
© 2009 - 2019, Розробка - соціальна ІТ спільнота.
Контакти: info@rozrobka.com
Правила користування