mdadm – утилита для работы с программными RAID -массивами в Linux. В статье мы рассмотрим, как работать с утилитой mdadm (multiple disks admin) для создания массива, добавления дисков, управления дисками, добавление hot-spare и много другой полезной информации.
- Установка утилиты управления программным RAID — mdadm
- Создание RAID из 2-х дисков
- Создание файловой системы на RAID, монтирование
- Просмотр состояния, проверка целостности RAID массива
- Восстановление RAID при сбое, замена диска
- Добавление и удаление дисков в RAID массив на Linux
- Добавление Hot-Spare диска в RAID массив
- Удаление массива
- Mdmonitor: Мониторинг состояния RAID и email оповещения
- RAID массив в состоянии inactive
Установка утилиты управления программным RAID — mdadm
Чтобы установить утилиту mdadm, запустите команду установки:
- Для Centos/Red Hat используется yum /dnf:
yum install mdadm
- Для Ubuntu/Debian:
apt-get install mdadm
В резульатте в системе будет установлена сама утилита mdadm и необходимые библиотеки:
Running transaction Installing : libreport-filesystem-2.1.11-43.el7.centos.x86_64 1/2 Installing : mdadm-4.1-1.el7.x86_64 2/2 Verifying : mdadm-4.1-1.el7.x86_64 1/2 Verifying : libreport-filesystem-2.1.11-43.el7.centos.x86_64 2/2 Installed: mdadm.x86_64 0:4.1-1.el7 Dependency Installed: libreport-filesystem.x86_64 0:2.1.11-43.el7.centos Complete!
Создание RAID из 2-х дисков
У меня на сервере установлены два дополнительных диска и я хочу содать на низ програмное зеркало (RAID1). Диски пустые, данные на них не писались. Для начала, нужно занулить все суперблоки на дисках, которые мы будем добавлять в RAID-массив:
# mdadm --zero-superblock --force /dev/vd{b,c}
У меня два есть два чистых диска vdb и vdc .
mdadm: Unrecognised md component device - /dev/vdb_x000D_mdadm: Unrecognised md component device - /dev/vdc
Данный листинг означает, что ни один из дисков ранее не был добавлен в массив.
Чтобы собрать программный RAID1 из двух дисков в устройстве /dev/md0, используйтк команду:
# mdadm --create --verbose /dev/md0 -l 1 -n 2 /dev/vd{b,c}
Где « -l 1 » — это тип массива, в нашем случае RAID1
А « -n 2 «- это количество дисков, которое добавляется в массив.
# mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/vdb /dev/vdc
RAID 5 из трех или более дисков:
# mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/vdb /dev/ vdс /dev/vdd
После запуска команды, нужно подтвердить действия и массив будет создан:
Теперь при просмотре информации о дисках, мы видим наш массив:
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT_x000D_vda 253:0 0 20G 0 disk_x000D_├─vda1 253:1 0 512M 0 part /boot_x000D_└─vda2 253:2 0 19.5G 0 part /_x000D_vdb 253:16 0 20G 0 disk_x000D_└─md0 9:0 0 20G 0 raid1_x000D_vdc 253:32 0 20G 0 disk_x000D_└─md0 9:0 0 20G 0 raid1
Создание файловой системы на RAID, монтирование
Чтобы создать файловую систему ext4 на нашем RAID1 массиве из двух дисков, используйте команду:
# mkfs.ext4 /dev/md0
Создадим директорию backup и примонтируем к ней RAID устройство:
# mkdir /backup
# mount /dev/md0 /backup/
# df -h
Filesystem Size Used Avail Use% Mounted on_x000D_ devtmpfs 485M 0 485M 0% /dev_x000D_tmpfs 496M 0 496M 0% /dev/shm_x000D_tmpfs 496M 44M 452M 9% /run_x000D_tmpfs 496M 0 496M 0% /sys/fs/cgroup_x000D_/dev/vda2 20G 1.4G 19G 7% /_x000D_/dev/vda1 488M 100M 353M 23% /boot_x000D_tmpfs 100M 0 100M 0% /run/user/0_x000D_/dev/md0 20G 45M 19G 1% /backup_x000D_
Массив смонтировался без ошибок. Чтобы не монтировать устройство каждый раз вручную, внесем изменения в fstab :
# nano /etc/fstab
/dev/md0 /backup ext4 defaults 1 2
Просмотр состояния, проверка целостности RAID массива
Чтобы проверить целостность данных в массиве, используйте команду:
#echo 'check' > /sys/block/md0/md/sync_action
После чего, нужно посмотреть вывод файла:
#cat /sys/block/md0/md/mismatch_cnt
Если в результате вы получаете 0, то с вашим массивом все в порядке:
Чтобы остановить проверку, используйте команду:
#echo 'idle' > /sys/block/md0/md/sync_action
Чтобы проверить состояние всех RAID -массивов доступны на сервере, используйте команду:
# cat /proc/mdstat
Personalities : [raid1]_x000D_md0 : active raid1 vdc[1] vdb[0]_x000D_20954112 blocks super 1.2 [2/2] [UU]
В листинге команды, видим информацию о нашем ранее созданном raid.
Более подробную информацию о конкретном raid-массиве, можно посмотреть командой:
# mdadm -D /dev/md0
Разберем основные пункты листинга команды:
- Version – версия метаданных;
- Creation Time – дата и время создания raid-массива;
- Raid Level – уровень raid-массива;
- Array Size – объем дискового пространства для raid-массива;
- Used Dev Size – используемый объем для устройств;
- Raid Device – количество дисков в raid-массиве;
- Total Devices – количество добавленных в raid-массив дисков;
- State – текущее состояние (clean – все ОК);
- Active Devices — количество активных дисков в raid-массиве;
- Working Devises — количество рабочих дисков в raid-массиве;
- Failed Devices – количество устройств со сбоями в raid-массиве;
- Spare Devices – количество запасных дисков в raid-массиве;
- Consistency Policy — параметр задающий тип синхронизации после сбоя в raid-массиве, rsync — полная синхронизация после восстановления raid-массива (доступны режимы bitmap, journal, ppl);
- UUID – идентификатор raid-массива
Краткую информацию можно посмотреть с помощью утилиты fdisk :
# fdisk -l /dev/md0
Disk /dev/md0: 21.5 GB, 21457010688 bytes, 41908224 sectors_x000D_Units = sectors of 1 * 512 = 512 bytes_x000D_Sector size (logical/physical): 512 bytes / 512 bytes_x000D_I/O size (minimum/optimal): 512 bytes / 512 bytes
Восстановление RAID при сбое, замена диска
Если у вас вышел из строя или повредился один из дисков в RAID-массиве, его можно заменить другим. Для начала определим, поврежден ли диск и какой диск нам следует менять.
# cat /proc/mdstat
Personalities : [raid1]_x000D_md0 : active raid1 vdb[0]_x000D_20954112 blocks super 1.2 [2/1] [U_]_x000D_
Из листинга команды, вы видим, что только один диск активен. Так же о проблеме говорит [ U_ ]. Когда оба диска рабочие, вывод будет [ UU ].
Подробная информация о RAID-массиве также показывает, что естт проблемы:
# mdadm -D /dev/md0
/dev/md0:_x000D_Version : 1.2_x000D_Creation Time : Tue Oct 29 12:39:22 2019_x000D_Raid Level : raid1_x000D_Array Size : 20954112 (19.98 GiB 21.46 GB)_x000D_Used Dev Size : 20954112 (19.98 GiB 21.46 GB)_x000D_Raid Devices : 2_x000D_Total Devices : 2_x000D_Persistence : Superblock is persistent_x000D_Update Time : Tue Oct 29 14:41:13 2019_x000D_State : clean, degraded_x000D_Active Devices : 1_x000D_Working Devices : 1_x000D_Failed Devices : 1_x000D_
State : clean, degraded
– данная строка указывает на то, что диск в raid-массиве поврежден.
В нашем случае нужно заменить неисправный диск /dev/vdc . Для восстановления массива, нужно удалить нерабочий диск и добавить новый.
Удаляем неиспраный диск:
# mdadm /dev/md0 --remove /dev/vdc
Добавляем в массив новый диск :
# mdadm /dev/md0 --add /dev/vdd
Восстановление диска запустится автоматически после добавления нового диска:
# mdadm -D /dev/md0
/dev/md0:_x000D_Version : 1.2_x000D_Creation Time : Tue Oct 29 12:39:22 2019_x000D_Raid Level : raid1_x000D_Array Size : 20954112 (19.98 GiB 21.46 GB)_x000D_Used Dev Size : 20954112 (19.98 GiB 21.46 GB)_x000D_Raid Devices : 2_x000D_Total Devices : 2_x000D_Persistence : Superblock is persistent_x000D_Update Time : Tue Oct 29 14:50:20 2019_x000D_State : clean, degraded, recovering_x000D_Active Devices : 1_x000D_Working Devices : 2_x000D_Failed Devices : 0_x000D_Spare Devices : 1_x000D_Consistency Policy : resync_x000D_Rebuild Status : 69% complete_x000D_Name : server.vpn.ru:0 (local to host server.vpn.ru)_x000D_UUID : 9d59b1fb:7b0a7b6d:15a75459:8b1637a2_x000D_Events : 42_x000D_Number Major Minor RaidDevice State_x000D_0 253 16 0 active sync /dev/vdb_x000D_2 253 48 1 spare rebuilding /dev/vdd_x000D_
rebuild Status : 69% complete
— показывает текущее состояние восстановления массива.
spare rebuilding /dev/vdd
— показывает какой диск добавляется к массиву.
После восстановления массива, листинг по дискам выглядит так:
State : clean_x000D_Active Devices : 2_x000D_Working Devices : 2_x000D_Failed Devices : 0_x000D_Spare Devices : 0_x000D_
Добавление и удаление дисков в RAID массив на Linux
Чтобы разобрать ранее созданный массив, нужно отмонтировать его :
# umount /backup
И выполнить команду:
# mdadm -S /dev/md0
mdadm: stopped /dev/md0
После разбора массива, он не должен определяться как устройство:
# mdadm -S /dev/md0
mdadm: error opening /dev/md0: No such file or directory
Чтобы собрать массив, который мы ранее разобрали вручную, запустите команду:
# mdadm --assemble —scan
Данная команда просканирует диски из разобранного или развалившегося RAID массива и по метаданным попробует собрать из них RAID.
Если вам нужно удалить рабочий диск из массива и заменить его на другой, нужно для начала пометить рабочий диск как нерабочий:
# mdadm /dev/md0 --fail /dev/vdc
После чего диск можно будет удалить командой::
# mdadm /dev/md0 --remove /dev/vdc
Добавляется новый диск, так же как и в случае с нерабочим диском:
# mdadm /dev/md0 --add /dev/vdd
Добавление Hot-Spare диска в RAID массив
Вы можете добавит в массив hot-spare диск для горячей замены при выходе из строя одного из активных дисков. Добавьте свободный диск в нужный массив:
# mdadm /dev/md0 --add /dev/vdc
После чего проверив статус raid-массива, мы увидим данный диск как spare:
Чтобы проверить, сработает ли « горячая замена» диска, пометим любой из дисков как нерабочий и проверим статус raid-массива:
# mdadm /dev/md0 --fail /dev/vdb
После чего при проверке статуса массива, будет видно, что началась пересборка массива:
Диск /dev/vdb помечен как нерабочий, а hot-spare диск стал одним из активных дисков RAID и запустился процесс восстановления.
Чтобы добавить дополнительный рабочий диск в RAID, нужно выполнить два шага.
Добавить пустой диск массиву:
# mdadm /dev/md0 --add /dev/vdb
Теперь данный диск будет отображаться как hot-spare , чтобы сделать его рабочим, расширим raid-массив:
# mdadm -G /dev/md0 —raid-devices=3
После чего запустится процесс пересборки массива:
После выполнения пересборки, все диски стали активны:
Number Major Minor RaidDevice State_x000D_3 253 32 0 active sync /dev/vdc_x000D_2 253 48 1 active sync /dev/vdd_x000D_4 253 16 2 active sync /dev/vdb_x000D__x000D_
Удаление массива
Если вы хотите безвозвратно удалить raid-массив, используйте следующую схему:
# umount /backup
– отмонтируем массив от директории
# mdadm -S /dev/md0
— останавливаем RAID устройство
После чего очищаем все суперблоки на дисках, из которых он был собран:
# mdadm --zero-superblock /dev/vdb
# mdadm --zero-superblock /dev/vdc
Mdmonitor: Мониторинг состояния RAID и email оповещения
Для мониторинга состояния RAID массива можно использовать службу mdmonitor . Сначала нужно создать файл /etc/mdadm.conf с конфигурацией текущего массива:
# mdadm –detail –scan > /etc/mdadm.conf
В конце файла /etc/mdadm.conf добавьте email адрес администратора, на который нужно слать оповещения о проблемах с RAID:
MAILADDR [email protected]
Останолось перезапустить службу mdmonitor через systemctl :
# systemctl restart mdmonitor
После этого система будет оповещать вас по email об ошибках в mdadm и неисправных дисках.
RAID массив в состоянии inactive
При сбоях оборудования или аварийного выключения по питанию, массив может перейти в состояние inactive . Все диски помечаются как неактивные, но ошибок на дисках нет.
# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]_x000D_md0 : inactive vdc[1] vdb[0]_x000D_20954112 blocks super_x000D_unused devices: <none>_x000D_
В этом случае нужно остановить массив командой:
# mdadm --stop /dev/md0
И пересобрать его:
# mdadm --assemble --scan –force
Если массив прописан в /etc/fstab, нужно перемонтировать его командой:
# mount -a
Утилита mdadm упрощает работу с raid-массивами в Linux. В данной статье я описал основные моменты работы с данной утилитой, а также затронул самые частые вопросы, которые возникают при работе с raid -массивами через утилиту mdadm .