Содержание
Raid mdadm
В своих системах я часто использую софтверный рейд mdadm, он достаточно прозрачный в том смысле что можно вставить диски в любой другой компьютер, запустить там live cd с linux и быстро собрать массив, скопировав с него важные данные,
уже не раз такое бывало что на сервере отказал один диск или вообще сам сервер отказал и я мог получить к нему доступ со сторонней системы. Т.е. мы не зависимы от специфичных контроллеров или специального софта, на любом линуксе можно поднять работу с рейдом
Создание raid 10
Подготовка новых дисков
Для начала стираем суперблоки при добавлении дисков в новый массив, но если массив уже был и его надо заново собрать то это лишнее, тут наоборот можем что то испортить
mdadm --zero-superblock /dev/sdx mdadm --zero-superblock /dev/sdy
Если выдает ошибку, значит суперблоков нет, всё ок.
Далее затираем метаданные на диске
wipefs --all --force /dev/sdx wipefs --all --force /dev/sdy
Создание массива
- -l 10 - уровень RAID10
- -n 4 - количество дисков 4
- и перечисление физических дисков
mdadm --create --verbose /dev/md0 -l 10 -n 4 /dev/sda /dev/sdb /dev/sdc /dev/sdd
Далее обновим конфигурацию
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
В файле /etc/mdadm/mdadm.conf нужно удалить дубликаты и следы прошлых массивов
Обновим конфигурацию системы
update-initramfs -u reboot
Ускорение синхронизации
echo 500000 > /proc/sys/dev/raid/speed_limit_min echo 600000 > /proc/sys/dev/raid/speed_limit_max
Форматирование диска
stride и stripe-width
Определим chunk
mdadm --detail /dev/md0 | grep 'Chunk Size' Chunk Size : 512K
он у нас 512к
Калькулятор - https://www.busybox.net/~aldot/mkfs_stride.html
Файловую систему создаем с параметром -b4096, значит 4к
В рейде чанк = 512, тогда 512К/4К= 128, это значение это параметр stribe
Далее домножаем его на количество дисков минуя зеркалирование, т.е. в рейд 10 2 диска зеркалируются, значит 128*2 = 256, это stripe-width
В рейде 5 считается минус один диск, в рейд 0 все диски, в рейд1 пополам…
форматируем
- lazy_itable_init=0, lazy_journal_init=0 - это особые параметры, при которых при форматировании все операции выполняются сейчас, а не потом в течение недели (особенно на больших дисках под 20 тб), позволит диску нормально спать после старта системы и не тратить ресурсы на лишнюю фоновую отложенную работу
- stride=128, stripe-width=256 - посчитанные выше параметры
mkfs.ext4 -v -m 0.01 -b 4096 -E lazy_itable_init=0,lazy_journal_init=0,stride=128,stripe-width=256 /dev/md0
Монтируем
Сперва узнаем uuid
blkid /dev/nvme0n1p1: UUID="14D1-F55F" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="ea7914a9-4f51-4eae-b322-f9ca54292359" /dev/nvme0n1p2: UUID="9ad6fd48-55ff-4e1f-b587-4a35ff9a49c7" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="ab124455-53d8-45a3-80c2-2d7138ad0825" /dev/sdd: UUID="57919414-2fd8-b06a-7dd6-0ce739e296b5" UUID_SUB="5a0c3ed5-b5b4-c71f-e390-9074467c553e" LABEL="homeBigData:0" TYPE="linux_raid_member" /dev/sdb: UUID="57919414-2fd8-b06a-7dd6-0ce739e296b5" UUID_SUB="68a44a85-e123-ac1f-a2be-43c34fe24469" LABEL="homeBigData:0" TYPE="linux_raid_member" /dev/md0: UUID="68a9d2e4-a0d7-4fb2-bf5d-134d04218ec9" BLOCK_SIZE="4096" TYPE="ext4" /dev/sdc: UUID="57919414-2fd8-b06a-7dd6-0ce739e296b5" UUID_SUB="3906aa12-1d3e-b554-1344-1e688a139016" LABEL="homeBigData:0" TYPE="linux_raid_member" /dev/sda: UUID="57919414-2fd8-b06a-7dd6-0ce739e296b5" UUID_SUB="0cd77a8b-0418-411b-9907-5c7972b19452" LABEL="homeBigData:0" TYPE="linux_raid_member"
а потом в fstab
UUID=68a9d2e4-a0d7-4fb2-bf5d-134d04218ec9 /storage ext4 nodiratime,noatime,defaults,discard,commit=120 0 2
и монтируем
mount -a