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 и всегда его используют говоря, что этот рейд лучше аппаратного (железного). Но не верьте им) линуксоиды чудные люди. Но рейд такой вполне может иметь место.