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
Добавляем в наш массив свежий диск и проверяем статус массива.
Как видно в массив был включен новый диск и происходит восстановление данных.
Добавить комментарий