Tech-Research WIKI

технологичные раскопки

Инструменты пользователя

Инструменты сайта


docs:raid_mfadm

Raid mdadm

В своих системах я часто использую софтверный рейд mdadm, он достаточно прозрачный в том смысле что можно вставить диски в любой другой компьютер, запустить там live cd с linux и быстро собрать массив, скопировав с него важные данные,
уже не раз такое бывало что на сервере отказал один диск или вообще сам сервер отказал и я мог получить к нему доступ со сторонней системы. Т.е. мы не зависимы от специфичных контроллеров или специального софта, на любом линуксе можно поднять работу с рейдом

Создание raid 10

Подготовка новых дисков

Для начала стираем суперблоки при добавлении дисков в новый массив, но если массив уже был и его надо заново собрать то это лишнее, тут наоборот можем что то испортить

  1. mdadm --zero-superblock /dev/sdx
  2. mdadm --zero-superblock /dev/sdy

Если выдает ошибку, значит суперблоков нет, всё ок.

Далее затираем метаданные на диске

  1. wipefs --all --force /dev/sdx
  2. wipefs --all --force /dev/sdy

Создание массива

  • -l 10 - уровень RAID10
  • -n 4 - количество дисков 4
  • и перечисление физических дисков
  1. mdadm --create --verbose /dev/md0 -l 10 -n 4 /dev/sda /dev/sdb /dev/sdc /dev/sdd


Далее обновим конфигурацию

  1. mdadm --examine --scan >> /etc/mdadm/mdadm.conf


В файле /etc/mdadm/mdadm.conf нужно удалить дубликаты и следы прошлых массивов


Обновим конфигурацию системы

  1. update-initramfs -u
  2. reboot


Ускорение синхронизации

  1. echo 500000 > /proc/sys/dev/raid/speed_limit_min
  2. echo 600000 > /proc/sys/dev/raid/speed_limit_max

Форматирование диска

stride и stripe-width

Определим chunk

  1. mdadm --detail /dev/md0 | grep 'Chunk Size'
  2. 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 - посчитанные выше параметры
  1. 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

  1. blkid
  2. /dev/nvme0n1p1: UUID="14D1-F55F" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="ea7914a9-4f51-4eae-b322-f9ca54292359"
  3. /dev/nvme0n1p2: UUID="9ad6fd48-55ff-4e1f-b587-4a35ff9a49c7" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="ab124455-53d8-45a3-80c2-2d7138ad0825"
  4. /dev/sdd: UUID="57919414-2fd8-b06a-7dd6-0ce739e296b5" UUID_SUB="5a0c3ed5-b5b4-c71f-e390-9074467c553e" LABEL="homeBigData:0" TYPE="linux_raid_member"
  5. /dev/sdb: UUID="57919414-2fd8-b06a-7dd6-0ce739e296b5" UUID_SUB="68a44a85-e123-ac1f-a2be-43c34fe24469" LABEL="homeBigData:0" TYPE="linux_raid_member"
  6. /dev/md0: UUID="68a9d2e4-a0d7-4fb2-bf5d-134d04218ec9" BLOCK_SIZE="4096" TYPE="ext4"
  7. /dev/sdc: UUID="57919414-2fd8-b06a-7dd6-0ce739e296b5" UUID_SUB="3906aa12-1d3e-b554-1344-1e688a139016" LABEL="homeBigData:0" TYPE="linux_raid_member"
  8. /dev/sda: UUID="57919414-2fd8-b06a-7dd6-0ce739e296b5" UUID_SUB="0cd77a8b-0418-411b-9907-5c7972b19452" LABEL="homeBigData:0" TYPE="linux_raid_member"

а потом в fstab

  1. UUID=68a9d2e4-a0d7-4fb2-bf5d-134d04218ec9 /storage ext4 nodiratime,noatime,defaults,discard,commit=120 0 2

и монтируем

  1. mount -a
/www/wiki.tech-research.ru/data/pages/docs/raid_mfadm.txt · Последнее изменение: 2025/03/07 20:31 — PavelB

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki