Настройка и восстановление программного рейда Raid1 из 2х дисков (hdd) с помощью Mdadm на Linux (proxmox).

Популярный метод защиты данных от потери в случае выхода из строя одного из жестких дисков — RAID1. Он по сути создает «зеркало», сохраняя полную копию данных на втором диске. Если один накопитель не работает, второй продолжает работать, что гарантирует, что ваши файлы остаются в безопасности.

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

Мы постараемся сделать все максимально простым, рассмотрев типичные ситуации, с которыми сталкиваются администраторы. Цель состоит в том, чтобы помочь вам понять процесс и убедиться, что вы сможете поддерживать RAID1 в рабочем состоянии и оперативно отреагировать на возможные проблемы.

Установка mdadm:

Установка программы чрезвычайно проста; для операционной системы proxmox на базе debian mdadm устанавливается так:

apt update

apt install mdadm

После этого установить mdadm и продолжить работу.

Если два жёстких диска были объединены в программный RAID1 под Linux (например, в Proxmox), и один из них вышел из строя или система перестала видеть его, можно использовать утилиту mdadm для восстановления массива. Главное — оставаться спокойными и действовать по порядку. Сначала проверьте, доступны ли диски, затем добавьте оставшийся диск в массив или замените его на новый, а затем ожидайте восстановления. Весь процесс выполняется с помощью консоли, не используя дополнительных программ, и при правильном использовании данные сохраняются. Убедитесь, что вы работаете с правильными дисками, чтобы не потерять важные вещи.

Настройка mdadm:

Чтобы создать рейд, вы должны знать, какие диски вы хотите подключить. Для этого проще всего использовать команду lsblk, которая показывает все имеющиеся диски:

lsblk

Я имею два диска: sda и sdb. /dev/sda и /dev/sdb будут иметь весь доступ к диску. Запоминайте.

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

mdadm --zero-superblock --force /dev/sda

mdadm --zero-superblock --force /dev/sdb

После зануления суперблоков мы удалим все данные с дисков, чтобы они были пустыми.

wipefs --all --force /dev/sda

wipefs --all --force /dev/sdb

Следом за этим, когда вы вводите команду lsblk, вы увидите, что подрозделов sda1 и так далее больше нет. так как мы очистили диски.

Следующим шагом будет предпринята атака командой:

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb

Название рейда будет /dev/md0.

Уровень=1 — уровень рейда, в нашем случае raid1.

Количество дисков, участвующих в рейде, равно 2.

Цами дисков /dev/sda и /dev/sdb.

После ввода этой команды подраздел md0 появится на дисках sda и sdb. В результате у нас был создан рейд:

Теперь необходимо отформатировать новый раздел рейда /dev/md0, присвоив ему файловую систему ext4. Команда отвечает за форматирование:

mkfs.ext4 /dev/md0

Следующим шагом является примонтирование нового раздела /dev/md0 к любой папке, после чего все, что будет записываться в эту папку, будет записано в этот рейд.

В линуксе обычно все папки монтируются в папку /mnt/. Таким образом, давайте создадим в ней подпапку рейда, чтобы знать, что это рейдовая папка.

Создайте рейдовую папку:

mkdir /mnt/raid

Далее примонтируем раздел md0 в эту папку:

mount /dev/md0 /mnt/raid

Теперь вы можете использовать папку /mnt/raid. Однако после перезагрузки md0 будет удалена из папки /mnt/raid и ее снова необходимо примонтировать.

В линукс есть утилита fstab, которая позволяет монтировать раздел автоматически при загрузке, а не вручную.

Кроме того, поскольку настройки рейда были созданы автоматически, а не сохранены в файле, вероятно, что после перезагрузки рейд переименуется с md0 на md147 или любую другую цифру. Чтобы это не мешало нам монтировать, добавьте в fstab только уникальный uuid, а не имя md0. Таким образом, даже если имя изменится, рейд всегда примонтируется.

Следующим шагом будет узнать uuid раздела /dev/md0:

blkid | grep md0

Кроме того, мы запоминаем выделенный uuid и должны его добавить в fstab:

nano /etc/fstab

И добавьте следующее:

UUID=2185-6FA7 2185-6FA7 /mnt/raid ext4 defaults 0 0

В случаях, когда UUID является UUID, который был только что сохранен.

Вы можете выйти из редактора nano с сохранением, нажав комбинацию клавиш Ctrl+X и затем нажав Y.

На этом рейд завершен и будет иметь успех.

В дополнение к этому команда может проверять состояние рейда и уровень синхронизации дисков:

cat /proc/mdstat

У вас есть возможность увидеть, сколько дисков в настоящее время работают; у меня 2/2, а если один из них выйдет из строя, то будет 1/2.

Кроме того, в этом месте статус видео воспроизводится. Рейд, который я только что создал, имеет 3.7%, но через несколько часов все синхронизируется.

Добавление рейда в Proxmox:

Поскольку у нас еще есть proxmox, Рейд мог бы добавить его. Это очень просто сделать.

Все это осуществляется с помощью веб-морды Proxmox.

Datacenter->Storage->add

Там нужно выбрать каталог.

Укажите идентификатор в открывшемся окне — это место, где я написал рейд. Укажите папку /mnt/raid в каталоге.

Дополнительно необходимо указать содержание, которое будет изложено в этом разделе. Вы должны выбрать изображение диска и контейнер, чтобы записывать виртуалки.

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

Восстановление рейда после выходи из строя HDD:

Теперь я покажу, как выйти из строя один диск из рейда и восстановить рейд с новым диском.

Как показано на скриншоте выше, один диск остался после отключения второго.

ИНОГДА при выходе из строя одного диска операционная система грузится неправильно; вместо этого она грузится в безопасном режиме и пишет ошибку монтирования диска.

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

mdadm --stop /dev/md127

mdadm --start /dev/md127

Следующим шагом будет грузиться система на одном диске, а все данные будут доступны. Однако это может не потребоваться, и все сразу будет работать правильно.

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

Команда должна запустить новый диск вместо вышедшего из строя:

mdadm /dev/md127 --add /dev/sdb 

Следующим шагом будет добавление диска в рейд, после чего он будет синхронизирован и рейд снова будет полным и отказоустойчивым:

Командой mdadm -D /dev/md127 мы просматриваем статус ребилда нового диска.

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

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

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

Поделиться с друзьями
Алексей Волков

Инженер систем автоматизации. Более 8 лет проектирую и внедряю системы умного дома для жилых и коммерческих объектов.

Оцените автора
Добавить комментарий