Работа с mdadm в Linux для организации RAID
mdadm — утилита для работы с программными RAID-массивами различных уровней. В данной инструкции рассмотрим примеры ее использования.
Установка mdadm
Утилита mdadm может быть установлена одной командой.
Если используем CentOS / Red Hat:
Если используем Ubuntu / Debian:
apt-get install mdadm
Сборка RAID
Перед сборкой, стоит подготовить наши носители. Затем можно приступать к созданию рейд-массива.
Подготовка носителей
Сначала необходимо занулить суперблоки на дисках, которые мы будем использовать для построения RAID (если диски ранее использовались, их суперблоки могут содержать служебную информацию о других RAID):
mdadm —zero-superblock —force /dev/sd
* в данном примере мы зануляем суперблоки для дисков sdb и sdc.
Если мы получили ответ:
mdadm: Unrecognised md component device — /dev/sdb
mdadm: Unrecognised md component device — /dev/sdc
. то значит, что диски не использовались ранее для RAID. Просто продолжаем настройку.
Далее нужно удалить старые метаданные и подпись на дисках:
wipefs —all —force /dev/sd
Создание рейда
Для сборки избыточного массива применяем следующую команду:
mdadm —create —verbose /dev/md0 -l 1 -n 2 /dev/sd
- /dev/md0 — устройство RAID, которое появится после сборки;
- -l 1 — уровень RAID;
- -n 2 — количество дисков, из которых собирается массив;
- /dev/sd — сборка выполняется из дисков sdb и sdc.
Мы должны увидеть что-то на подобие:
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store ‘/boot’ on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
—metadata=0.90
mdadm: size set to 1046528K
Также система задаст контрольный вопрос, хотим ли мы продолжить и создать RAID — нужно ответить y:
Continue creating array? y
Мы увидим что-то на подобие:
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
. и находим информацию о том, что у наших дисков sdb и sdc появился раздел md0, например:
.
sdb 8:16 0 2G 0 disk
??md0 9:0 0 2G 0 raid1
sdc 8:32 0 2G 0 disk
??md0 9:0 0 2G 0 raid1
.
* в примере мы видим собранный raid1 из дисков sdb и sdc.
Создание файла mdadm.conf
В файле mdadm.conf находится информация о RAID-массивах и компонентах, которые в них входят. Для его создания выполняем следующие команды:
echo «DEVICE partitions» > /etc/mdadm/mdadm.conf
mdadm —detail —scan —verbose | awk ‘/ARRAY/
DEVICE partitions
ARRAY /dev/md0 level=raid1 num-devices=2 metadata=1.2 name=proxy.dmosk.local:0 UUID=411f9848:0fae25f9:85736344:ff18e41d
* в данном примере хранится информация о массиве /dev/md0 — его уровень 1, он собирается из 2-х дисков.
Создание файловой системы и монтирование массива
Создание файловой системы для массива выполняется также, как для раздела:
* данной командой мы создаем на md0 файловую систему ext4.
Примонтировать раздел можно командой:
* в данном случае мы примонтировали наш массив в каталог /mnt.
Чтобы данный раздел также монтировался при загрузке системы, добавляем в fstab следующее:
/dev/md0 /mnt ext4 defaults 1 2
Для проверки правильности fstab, вводим:
Мы должны увидеть примонтированный раздел md, например:
/dev/md0 990M 2,6M 921M 1% /mnt
Информация о RAID
Посмотреть состояние всех RAID можно командой:
В ответ мы получим что-то на подобие:
md0 : active raid1 sdc[1] sdb[0]
1046528 blocks super 1.2 [2/2] [UU]
* где md0 — имя RAID устройства; raid1 sdc[1] sdb[0] — уровень избыточности и из каких дисков собран; 1046528 blocks — размер массива; [2/2] [UU] — количество юнитов, которые на данный момент используются.
** мы можем увидеть строку md0 : active(auto-read-only) — это означает, что после монтирования массива, он не использовался для записи.
Подробную информацию о конкретном массиве можно посмотреть командой:
* где /dev/md0 — имя RAID устройства.
Version : 1.2
Creation Time : Wed Mar 6 09:41:06 2019
Raid Level : raid1
Array Size : 1046528 (1022.00 MiB 1071.64 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Wed Mar 6 09:41:26 2019
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : proxy.dmosk.local:0 (local to host proxy.dmosk.local)
UUID : 304ad447:a04cda4a:90457d04:d9a4e884
Events : 17
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
- Version — версия метаданных.
- Creation Time — дата в время создания массива.
- Raid Level — уровень RAID.
- Array Size — объем дискового пространства для RAID.
- Used Dev Size — используемый объем для устройств. Для каждого уровня будет индивидуальный расчет: RAID1 — равен половине общего размера дисков, RAID5 — равен размеру, используемому для контроля четности.
- Raid Devices — количество используемых устройств для RAID.
- Total Devices — количество добавленных в RAID устройств.
- Update Time — дата и время последнего изменения массива.
- State — текущее состояние. clean — все в порядке.
- Active Devices — количество работающих в массиве устройств.
- Working Devices — количество добавленных в массив устройств в рабочем состоянии.
- Failed Devices — количество сбойных устройств.
- Spare Devices — количество запасных устройств.
- Consistency Policy — политика согласованности активного массива (при неожиданном сбое). По умолчанию используется resync — полная ресинхронизация после восстановления. Также могут быть bitmap, journal, ppl.
- Name — имя компьютера.
- UUID — идентификатор для массива.
- Events — количество событий обновления.
- Chunk Size (для RAID5) — размер блока в килобайтах, который пишется на разные диски.
Подробнее про каждый параметр можно прочитать в мануале для mdadm:
Также, информацию о разделах и дисковом пространстве массива можно посмотреть командой fdisk:
Конфигурирование программного RAID-массива в Fedora при инсталляции системы с использованием Disk Druid
/dev/sda и второй /dev/sdb . BIOS был настроен с отключенным встроенным SATA RAID , и оба диска управлялись непосредственно BIOS. Так операционная система видит два жестких диска .
0. Итак …
Необходимо выполнить следующее , чтобы достичь цели :
- Создание разделов и настройка RAID с помощью Disk Druid
- Построение массивов RAID
- Настройка GRUB
- Тестирование
Дополнительные важные шаги :
- Проверить состояние RAID и установить мониторинг RAID
- Восстановление диска после сбоя ( не дай бог )
1. Создание разделов и настройка RAID с помощью Disk Druid
Во время установки Fedora , вам будет предложено автоматическое разбиение с помощью Disk Druid или разбивка на разделы вручную. Независимо от того, что вы выберете, вы должны удалить все существующие разделы и начать с чистых дисков ( NB: это, конечно, удалит все ваши данные ) :
Вы должны создать 3 раздела : /boot, swap и / (root — корень) . Наша цель состоит в том , чтобы иметь коренной и / boot разделы на RAID1 . Н еразумно ставить swap на программный RAID, так как это создаст излишнюю нагрузку .
Важно: раздел / boot должен быть первым на диске , т.е. начаться с цилиндра 1. Кроме того , убедитесь, что вы установили « Force to be a primary partition» для каждого раздела , который вы создаете . Загрузочный раздел ( / boot) размером 100MB достаточен для большинства конфигураций .
Давайте начнем с создания раздела /boot ( загрузки). Нажмите на кнопку RAID и выберите « Создать программный RAID раздел «( «Create a software RAID partition») :
Для типа файловой системы выберите « Software RAID», выберите первый диск и установите фиксированный размер 100 Мб :
Повторите то же самое для второго диска , в результате чего появятся два программных RAID раздела по 100MB , по одному на каждом диске . Эти разделы готовы для RAID устройства и создания точки монтирования :
Нажмите на кнопку RAID и выберите « Создать RAID устройство «( «Create a RAID device»). Для точки монтирования выберите «/ boot «, RAID Level должно быть RAID1 для устройства md0 , как показано на следующем рисунке :
Теперь создайте раздел подкачки( swap) . Размер раздела подкачки должен, по крайней мере , соответствовать размеру оперативной памяти. swap не должен находиться на программном RAID , так что все что вам нужно сделать , это нажать на New, и создать swap на каждом жестком диске. Результатом будет два раздела подкачки, каждый на отдельном диске :
Теперь, после создания /boot и /swap разделов , необходимо выделить оставшееся свободное пространство как md1 и создать корневой(root) раздел на нем . Вы должны быть уже знакомы с шагами . Окончательные результаты разбиения должны быть похожи на следующий рисунок:
Завершите установку Fedora . После перезагрузки система , вероятно, будет остановлена д о загрузки GRUB. С ообщение об ошибке может варьироваться между ошибками в файловой системе , паникой ядра и ошибки GRUB 17 .
Не разочаровывайтесь (пока) , поскольку есть еще несколько действий , которые необходимо предпринять .
2. Построение массивов RAID
Загрузитесь с первого установочного компакт-диска , но вместо того, чтобы начинать установку, выберите « linux rescue «, чтобы запустить командную строку в режиме восстановления . В командной строке установите новый root и постройте массив RAID :
3. Настройка GRUB
Первый диск ( на моей системе это /dev/sda ) еще не стал загрузочным. В следующих действиях мы завершаем установку загрузчика GRUB на обоих дисках и устанавливаем /boot как загрузочный.
Продолжаем работу в командной строке режима восстановления , и загружаем оболочку GRUB :
4. Тест
Лучший способ проверить состоит в том, чтобы физически отключить каждый диск, и посмотреть, загрузится ли система с другого подключенного диска ( убедитесь, что вы выключили систему , прежде чем отсоединять диск ).
Важно: Тестирование вызывает разрушение (degraded) вашего RAID . Это означает, что после того, как вы заново подключили диск, вы должны hotadd диск обратно в массив с помощью команды
Если тест завершен успешно , и ваша система загружается с каждого диска , то вы в основном достигли нужного результата . Хотя я полагаю, что вы будете продолжать следующие процедуры , чтобы узнать больше о более серьезном кризисе (стучу по дереву).
5. Проверка состояния RAID и мониторинг состояния RAID
Есть несколько способов проверить текущее состояние вашего RAID, но лучше всего использовать команду mdadm —detail . В следующем примере вы можете видеть, что RAID ухудшается (degraded). Только /dev/sdb1 является активным , а другой /dev/sda1 отсутствует в RAID.
Другие способы проверки RAID заключаются в проверке системного журнала :