Создание программного RAID массива (mdadm)

Администрирование linux
Ответить
ustim
Администратор
Сообщения: 130
Зарегистрирован: 03 июн 2021, 09:01
Откуда: Краснодар
Контактная информация:

Создание программного RAID массива (mdadm)

Сообщение ustim »

Утилита mdadm служит для организации и обслуживания RAID.
Поддерживает рэйды - 0,1,4,5,6,10

Для создания рэйда используется строка из набора команд:
sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sda /dev/sdb /dev/sdc
  • --create - Говорит нам о том, что мы создаем RAID
  • --level=5 - Указываем уровень RAID
  • --raid-devices=3 - Указываем кол-во устройств, используемых для RAID
  • /dev/sda /dev/sdb /dev/sdc либо сокращенно /dev/sd{a,b,c} - Указываем сами устройства
Для наблюдения за RAID используется команда
cat /proc/mdstat

Для форматирования RAID в формат EXT4 используется команда
mkfs.ext4 /dev/md0

А теперь собственно сама установка
1. Устанавливаем утилиту mdadm

Код: Выделить всё

apt install mdadm 
2. Смотрим наши диски в системе

Код: Выделить всё

ls -l /dev | grep sd
и выбираем, какие будем объединять в массив.
3. Подготавливаем диски
  • в данном примере мы зануляем суперблоки для дисков sda sdb и sdc

Код: Выделить всё

mdadm --zero-superblock --force /dev/sd{a,b,c}
  • Далее нужно удалить старые метаданные и подпись на дисках

Код: Выделить всё

wipefs --all --force /dev/sd{a,b,c}
4. Создание RAID массива
После подготовки нужных дисков, приступаем к созданию массива RAID5

Код: Выделить всё

mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sda /dev/sdb /dev/sdc
Здесь мы указали то, что создаем массив, его имя, его уровень, кол-во устройств (3 шт.)
5. Смотрим что мы создали

Код: Выделить всё

cat /proc/mdstat
Если хотите наблюдать создание массива в реальном времени, то введите

Код: Выделить всё

watch cat /proc/mdstat
P.S. Выйти можно как и всегда, командой CTRL+C
6. Форматируем наш новый массив в EXT4

Код: Выделить всё

mkfs.ext4 /dev/md0
7. Создание файла конфигурации
Теперь нужно создать файл конфигурации нашего RAID массива. Система сама не запоминает какие RAID массивы ей нужно создать и какие компоненты в них входят. Эта информация находится в файле конфигурации mdadm.conf. Параметры, которые следует добавить в этот файл, можно получить при помощи команды

Код: Выделить всё

mdadm --detail --scan --verbose
Команда не добавляет параметры в файл конфигурации, а только выдает, что нужно добавить в него. Полученные параметры можно внести в конфигурационный файл вручную или воспользоваться перенаправлением. Так и сделаем

Код: Выделить всё

mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf
8. Проверка статуса массива
Проверим статус нашего массива

Код: Выделить всё

mdadm -Q /dev/md0
Более подробный статус массива можно увидеть так

Код: Выделить всё

mdadm -D /dev/md0
Проверить массив на ошибки с автоисправлением можно так

Код: Выделить всё

e2fsck -f /dev/md0
Вся полезная инфа о массивах есть в вики
9. Создание тома
После создания массива, необходимо создать в нем том, для этого заходим

Код: Выделить всё

cfdisk /dev/md0
Создаем новый том с типом Linux LVM, записываем изменения (т.е. сохраняемся)
10. После создания тома, инициализируем новый раздел

Код: Выделить всё

pvcreate /dev/md0p1
Physical volume "/dev/md0p1" successfully created
11. Создание группы томов
Создаем группу томов с любым именем (я выбрал имя raid5-md0p1)

Код: Выделить всё

vgcreate raid5-md0p1 /dev/md0p1
Volume group "raid5-md0p1" successfully created
ustim
Администратор
Сообщения: 130
Зарегистрирован: 03 июн 2021, 09:01
Откуда: Краснодар
Контактная информация:

Проверка массива на ошибки с автоисправлением

Сообщение ustim »

Код: Выделить всё

e2fsck -f /dev/md0
ustim
Администратор
Сообщения: 130
Зарегистрирован: 03 июн 2021, 09:01
Откуда: Краснодар
Контактная информация:

Восстановление RAID массива (mdadm)

Сообщение ustim »

Бывает, что программный raid сбоит в результате некорректной перезагрузки\отключения. В результате мы получаем два варианта развития событий.
1. Система не видит массив, но видит все составляющие его диски. При этом выполнив команду: fdisk -l мы видим, что разделы дисков помечены, как принадлежащие raid.
2. Система видит raid и диски, но raid не монтируется, а при попытке монтирования руками, мы получаем сообщение об ошибке в файловой таблице.
Начну по порядку.
Вариант 1
Нам необходимо пересоздать массив. Помним, что необходимые данные и метаданные уже имеются на дисках. Нам просто необходимо заставить их корректно работать вместе.
1)

Код: Выделить всё

mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1
Имена дисков я подставил от себя.Этой командой мы восстанавливаем связь дисков и воссоздаем массив.

2)

Код: Выделить всё

mdadm --assemble --scan
Сканируем raid и диски, которые его образуют.

3)

Код: Выделить всё

mdadm --assemble --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf
Первая команда выводит конфиг raid-массива, вторая вписывает вывод в необходимом формате в конфигурационный файл. Это необходимо для того, чтобы не приходилось переконфигурировать raid каждый раз при загрузке системы.

4) Теперь проверяем файлик: /etc/fstab

Код: Выделить всё

cat /etc/fstab
Если вывод нас устраивает, значит все хорошо. В ином случае, можете позаимствовать его из предыдущей статьи.

5)

Код: Выделить всё

mount -a
Монтируем все файловые системы, указанные в файле fstab

6) Смотрим на вывод о примонтированных дисках. Если все хорошо (а если не было никаких ошибок, то все замечательно), то мы увидим восстановленный раздел.
Вариант 2
В первом варианте, выполнив команду: cat /proc/mdstat мы ничего не увидим. При втором напротив, мы увидим наш raid и более того, статус может стоять [UU] (все хорошо). Если статус не точно такой, значит, вероятнее всего, с данными можете попрощаться, но в ином случае, все нормально. Кроме того, что команда mount -a вызывает ошибку файловой системы.

1)

Код: Выделить всё

mdadm --stop /dev/md123
Естественно, имя устройство я выбрал сам. Вы его можете определить, выполнив команду fdisk -l. Команда останавливает raid.

2) А теперь возвращаемся к "Вариант 1" и идем с первого и до последнего шага.
Ответить