Linux mirror raid mdadm

Программный RAID1 (зеркало) с помощью mdadm

На практике, самый вероятный источник проблем с компьютерами, работающими 24х7 — это диски. За 12 лет я столкнулся с двумя вышедшими из строя сетевыми картами на серверах, но диски, даже серверных серий, выходят из строя регулярно. Что WD, что Seagate, что Hitahi. Поэтому вопрос с мотивацией использования зеркального raid1 считаем закрытым.

Почти все материнские платы сейчас заявляют функционал raid. Только если вы точно знаете, зачем вам использовать raid вашей motherboard, делайте это. К тому же, чаще всего это специфические вариации на тему программного raid, только никто-не-знает-как-сделанные. Т.е. не факт, что плохо сделанные. Но не факт, что вы найдете исчерпывающую информацию по решению проблемы. Далее, специальные контроллеры raid. Опять же, если вы знаете, что именно вы хотите, используйте их. Но вы должны понимать, что любое устройство (что материнка, что отдельный контроллер) могут взбрыкнуть и тогда могут быть проблемы с получением данных с дисков массива. Причем у вас могут возникнуть трудности с поиском информации по решению проблемы, т.к. разбирающихся в конкретной железке или линейки оборудования не так велико.

Одним из наиболее распространенных решений, по которому вы всегда найдете помощь на форумах, является использование программного raid, не привязанного к железу. В случае Linux это raid массив, созданный mdadm.

Сделаем простейшую систему защиты от сбоя жесткого диска — зеркальный raid массив. Для этого добавим в систему два диска:
/dev/sdb
/dev/sdd

Предположим, на дисках мы разместим файловую шару или ресурс для базы данных. Диски новые, разделов на них нет.

Проверим, что диски в самом деле без разделов:

Не должно быть никаких /dev/sdb1 и прочих! Аналогично для /dev/sdd.

Убедитесь, что вы собираетесь создавать разделы именно на тех дисках, которые для этого добавили.
Проверить модель диска и его S/N: smartctl -i /dev/sdb

На каждом диске создадим раздел на весь диск с прицелом на raid.

Примерно так: Сначала n (add a new partition), потом p (primary), номер раздела 1 (partition number). Все цифры можно оставить по-умолчанию. Записали изменения и вышли: w

Меняем тип раздела /dev/sdb1 на «Linux raid autodetect»:

Сначала t (change a partition’s system id), потом fd (Linux raid auto), потом p (проверим изменения) и w (сохранили изменения и вышли):

Аналогично поступаем с диском /dev/sdd (т.е. создаем primary раздел /dev/sdd1 и меняем тип на «Linux raid autodetect»).

Создаем RAID1 массив

Если в вашей системе есть другие диски, внимательно и тщательно проверяйте названия устройств. На моем компьютере это уже не первый массив, поэтому я укажу имя вновь создаваемого массива «/dev/md2».

# mdadm —create —verbose /dev/md2 —level=1 —raid-devices=2 /dev/sdb1 /dev/sdd1

—create — создать
—verbose — больше информации!
/dev/md2 — имя нового raid-массива (фактически, это устройство, на нем потом можно создавать разделы lvm и все что угодно еще)
—raid-devices=2 /dev/sdb1 /dev/sdd1 — указываем кол-во и конкретные устройства, входящие в состав массива.

Читайте также:  Windows operating system shell

Проверить, что вышло:

# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sdd1[1] sdb1[0]
976630464 blocks super 1.2 [2/2] [UU]
[>. ] resync = 1.4% (13876288/976630464) finish=85.1min speed=188512K/sec
bitmap: 8/8 pages [32KB], 65536KB chunk

Идет синхронизация. Дождемся ее окончания.

После завершения синхронизации посмотрите параметры вашего массива:

# mdadm —detail —scan —verbose

ARRAY /dev/md2 level=raid1 num-devices=2 metadata=1.2 name=localhost.localdomain:2 UUID=3eaa3e42:6f083fc4:0c9281a3:1b9b7452
devices=/dev/sdb1,/dev/sdd1

Чтобы raid после ребута никуда не делся, сохраняем конфиг в файл /etc/mdadm.conf (путь к файлу верен для CentOS 7):

# mdadm —detail —scan —verbose >> /etc/mdadm.conf

Обратите внимание на «>>» (добавить, а не перезаписать). Не стоит перезаписывать конфиг mdadm, там могут быть важные сведения о других массивах, уже работающих у вас в системе.

Что за UUID «3eaa3e42:6f083fc4:0c9281a3:1b9b7452»? Посмотрите UUID блочных устройств, начинающиеся на «3eaa3e42»:

# blkid | grep 3eaa3e42
/dev/sdb1: UUID=»3eaa3e42-6f08-3fc4-0c92-81a31b9b7452″ UUID_SUB=»bb9c4771-20c9-4f4b-5013-f0d6d0f327ae» LABEL=»backupmail.localdomain:2″ TYPE=»linux_raid_member»
/dev/sdd1: UUID=»3eaa3e42-6f08-3fc4-0c92-81a31b9b7452″ UUID_SUB=»37997177-2fd1-6518-3036-2b1d76043816″ LABEL=»backupmail.localdomain:2″ TYPE=»linux_raid_member»

Т.е. есть привязка в конфиге raid1 массива не только по имени /dev/sdb1, но и по уникальному идентификатору устройства. Поэтому если вы просто вынете диски и на их место включите другие, то ничего хорошего не выйдет.

Так, теперь вот что: можно просто отформатировать созданный диск (mkfs.ext4 /dev/md2) и указать в файле /etc/fstab точку его монтирования, а можно поиграться с LVM. LVM может дать в дальнейшем определенные преимущества, например, если вы решите изменить размер раздела или даже добавить к нему другие диски, вдруг места будет совсем мало.

Создаем физический том на устройстве /dev/md2 (т.е. работаем уже с объектом массива, а не конкретными разделами типа /dev/sdb1):

# pvcreate /dev/md2
Physical volume «/dev/md2» successfully created.

# pvscan
PV /dev/md2 lvm2 [931.39 GiB]

На томе создаем группу томов (volume group) с именем «datavg» (произвольно, можете брать другое название:

# vgcreate datavg /dev/md2

В группе «datavg» создаем логический том «datalv» (имя выбрано произвольно) размером 931Гб (размер взят из листинга команды pvscan):

# lvcreate —name datalv —size 931G datavg

[не вдаваясь в различия ext4, ext3, xfs и др.] форматируем конечный логический том /dev/datavg/datalv в xfs:

Промежуточный итог: у нас есть «диск» с файловой системой xfs, который можно примонтировать и использовать. Например, чтобы наш raid1 обслуживал какую-то директорию (пусть будет /data), в /etc/fstab добавьте, например:

/dev/mapper/datavg-datalv /data xfs defaults 0 0

Создайте саму директорию /data:

Проверьте перед перезагрузкой:

# mount /dev/mapper/datavg-datalv /data

Запишите какой-нибудь файл в /data и перезагрузитесь.

Проверяем. Тестовый файл должен быть на месте.

В первый раз всегда делайте это на тестовом или не важном сервере.

Источник

Программный RAID в Linux с помощью mdadm

mdadm – утилита для работы с программными RAID-массивами в Linux. В статье мы рассмотрим, как работать с утилитой mdadm (multiple disks admin) для создания массива, добавления дисков, управления дисками, добавление hot-spare и много другой полезной информации.

Установка утилиты управления программным RAID — mdadm

Чтобы установить утилиту mdadm, запустите команду установки:

  • Для Centos/Red Hat используется yum/dnf: yum install mdadm
  • Для Ubuntu/Debian: apt-get install mdadm

В резульатте в системе будет установлена сама утилита mdadm и необходимые библиотеки:

Создание RAID из 2-х дисков

У меня на сервере установлены два дополнительных диска и я хочу содать на низ програмное зеркало (RAID1). Диски пустые, данные на них не писались. Для начала, нужно занулить все суперблоки на дисках, которые мы будем добавлять в RAID-массив:

Читайте также:  Puppyrus linux ��� ������

# mdadm —zero-superblock —force /dev/vd

У меня два есть два чистых диска vdb и vdc.

Данный листинг означает, что ни один из дисков ранее не был добавлен в массив.

Чтобы собрать программный RAID1 из двух дисков в устройстве /dev/md0, используйтк команду:

# mdadm —create —verbose /dev/md0 -l 1 -n 2 /dev/vd

Где «-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

После запуска команды, нужно подтвердить действия и массив будет создан:

Теперь при просмотре информации о дисках, мы видим наш массив:

Создание файловой системы на RAID, монтирование

Чтобы создать файловую систему ext4 на нашем RAID1 массиве из двух дисков, используйте команду:

Создадим директорию backup и примонтируем к ней RAID устройство:

# mkdir /backup
# mount /dev/md0 /backup/

Массив смонтировался без ошибок. Чтобы не монтировать устройство каждый раз вручную, внесем изменения в fstab:

Просмотр состояния, проверка целостности RAID массива

Чтобы проверить целостность данных в массиве, используйте команду:

#echo ‘check’ > /sys/block/md0/md/sync_action

После чего, нужно посмотреть вывод файла:

Если в результате вы получаете 0, то с вашим массивом все в порядке:

Чтобы остановить проверку, используйте команду:

#echo ‘idle’ > /sys/block/md0/md/sync_action

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

В листинге команды, видим информацию о нашем ранее созданном raid.

Более подробную информацию о конкретном raid-массиве, можно посмотреть командой:

Разберем основные пункты листинга команды:

  • 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:

Восстановление RAID при сбое, замена диска

Если у вас вышел из строя или повредился один из дисков в RAID-массиве, его можно заменить другим. Для начала определим, поврежден ли диск и какой диск нам следует менять.

Из листинга команды, вы видим, что только один диск активен. Так же о проблеме говорит [U_]. Когда оба диска рабочие, вывод будет [UU].

Подробная информация о RAID-массиве также показывает, что естт проблемы:

State : clean, degraded – данная строка указывает на то, что диск в raid-массиве поврежден.

В нашем случае нужно заменить неисправный диск /dev/vdc. Для восстановления массива, нужно удалить нерабочий диск и добавить новый.

Удаляем неиспраный диск:

# mdadm /dev/md0 —remove /dev/vdc

Добавляем в массив новый диск :

# mdadm /dev/md0 —add /dev/vdd

Читайте также:  Установить скриншот windows 10

Восстановление диска запустится автоматически после добавления нового диска:

rebuild Status : 69% complete — показывает текущее состояние восстановления массива.

spare rebuilding /dev/vdd — показывает какой диск добавляется к массиву.

После восстановления массива, листинг по дискам выглядит так:

Добавление и удаление дисков в RAID массив на Linux

Чтобы разобрать ранее созданный массив, нужно отмонтировать его :

И выполнить команду:

После разбора массива, он не должен определяться как устройство:

Чтобы собрать массив, который мы ранее разобрали вручную, запустите команду:

# 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

После чего запустится процесс пересборки массива:

После выполнения пересборки, все диски стали активны:

Удаление массива

Если вы хотите безвозвратно удалить 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:

Останолось перезапустить службу mdmonitor через systemctl:

# systemctl restart mdmonitor

После этого система будет оповещать вас по email об ошибках в mdadm и неисправных дисках.

RAID массив в состоянии inactive

При сбоях оборудования или аварийного выключения по питанию, массив может перейти в состояние inactive. Все диски помечаются как неактивные, но ошибок на дисках нет.

В этом случае нужно остановить массив командой:

# mdadm —stop /dev/md0

И пересобрать его:

# mdadm —assemble —scan –force

Если массив прописан в /etc/fstab, нужно перемонтировать его командой:

Утилита mdadm упрощает работу с raid-массивами в Linux. В данной статье я описал основные моменты работы с данной утилитой, а также затронул самые частые вопросы, которые возникают при работе с raid-массивами через утилиту mdadm.

Источник

Оцените статью