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

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


howto:sysadmin:mdraid

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
howto:sysadmin:mdraid [2019/10/26 19:19]
127.0.0.1 внешнее изменение
howto:sysadmin:mdraid [2021/03/30 22:54] (текущий)
Строка 64: Строка 64:
 ====== Производительность ====== ====== Производительность ======
 [[https://​romanrm.net/​mdadm-raid|Хорошая статья]] [[https://​romanrm.net/​mdadm-raid|Хорошая статья]]
 +
 +
 +
 +====== mdraid ======
 +
 +== Создать raid-5 на 4 разделах ==
 + /​dev/​sdh1,​ /dev/sdi1, ... .
 +
 +   mdadm --create /dev/mdX --raid-devices=4 --level=5 /​dev/​sd{h,​i,​j,​k}1
 +
 +
 +== Ограничить скорость resync ==
 +<file /​etc/​sysctl.d/​mdadm.conf>​
 +dev.raid.speed_limit_max = 51200
 +</​file> ​
 +
 +Применить настройку без перезагрузки: ​
 +    sysctl --system
 +===== Остановить Resync =====
 +
 +Бывает полезно,​ когда нужно совместить resync с последующим копированием данных на свежесозданный массив.
 +  - Создаём массив;​
 +  - останавливаем синхронизацию;​
 +  - копируем данные.
 +  - Не забываем включить обратно чтобы синхронизировать оставшееся место.
 +
 +  echo frozen >  /​sys/​block/​md2/​md/​sync_action ​                                                                             ​
 +  echo none >  /​sys/​block/​md2/​md/​resync_start
 +  ​
 +  echo idle >  /​sys/​block/​md2/​md/​sync_action ​
 +  ​
 +  echo repair >  /​sys/​block/​md2/​md/​sync_action ​
 +  ​
 +
 +===== Настроить файловую систему ext4 =====
 +При создании этой файловой системы можно указать параметры нижележащего raid, чтобы метаданные файловой системы более равномерно распределялись между дисками. Программа mkfs подбирает оптимальные значения этих параметров,​ но при расширении raid (или конвертации raid5 в raid6) эти параметры следует изменить вручную.
 +
 +
 +**stride=stride-size**
 +Configure ​ the  filesystem ​ for  a RAID array with stride-size filesystem blocks. This is the number of blocks read or written to disk before moving to next disk. This mostly affects placement of filesystem metadata ​ like bitmaps at mke2fs(2) time to avoid placing them on a single disk, which can hurt the performance. ​ It may also be used by block allocator.
 +
 +**stripe_width=stripe-width**
 +Configure the filesystem for a RAID array with stripe-width filesystem blocks per stripe. This is typically be  stride-size ​ *  N, where N is the number of data disks in the RAID (e.g. RAID 5 N+1, RAID 6 N+2).  This allows the block allocator to prevent read-modify-write of the parity in a RAID stripe if possible when the data is written.
 +
 +
 +Файловую систему перед этим рекомендуется отмонтировать.
 +<​code>​
 +chunk size = 512kB 
 +block size = 4kB (recommended for large files, and most of time)
 +stride = chunk / block = 128
 +N = (n disks in raid6) - 2 
 +#or N = (n disks in raid5) - 1
 +stripe-width =  stride * N =  512
 +
 +tune2fs -E stride=128,​stripe-width=512 /dev/mdX
 +</​code>​
 +
 +===== Конвертировать raid на блочных устройствах в raid на разделах =====
 +Пример: ​
 +Массив создан на блочных устройствах:​
 +
 +  md1 : active raid5 sdb[4] sde[2] sdc[0] sdd[1]
 +      23435249664 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU] ​
 +
 +Это доставляет неудобства,​ т.к. теперь в массив можно добавить только диски в точности такого же или большего размера (если новый диск на пару мегабайт меньше,​ он не добавится).
 +
 +Чтобы исправить проблему,​ достаточно было бы уменьшить размер рейда на несколько мегабайт,​ а затем по очереди "​вынуть"​ из массива по одному диску, создать на них partition и добавить его обратно в массив. ​
 +
 +Сорян, но в mdraid это невозможно. Даже если уменьшить раздел командой ''​%%mdadm --grow%%'',​ всё равно диск не добавится с ошибкой "not large enough to join array"​. И не важно, какая версия метаданных,​ 0.9 или 1.2. Единственный выход -- перенести куда-то данные,​ создать партишены и пересоздать на них raid.
 +
 +===== Переименовать mdadm-раздел ===== 
 +Допустим,​ у насть есть раздел /dev/md3 с именем ''​computername:​3''​ и мы хотим переименовать его в othername:​1. Ситуация усложняется тем, что на разделе находится lvm-том ''​vg''​ с разделом /home.
 +
 +  1. Выкидываем всех пользователей из системы и отмонтируем /home.
 +  umount /home
 +  2. Останавливаем udev.
 +  service udev stop
 +  3. Останавливаем lvm-том. ​
 +  dmsetup remove vg-home
 +  4. Смотрим,​ на каких дисках собран md-раздел. ​
 +  Допустим это /dev/sdX3, /dev/sdY3
 +  5. Останавливаем mdadm-диск.
 +  mdadm --stop /dev/md3
 +  6. Запускаем диск со сменой имени.
 +  mdadm --assemble /dev/md1 --name othername:1 --update=name /​dev/​sd{X,​Y}3
 +  7. Обновляем имя в файле ''/​etc/​mdadm/​mdadm.conf''​
 +  mdadm --detail --scan
 +  8. Обновляем initramfs.
 +  update-initramfs -u
 +
  
  
howto/sysadmin/mdraid.1572106741.txt.gz · Последние изменения: 2019/10/26 19:19 — 127.0.0.1