• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

У Павла!

  • Контроллеры
    • Arduino
      • Приборы
      • Музыка
      • Проекты Arduino
      • Уроки Arduino
      • Игры на Arduino
      • Роботы на Ардуино
      • FLProg
    • Одноплатные ПК
      • Orange pi
      • Raspberry pi
        • Raspberry pi pico
        • Raspberry pi server
        • Проекты Raspberry pi
    • ESP
      • ESP8266
        • NodeMCU
      • ESP32
      • M5stack
    • Другие контроллеры
      • STM32
  • Умный дом
    • Home Assistant
      • Автоматизации
      • Lovelace
    • Tuya
    • Bluetooth
    • ESPHome
    • Frigate
    • Telegram
    • Яндекс
  • ЧПУ
  • 3d печать
  • Об авторе

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

2 июля, 2025

Raid тестировал на этом миниПК: https://shp.pub/78harg?erid=2SDnjcpjpv9

В этой статье покажу как настроить Raid1 который будет состоять из двух дисков которые будут реплицировать друг друга и если один из дисков выйдет из строя, его можно будет заменить и информация не потеряется.

У меня МиниПК который имеет возможность подключения 2х HDD размером 3.5 дюйма. На нём и буду это все настраивать.

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

Рейд будет программный (софтовый) и делаться он будет с помощью программы mdadm.

Установка mdadm:

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

apt update

apt install mdadm

После чего mdadm установится и можно с ним будет дальше работать.

Настройка mdadm:

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

lsblk

У меня это 2 диска 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 – это будет название рейда

level=1 – это уровень рейда, в нашем случае raid1.

raid-devices=2 – это количество дисков участвующих в рейде.

/dev/sda /dev/sdb это сами диски.

После ввода команды этой у нас у дисков sda и sdb появится подраздел md0. Это означает, что рейд у нас создался:

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

mkfs.ext4 /dev/md0

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

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

Создаём папку raid:

mkdir /mnt/raid

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

mount /dev/md0 /mnt/raid

Теперь можно работать с папкой /mnt/raid. Но после перезагрузки md0 отмонтируется от папки /mnt/raid и её снова нужно будет примонтировать.

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

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

По этому давайте сначала узнаем 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.

Так-же тут видео статус resync. у меня рейд только-что создан и по этому 3.7% но через несколько часов, все синхронизируется до конца.

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

Так как у нас установлен еще proxmox, то хорошо бы Рейд добавить в proxmox. Это делается очень легко.

Все делается через web морду proxmox.

Datacenter->Storage->add

Там нужно выбрать Directory

В открывшемся окне указываем ID – я написал тут raid. В Directory указываем папку с рейдом /mnt/raid 

Еще нужно указать Content  – это что будет на этот раздел писаться. Чтоб записывались виртуалки и контейнеры, то нужно выбрать Disk image и Container.

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

 

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

Теперь давайте я продемонстрирую выход из строя одного диска из рейда и восстановление рейда с новым диском.

Вот видим из скрина выше, что остался один диск, так как второй вышел из строя.

Иногда бывает такое, что при выходе из строя одного диска, операционная система не грузится правильно, только в безопасном режиме и пишет ошибку монтирования диска.

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

mdadm --stop /dev/md127

mdadm --start /dev/md127

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

Далее вставил я новый диск, который такую же букву получил:

Это новый диск в замен вышедшему из строя. Его нужно в рейд ввести командой:

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

После этого диск введется в рейд и после синхронизации рейд снова будет полноценным и отказоустойчивым:

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

 

Вывод:

Таким не хитрым образом мы создали отказоустойчивый рейд и проверили его на сохранение данных. Все отлично работает. Кстати линуксоиды очень любят mdadm и всегда его используют говоря, что этот рейд лучше аппаратного (железного). Но не верьте им) линуксоиды чудные люди. Но рейд такой вполне может иметь место.

 

 

Primary Sidebar

Поиск

Новые записи

  • Настройка и восстановление программного рейда Raid1 из 2х дисков (hdd) с помощью Mdadm на Linux (proxmox).
  • Управление кондиционером локально по wifi с помощью ESP32 в ESPHome и Home Assistant.
  • Умные шторы – как правильно их выбрать?
  • Автоматизация открытия и закрытия штор в Home Assistant.
  • Лучшая карточка Lovelace управления шторами в Home Assistant.

Официальный YouTube Канал M5Stack:

Подписывайтесь на Телеграм канал

https://t.me/ypavla

Подписаться на YouTube!

Secondary Sidebar




Подписывайтесь на Telegram Канал!

У Павла!

Footer

Copyright_У Павла! © 2025 ·