Контактная информация

По всем интересующим вас вопросам связывайтесь при помощи контактной информации приведенной на этой странице!

skype: metsof
email: accusser@gmail.com

В социальных сетях...

Форма обратной связи

Авторизация

Статьи об операционной системе Linux

Сайдбар

RAID — избыточный массив независимых жестких дисков

22 февр. 2014

RAID — избыточный массив независимых жестких дисков. В этой статье мы рассмотрим администрирование программного RAID-массива для Linux на базе пакета mdadm.

Обратите внимание — в Интернете есть много устаревших руководств по RAID. В них описывается конфигурация, основанная на raidtools (этот инструментарий в современных дистрибутивах Linux уже не используется).

Основы



Пакет mdadm. Если вы создали группу дисков RAID уже в ходе инсталляции, установите пакет mdadm. В нем содержится одноименная команда для администрирования RAID.
Рекомендуется пользоваться mdadm и при установке почтового сервера (МТА — агент пересылки сообщений), чтобы в случае проблем с RAID система сообщила об этом администратору по электронной почте. Если вы еще не занимались темой почтового сервера, пока не устанавливайте такой агент. Вместо этого (в Debian и Ubuntu) при установке укажите с помощью apt-get параметр --no-install-recommends.

md_mod.

Внутри Linux за работу программного RAID отвечает драйвер поддержки многодисковых устройств (Multi Devices Driver Support). В некоторых дистрибутивах этот драйвер интегрирован прямо в ядро, в других случаях при запуске системы автоматически загружается модуль md_mod (раньше он назывался просто md). В любом случае в dmesg должны содержаться соответствующие сообщения. Убедитесь, что существует псевдофайл /proc/mdstat. В нем хранится информация о текущем состоянии системы RAID.

Модуль md_mod создает логический уровень между драйвером, отвечающим за доступ к жесткому диску, и драйвером файловой системы (например, ext4). Этот модуль создает на нескольких разделах диска новое логическое устройство, к которому может обращаться драйвер файловой системы (/dev/mdn). После завершения конфигурации RAID вы используете не определенный раздел диска, а раздел /dev/mdn, где создаете свою файловую систему.

mdadm.conf.

Основным конфигурационным файлом RAID является /etc/mdadm/ mdadm.conf. В этом файле кроме некоторых глобальных настроек RAID должны содержаться данные обо всех активных группах дисков RAID. Можно также с помощью /usr/share/mdadm/mkconf создать полностью новый конфигурационный файл. Это целесообразно делать в тех случаях, когда такой файл потерялся либо вы работаете с живым или восстановительным диском.

При такой конфигурации используется несколько необычный метод. Сначала, выполнив команду mdadm, вы создаете желаемые группы RAID или модифицируете их. Кроме того, вы дополняете имеющийся файл mdadm.conf в соответствии с действующей конфигурацией. Чтобы узнать основные показатели действующих групп RAID, выполните команду mdadm --examine -scan, а потом вставьте эти показатели с помощью >> в имеющийся конфигурационный файл.

root# mdadm --examine --scan >> /etc/mdadm/mdadm.conf


Если в файле mdadm.conf уже содержатся определенные ранее группы RAID, удалите эти сведения с помощью текстового редактора, чтобы какая-нибудь группа RAID не оказалась определена дважды. В следующих строках показано, как может быть построен файл mdadm.conf.

<code># Файл /etc/mdadm/mdadm.conf DEVICE partitions

CREATE owner=root group=disk mode=0660 auto=yes HOMEHOST <system> MAILADDR root

ARRAY /dev/rndO level=raidl num-devices=2 UUID=36c426bO:... ARRAY /dev/rndl level=raidl num-devices=2 UUID=71dfc474:... ARRAY /dev/md2 level=raidl num-devices=2 UUID=e0f65ea0:...
</code>

Статус.

Актуальная информация о статусе RAID содержится в упоминавшемся выше файле /proc/mdstat. В следующем примере мы имеем три группы RAID-1, каждая из которых состоит из двух разделов. Все три группы активны и работают без ошибок: [UU] означает, что первый и второй раздел находятся в состоянии up (то есть без проблем).

<code>root# cat /proc/mdstat

Personalities : [raidO] [raidl] [linear] [multipath]

[raid6] [raid5] [raid4] [raidlO] mdO : active raidl sdal[0] sdbl[l]

979840 blocks [2/2] [UU] mdl : active raidl sda2[0] sdb2[l]

1951808 blocks [2/2] [UU] md2 : active raidl sda3[0] sdb3[l] 387730624 blocks [2/2] [UU] unused devices: <none>
</code>

Разумеется, было бы неудобно постоянно заглядывать в этот файл и проверять, все ли в порядке. Гораздо лучше перепоручить эту задачу программе mdadm --monitor. Обычно она запускается сценарием Init-V /etc/init.d/mdadm. В зависимости от дистрибутива может потребоваться сначала соответствующим образом сконфигурировать пакет mdadm. В Ubuntu, например, для этого нужно выполнить следующую команду:

root# dpkg-reconfigure mdadm


В процессе конфигурации mdadm система отобразит четыре диалоговых окна. На первом этапе можно активизировать автоматическую проверку избыточности — один раз в месяц (в 1:06 в первое воскресенье месяца данные разделов RAID сравниваются друг с другом). Такой контроль помогает заблаговременно обнаружить ошибки в тех сегментах или файлах, которые уже давно не читались и не изменялись. Внутри системы проверка избыточности осуществляется с помощью команды checkarray, запускаемой сценарием Cron /etc/cron.d/mdadm.

На втором и третьем этапе вы активизируете наблюдение за состоянием RAID и указываете, на какой электронный адрес посылать предупреждения либо сообщения о возникновении ошибок. Внутри системы такое наблюдение осуществляется с помощью команды mdadm --monitor. Она выполняется при запуске системы с помощью /etc/init.d/mdadm, если в /etc/default/mdadm есть настройка START_ DAEM0N=true. Электронный адрес сохраняется в файле /etc/mdadm/mdadm.conf. Если возникнет проблема, программа mdadm отошлет сообщение с уведомлением на адрес администратора. Чтобы этот механизм работал, на компьютере необходимо установить почтовый агент (МТА)! Нужный электронный адрес вы можете настроить в файле /etc/mdadm/mdadm.conf с помощью переменной MAILADDR.

На четвертом этапе вы, наконец, указываете, должен ли сервер при перегрузке запускаться и в том случае, когда он обнаруживает в разделе RAID ошибку. Запускаться в таком случае должны прежде всего корневые серверы.

GRUB и RAID.

Версия GRUB 0.97 совместима только с RAID-1. Если вы работаете с GRUB 0.97, но для системного раздела выбираете другой уровень RAID, вам потребуется отдельный загрузочный раздел. С GRUB 2 ситуация обстоит лучше: если в grub.cfg загружен модуль raid, то GRUB может считать данные ядра и файла Initrd прямо из группы RAID и отдельного загрузочного раздела для этого не требуется.

Для того чтобы компьютер, имеющий на диске системный раздел RAID, загружался и в том случае, когда жесткий диск неисправен, GRUB нужно установить в загрузочном секторе каждого жесткого диска. При работе с GRUB 2 для этого просто выполняется команда grub-install /dev/mdn. В GRUB 0.97 установка на каждом диске производится вручную.

Администрирование Создание группы RAID-0


Чтобы создать группу RAID-0, вам потребуется как минимум два неиспользуемых раздела. Лучше, если эти разделы будут одинаковыми по размеру, но это необязательно. В зависимости от уровня RAID при неравном размере разделов скорость работы может быть не оптимальной или же части большого раздела могут оставаться незаполненными.

Выбранные разделы должны быть обозначены как разделы RAID. Если для секционирования диска использовалась программа fdisk, то для идентификационного номера раздела необходимо установить шестнадцатеричное значение fd, используя команду T. При работе с программой parted выполняется команда set номер_раздела raid on.

Далее разделы с названиями устройств /dev/sda3 и /dev/sdcl объединяются в систему RAID-0. Форматировать эти разделы не требуется. Команда fdisk -l отображает примерную конфигурацию:

<code>root# fdisk -l /dev/sda /dev/sdc

Disk /dev/sda: 320.0 GB, 320072933376 bytes

Device Boot Start End Blocks Id System

/dev/sdal 1 973 7815591 83 Linux

/dev/sda2 974 1034 489982+ 82 Linux swap / Solaris

/dev/sda3 1035 2251 9775552+ fd Linux raid autodetect

Disk /dev/sdc: 320.0 GB. 320072933376 bytes

Device Boot Start End Blocks Id System

/dev/sdcl 1 1217 9775521 fd Linux raid autodetect

Всего одной команды mdadm достаточно для того, чтобы создать группу RAID-0 из двух разделов — /dev/sda3 и /dev/sdcl.

root# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sda3 /dev/sdc1

mdadm: array /dev/mdO started.</code>


Затем требуется поместить файловую систему в новый виртуальный раздел / dev/mdO. Его можно подключить к файловой системе Linux командой mount. Раздел запрашивается через каталог /striped, но, разумеется, вы можете его переименовать.

<code>root# mkfs.ext4 /dev/md0

root# mkdir /striped

root# mount /dev/md0 /striped/</code>


Если все получится, нужно занести информацию о новом разделе в файл /etc/ fstab. Во всех новых дистрибутивах Linux система RAID автоматически инициализируется процессом Init-V при перезапуске.

<code># in /etc/fstab

/dev/mdO /striped ext4 defaults 0 0 /</code>

Кроме того, необходимо дополнить конфигурационный файл одной строкой mdadm.conf, описывающей новую группу RAID-0. Команда mdadm --examine --scan возвращает строку в синтаксически правильном виде.

Создание группы RAID-1



Группа RAID-1 создается тем же способом, что и RAID-0. Только команда для создания системы RAID выглядит несколько иначе и содержит --level=1 вместо --level=0:

<code>root# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda3 /dev/sdc1

mdadm: array /dev/mdO started. root# mkfs.ext4 /dev/md0</code>

Если вы уже создали в /dev/mdO раздел RAID-0, нужно отключить раздел от дерева каталогов и деактивизировать командой mdadm -stop. Только после этого вы сможете выполнить команду mdadm --create. Тем не менее mdadm распознает, что разделы /dev/sda3 и /dev/sdcl были использованы, и потребует подтвердить, что вы действительно хотите заново настроить /dev/mdO.

Тестирование группы RAID-1



Чтобы протестировать, как действует группа RAID-1, еще до того как вы сохраните там важные данные, пометьте этот раздел как неисправный:

root# mdadm /dev/md0 --fail /dev/sdc1

Если при старте системы была запущена команда mdadm --monitor, то администратор, работающий на локальном компьютере, сразу же получит по электронной почте соответствующее уведомление. После этого вы сможете работать с группой как и раньше, но теперь все изменения будут сохраняться на свободном пространстве, оставшемся на диске. Теперь /proc/mdstat отображает статус U_. Это говорит о том, что один раздел работает (U означает up), а один отсутствует (_).

<code>root# cat /proc/mdstat

mdO : active raidl sda3[l]

979840 blocks [2/1] [_U]</code>


Чтобы снова добавить /dev/sdcl к /dev/mdO, нужно специально удалить его как неисправный.

root# mdadm --remove /dev/md0 /dev/sdc1 root# mdadm --add /dev/md0 /dev/sdc1


Теперь автоматически начнется повторная синхронизация обеих разделов, на что в зависимости от размера разделов может понадобиться достаточно много времени (ориентировочно около 20 минут на 100 Гбайт). Правда, в ходе синхронизации вы можете продолжать работу. Файловая система будет работать несколько медленнее.
<code>
root# cat /proc/mdstat

mdO : active raidl sda3[l] sdcl[2] 485454656 blocks [2/1] [UJ

[>....................] recovery = 3.0^ (14577856/485454656)

finish=72.8min speed=107724K/sec root# mdadm --detail /dev/md0 (Пока синхронизация продолжается)

State Active Devices Working Devices Failed Devices Spare Devices Rebuild Status

clean, degraded, 1

2 0 1

1Ы complete

recovering

RaidDevice State

0 active sync /dev/sda3 - removed

1 spare rebuilding /dev/sdcl

(После завершения синхронизации)

Number 0 1 2

Major 3 0 22

Minor 3 0 2

/dev/md0

root# mdadm --detail

State Active Devices Working Devices Failed Devices Spare Devices

clean 2

2 0 0

RaidDevice State

0 active sync /dev/sda3

1 active sync /dev/sdc1

Number 0 1

Major 3 22

Minor 3 2
</code>

Замена неисправного жесткого диска из RAID-1


К счастью, это бывает редко, но если на жестком диске действительно появляются неисправности и mdadm пометит отдельные разделы как дефектные, все разделы этого диска необходимо специально удалить из соответствующих групп RAID.

root# mdadm --remove /dev/md0 /dev/sdc1


Кроме того, вам нужно как можно скорее заменить диск. На новом жестком диске должно быть достаточно места, чтобы создать разделы такого же размера, как и на имеющихся жестких дисках.

Будьте внимательны — из группы нужно извлечь именно неисправный диск, а не рабочий! Этот совет кажется банальным, но если на компьютере два или более конструктивно одинаковых диска, найти нужный диск не так просто, как кажется. Уникальным признаком жесткого диска является только его серийный номер! Чтобы узнать, какой серийный номер какому названию устройства соответствует, используйте команды hdparm или smartctl. Для выполнения обеих команд необходимо установить одноименные пакеты.

<code>root# smartctl -i /dev/sdc

Device Model: SAMSUNG HD403LJ Serial Number: S0NFJ1MPA07356

root# hdparm -i /dev/sdc

/dev/sdb:

Model=SAMSUNG HD403LJ, FwRev=CT100-12, Sen'alNo=S0NFJlMPA07356
</code>
После замены жесткого диска вам следует создать на новом диске разделы, которые будут не меньше, чем уже имеющиеся разделы RAID. При этом вам очень пригодится команда sfdisk. Разделы необходимо пометить как относящиеся к RAID (шестнадцатеричный идентификационный код fd). Когда эта подготовительная работа будет завершена, останется добавить разделы нового жесткого диска к группам RAID:

root# mdadm --add /dev/md0 /dev/sdc1


Теперь ядро начнет синхронизировать разделы нового жесткого диска с имеющимися данными RAID. Статус синхронизации отслеживается с помощью команды cat /proc/mdstat.

СОВЕТ



Настоятельно рекомендую вам поучиться исправлять RAID на тестовой системе, никуда не торопясь. Дефект жесткого диска можно сымитировать, пометив диск как неисправный командой mdadm —fail или на время отключив диск от сети (конечно же, не на ходу!).

Деактивизация группы RAID



Команда mdadm --stop деактивизирует группу RAID. Предварительно нужно отключить от дерева каталогов файловую систему этой группы с помощью команды umount.

root# umount /mount-verzeichnis/ root# mdadm --stop /dev/md0


Повторная активизация группы RAID



Теперь, если после выполнения mdadm --stop вы не внесли в разделы группы никаких изменений, можно снова собрать и активизировать группу RAID командой mdadm --assemble — потери данных исключаются.

<code>root# mdadm --assemble /dev/md0 /dev/sda3 /dev/sdc1

mdadm: /dev/mdO has been started with 2 drives.</code>


Анализ разделов



Во всех разделах жесткого диска, которые вы объединили в группы RAID с помощью mdadm, в специальных блоках сохраняется контекстная информация (метаданные). Эту информацию можно считать с помощью команды mdadm — -query, например чтобы узнать статус неизвестной системы.

<code>root# mdadm --query /dev/sda3

/dev/sda3: is not an md array

/dev/sda3: device 0 in 2 device active raidl mdO. Use mdadm --examine

for more detail. root# mdadm --query /dev/md0

/dev/mdO: 9.32GiB raidl 2 devices, 0 spares. Use mdadm ■ /dev/mdO: No md super block found, not an md component.

-detail for more detail.
</code>

Команда mdadm --examine возвращает подробную информацию о разделе, входящем в группу RAID:

<code>examine /dev/sda3

a92b4efc 00.90.03

ae4e4fbb:aaaf9d27:008c228b:0d7abb31 Thu Nov 9 16:55:35 2006 raidl 2 2 0

Thu Nov 9 17:02:39 2006 clean 2 2

Minor RaidDevice 3 0

1 1

root# mdadm /dev/sda3:

Magic Version UUID

Creation Time Raid Level Raid Devices Total Devices Preferred Minor Update Time State Active Devices Working Devices Number Major

0 0 3

1 1 22

State

active sync /dev/sda3 active sync /dev/sdc1
</code>

Аналогично mdadm --detail выдает подробную информацию о группе RAID:
<code>detail /dev/md0

00.90.03

Thu Nov 9 16:55:35 2006 raidl

9775424 (9.32 GiB 10.01 GB) 9775424 (9.32 GiB 10.01 GB) 2 2</code>

Удаление метаданных RAID


Как правило, бывает полезно сохранять метаданные RAID в неиспользуемых секторах раздела. Однако если позже вы пожелаете задействовать этот жесткий диск для других целей, метаданные RAID могут представлять проблему: установочные программы Linux и mdadm распознают остатки конфигурации RAID и ни за что «не признают», что теперь эти разделы нужно использовать иначе. Вам пригодится следующая команда, которую необходимо применить ко всем разделам RAID:

root# mdadm --zero-superblock /dev/sda3


Если вы пробовали работать с BIOS-RAID, можете удалить соответствующие метаданныенавсехжесткихдискахспомощьюкоманды dmraid -г -Е.

<code>root# mdadm -/dev/mdO:

Version Creation Time Raid Level Array Size Device Size Raid Devices Total Devices</code>

Читайте так же:
Менеджер логических томов (LVM)

Никакого спама, только обновления!!!

Комментарии (0)


    Услуги по MODX Revolution

    Посмотреть все услуги

    Техническая оптимизация сайта

    Подробнее & Заказать

    Создание сайта на MODX Revolution

    Подробнее & Заказать

    Перенос сайта на MODX Revolution

    Подробнее & Заказать

    Продвижение сайта на MODX

    Подробнее & Заказать