Конфигурирование RAID
Что такое RAID?
RAID (Redundant Array of Inexpensive Disks) представляет из себя механизм объединения нескольких разделов или отдельных жестких дисков в большие или более надежные виртуальные диски. Изначально было определено большое число различных типов (уровней) RAID, но прижилось только три: RAID-0 (объединение дисков), RAID-1 (зеркалирование), and RAID-5 (объединение с сохранением контрольных сумм). RAID-4 также изредка используется; он достаточно близок к RAID-5, но контрольные суммы размещаются на специально выделенном устройстве, а не распределяются по дискам.
В этом руководстве обсуждается "new-style" RAID для Linux (он входит в ядра версии 2.4 и 2.6, для более ранних версий существуют backport'ы). "Old-style" RAID, изначально использовавшийся в версиях 2.0 и 2.2, содержит ошибки, и его использование не рекомендуется. По своей сути "new-style" представляет из себя 0.90 RAID layer, разработанный Ingo Molnar и др.
Использование RAID массива
Работу с RAID массивами можно разделить на две части. Простейшей задачей можно считать монтирование RAID. Как только виртуальное устройство RAID сконфигурировано, для команды mount оно выглядит как обычное блочное устройство. RAID массив после его создания носит название вида /dev/mdN и может быть смонтирован следующим образом:
% mount /dev/md0 /home
Также вы можете включить монтирование виртуального RAID раздела в /etc/fstab (как правило, это наилучшее решение). Драйвер устройства считывает суперблоки сырых разделов диска для сборки сконфигурированного раздела RAID.
Более сложной задачей (или более многоступенчатой) является создание RAID устройства из соответствующих сырых разделов. Вы можете создать раздел RAID при помощи программы mkraid в сочетании с конфигурационным файлом /etc/raidtab.
Так же вы можете воспользоваться новой программой mdadm, при помощи которой, вы можете манипулировать RAID-устройствами без необходимости править конфигурационные файлы. В большинстве дистрибутивов mdadm вытесняет raidtools (который включает mkraid), но в этом руководстве
обсуждается именно mkraid, для того, чтобы соответствовать требованиям, предъявляемым экзаменом LPI. Используемые подходы в обоих случаях сходны, но вам будет необходимо справиться со справочным руководством man по mdadm для изучения опций командной строки.
Формат /etc/raidtab
В файле /etc/raidtab используются следующие поля для описания компонентов RAID. Этот список не является исчерпывающим.
-
raiddev: Раздел виртуального диска, предоставляемого RAID (/dev/md?). Это устройство, с которым могут работать mkfs и fsck, оно может быть подмонтировано как обычный дисковый раздел.
-
raid-disk: Раздел используемый при создании RAID. Он должен иметь тип раздела 0xFD, установленный при помощи fdisk или подобной программы.
-
spare-disk: Эти диски (как правило, это один диск) обычно остаются не задействованными. В случае если один из дисков, входящих в raid, выходит из строя, spare диск начинает выступать в качестве его замены.
Конфигурирование RAID-0
RAID-0 или "disk striping" дает большую производительность при операциях ввода/вывода ценой уменьшения общей надежности (выход из строя одного диска из raid-массива может привести к утрате всего устройства RAID). В качестве примера ниже приведен /etc/raidtab для создания устройства RAID-0:
raiddev /dev/md0
raid-level 0
nr-raid-disks 2
nr-spare-disks 0
chunk-size 32
persistent-superblock 1
device /dev/sda2
raid-disk 0
device /dev/sdb2
raid-disk 1
|
Здесь определено виртуальное устройство RAID-0, имеющее название /dev/md0. Первые 32 KB устройства /dev/md0 выделяются на /dev/sda2, следующие 32 KB на /dev/sdb2, третьи на /dev/sda2 и т.д.
Для создания устройства выполните следующую команду:
При использовании mdadm вместо файла /etc/raidtab используются опции.
Конфигурирование RAID-1
RAID-1 или "disk mirroring" просто дублирует данные на обоих блочных устройствах. RAID-1 великолепно справляется с задачами защиты от аппаратных сбоев, но заметно снижает производительность. RAID-1 в целом стоит дороже, так как половина вашего дискового пространства резервируется. Например:
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
nr-spare-disks 1
persistent-superblock 1
device /dev/sdb6
raid-disk 0
device /dev/sdc5
raid-disk 1
device /dev/sdd5
spare-disk 0
|
Данные, записываемые на /dev/md0, будут сохранены и на /dev/sdb6 и на /dev/sdc5. Устройство /dev/sdd5 сконфигурировано как hot spare. В случае сбоя на устройстве /dev/sdb6 или /dev/sdc5, данные будут перенесены на /dev/sdd5, и оно будет переведено во включенное состояние для замены сбойного устройства.
Конфигурирование RAID-5
RAID-5 требует, по крайней мере, трех устройств и использует коррекцию ошибок для получения преимуществ, предоставляемых распределенными дисками, вместе с устойчивостью к сбою одного из устройств. Положительным моментом является необходимость использования только одного дополнительного устройства для обеспечения надежности. Отрицательным моментом является большая сложность RAID-5; при возникновении сбоя в одном из устройств, он переходит в режим degraded mode, который существенно снижает пропускную способность операций ввода/вывода, пока не будет завершена процедура подключения резервного spare-диска и перекачивание на него данных.
raiddev /dev/md0
raid-level 5
nr-raid-disks 7
nr-spare-disks 0
persistent-superblock 1
parity-algorithm left-symmetric
chunk-size 32
device /dev/sda3
raid-disk 0
device /dev/sdb1
raid-disk 1
device /dev/sdc1
raid-disk 2
device /dev/sdd1
raid-disk 3
device /dev/sde1
raid-disk 4
device /dev/sdf1
raid-disk 5
device /dev/sdg1
raid-disk 6
|
Использование mke2fs или mke3fs
Если вы форматируете виртуальные устройства RAID-5 при помощи e2fs или e3fs, вы должны обращать внимание на опцию stride. Опция -R stride=nn позволяет mke2fs размещать данные файловой системы ext2 так, что они лучше воспринимаются RAID-устройством.
Если chunk size установлен в 32 KB, это означает, что эти 32 KB последовательных данных будут размещаться на одном диске. Если файловая система ext2 имеет размер блока в 4 KB, то на восемь блоков файловой системы будет приходиться один array chunk. Мы можем указать эту информацию файловой системе, запустив команду:
% mke2fs -b 4096 -R stride=8 /dev/md0
|
Производительность RAID-5 существенно увеличивается при создании файловой системы с правильной информацией о stride.
Поддержка в ядре, обслуживание сбоев
Включение в ядре опции persistent-superblock дает возможность ядру стартовать RAID автоматически при загрузке системы. New-style RAID использует persistent superblock и поддерживается в ядрах 2.4 и 2.6. Для устаревших ядер версий 2.0 и 2.2 доступны соответствующие патчи.
При выходе из строя устройства происходит следующее:
-
RAID-0: Все данные теряются;
-
RAID-1/RAID-5: Сбойное устройство отключается, а spare-диск (если он имеется) включается, и данные переносятся на него.
Документ "The Software-RAID HOWTO" из Linux HOWTO project описывает переключение между устройствами при сбоях или обновлении устройств, включая hot-swap диски, и описывает случаи, когда необходима перезагрузка. Обычно, SCSI (или Firewire) устройства поддерживают горячую замену, а IDE устройства -- нет.
|