Популярный метод защиты данных от потери в случае выхода из строя одного из жестких дисков — 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-массива.








