Любой слабенький комп на райзене, а уж тем более современные 8 ядерные процы с достаточным объемом оперативной памяти способны создать достаточно быстрый массив, который уделает бюджетные контроллеры и к тому же более предсказуем, переставляем диски на любой другой комп даже через usb-корзину и собираем Raid.
Создание массива
На всякий случай потрем суперблоки, чтобы не возникало ошибок после перезагрузки, на основе этих суперблоков при старте собираются массивы, я один раз совершил ошибку, расформировал Raid-1 и собрал Raid-0, а при перезагрузке получил совсем не тот массив что собирал с поломанными данными
В данном примере рассматриваем создание массива из цельных дисков, если указывать номер раздела, то можно тоже самое делать с разделами, это удобно при зеркалировании дисков разных размеров, например есть диск на 10 террабайт и на 5, можно на двух дисках создать разделы по 5 террабайт и зазеркалить и еще 5 террабайт будут без зеркала или подключены в другой массив...
mdadm --zero-superblock /dev/sdx
mdadm --zero-superblock /dev/sdy
Если выдает ошибку, значит суперблоков нет, всё ок.
Затрем метаданные на дисках
wipefs --all --force /dev/sdx
wipefs --all --force /dev/sdy
Создаем устройство
- -l 0 - RAID-0
- -n 2 - два диска в массиве
mdadm --create --verbose /dev/md8 -l 0 -n 2 /dev/sdd /dev/sda
Создаем файловую систему на md устройстве
mkfs.ext4 /dev/md8
Расформирование массива
Если вдруг захотели из Raid1 переделать в Raid0, то действия следующие
Отмонтируем диск
umount /dev/md8
Остановим массив
mdadm -S /dev/md8
Далее, чтобы при рестарте системы у нас не собрался непредсказуемый массив основанный на устаревших данных в дисках, нужно затереть суперблоки
mdadm --zero-superblock /dev/sdx1
mdadm --zero-superblock /dev/sdy1
Обновление конфигурации
Бывает такое что после удаления и вновь создания массивов возникают проблемы с нумерацией, когда вместо md1 создается md127, решается это примерно так
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
Далее нужно открыть файл /etc/mdadm/mdadm.conf
и удалить или закомментировать там дублирующие старые строчки, а потом обновить initramfs и перезагрузиться
update-initramfs -u
reboot
Вывод из режима read-only
Для raid5 может такое произойти что диск синхронизировался, вы не дождались полной синхронизации и перезагрузили компьютер
md5 : active (auto-read-only) raid5 sdd[2] sda[1] sdc[4] sdf[0]
52734587904 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [UUU_]
bitmap: 0/131 pages [0KB], 65536KB chunk
Чтобы вывести диск из этого режима нужно выполнить команду
mdadm -w /dev/md5
Иногда рейд переходит в автоматический RO лишь по причине что раздел не примонтирован, стоит его смонтировать и всё будет как обычно.
Остановка синхронизации
Если вдруг ваши диски синхронизировались и вы перезагрузили компьютер, то синхронизация может остановиться и вы увидите resync=PENDING
echo idle > /sys/block/md5/md/sync_action
Ускорение синхронизации
Если вы синхронизируете большой массив, например диски по 18Тб и скорость синхронизации показывает около 100 мегабайт в сек, сервер в данный момент ничем не занят и его можно загрузить фоновыми задачами, в промышленной эксплуатации такое не рекомендуется, но в момент начальной настройки можно ускорить процесс, можно сделать скорость синхронизации от 500 до 600
echo 500000 > /proc/sys/dev/raid/speed_limit_min
echo 600000 > /proc/sys/dev/raid/speed_limit_max
действует до первой перезагрузки потом будет от 10 до 200
Особые параметры при форматировании
- stride - шаг
- stripe-width - ширины полосы
stribe = chunk_size / размер блока
stripe-width = количество_дисков * stribe
Размер блока задается при форматировании, он будет 4КиБ = 4096 байт
Chunk_size можно узнать командой
mdadm --detail /dev/md10 | grep 'Chunk Size'
Chunk Size : 512K
На Raid10 при 4х дисках с данными только 2, вторые 2 его зеркальная копия, поэтому дисков будем считать 2, а не 4.
stribe = 512/4 = 128
stripe-width = 128*2 = 256
Итого команда форматирования будет выглядеть так
mkfs.ext4 -v -m 0.01 -b 4096 -E stride=128,stripe-width=256 /dev/md0
Опции монтирования
/dev/md5 /mnt/data ext4 nodiratime,noatime,defaults,discard,commit=120 1 2
Еще дополнительно откопал статью по доп возможностям рейда