Домашнее файловое хранилище, NAS, настраиваем программный RAID

RAID — он же массив независимых дисков, является технологией позволяющей объединить несколько накопителей данных в единое пространство. RAID массивы делятся на различные уровни (читай типы), коих довольно много, считая комбинированные и нестандартные уровни. Подробнее можно почитать на вики, тут же я затрону лишь некоторые из них, применимые в малых домашних хранилищах.

Я обращу внимание лишь на те уровни RAID массива что обеспечивают избыточность данных и требуют минимальное количество дисков, тем самым мы сохраним наши данные при потере/выходе из строя части дисков.

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

  • RAID 1. Использует минимум 2 диска, данные дублируются на все диски, работоспособен пока есть хотя бы один рабочий диск. Размер хранилища равен размеру наименьшего диска.
  • RAID 5. Использует не менее трех дисков, при записи блоки данных и контрольные суммы записываются циклически на все диски. Сохраняет работоспособность при выходе одного диска. Размер хранилища равен (N – 1) x (размер наименьшего диска), где N количество дисков.
  • RAID 6. Использует не менее четырех дисков, может сохранять работоспособность при выходе двух дисков. За счет двух дисков с избыточными данными является более надежным но и более медленным.

Вводные: чистая сборка Ubuntu server 22.04.3 LTS, SSD для ОС и 4 HDD на 500гб каждый. По сети данные будем кидать на Samba.

В моем случае все это выглядит следующим образом:

  • sdd – ssd диск для операционной системы.
  • sda, sdb, sdc, sde – диски для массива.

Сборка массива на примере RAID 1.

Для сборки потребуется дав или более диска, данные дублируются на все диски, работоспособен пока функционирует хотя бы один диск в массиве. Размер массива равен размеру наименьшего диска.

:~$ mdadm -v -C /dev/md0 -l 1 -n 4 /dev/sda /dev/sdb /dev/sdc /dev/sde

-v –verbose – подробный вывод.

-C –create

-l –level=1 — указываем уровень RAID 1.

-n –raid-devices=4 – указываем количество дисков.

Не забываем почитывать что нам пишет утилита, если все нормально то подтверждаем создание массива. На данном этапе созданный раздел /dev/md0 не имеет файловой системы и не смонтирован.

Посмотрим что нам скажет lsblk.

А так же посмотрим что содержит файл /proc/mdstat, который содержит снимок состояния RAID массива.

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

:~$ mkfs -t ext4 /dev/md0
:~$ mkdir /mnt/raid1
:~$ mount /dev/md0 /mnt/raid1

Посмотрим что у нас получилось.

:~$ df -h /mnt/raid1/

Для дальнейших опытов и работой с файлами по сети в дальнейшем — установим samba, добавим пользователя в систему и зададим пароль который будет использоваться при подключении по smb.

:~$ apt install samba
:~$ adduser usr
:~$ smbpasswd -a usr

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

Загружаем пару толстых файлов и считываем хеш-суммы наших файлов для последующей их проверки.

Далее просто отключим один из дисков, запускаем систему и пробуем смонтировать раздел.

:~$ sudo mount /dev/md127 /mnt/raid1/
mount: /mnt/raid1: can't read superblock on /dev/md127.

Система попыталась смонтировать диск автоматически и ей это не удалось. Остановим массив и соберем его.

:~$ sudo mdadm --assemble --scan

Так же можем получить полную информацию о массиве через mdadm –detail.

Теперь мы можем смонтировать раздел, убедится в сохранности наших файлов и даже сравнить хеш-суммы.

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

После очередной перезагрузки массив опять уехал на md127 но монтирование происходит нормально и функционирует массив тоже нормально.

:~$ mdadm --manage /dev/md127 --add /dev/sdb

Добавляем в наш массив свежий диск и проверяем статус массива.

Как видно в массив был включен новый диск и происходит восстановление данных.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Copyright © Programmer Weekdays | Powered by WordPress