РЕДАКТИРОВАТЬ: решения моей проблемы приведены ниже
Я хочу создать хорошо оптимизированный массив RAID6 с mdadm с разделом XFS в системе CentOS. Он будет включать десять дисков ST3000DM001 Seagate 3 ТБ, и я буду записывать по несколько терабайт за раз, все в файлах размером более 100 МБ, через гигабитное соединение Ethernet. Чем больше я читаю о настройке RAID (согласовании вещей друг с другом и т. Д.), Тем больше мне кажется, что я не знаю, что делаю.
В частности, мне нужна помощь с моими командами mdadm --create и mkfs.xfs, а также советы о том, нужно ли мне изменить что-нибудь еще в оборудовании или ОС.
Глядя на онлайн-ресурсы, я могу предположить, что
Размер блока RAID6: 2 МБ (это только предположение)
Размер блока XFS: 4 КиБ (я предполагаю, что это размер страницы для моей системы, и я понимаю, что не могу пойти выше)
XFS agcount: 64 (это только предположение)
sunit = 4096, ширина = 32768
Итак, похоже, мои команды должны быть:
# mdadm --create /dev/md0 --chunk=2048 --level=6 --raid-devices=10 /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdh /dev/sdi /dev/sdj /dev/sdk
# parted /dev/md0
mklabel gpt
mkpart primary 0.00TB 27.00TB
# mkfs.xfs -L /big_raid -b size=4096 -d agcount=64,sunit=4096,swidth=32768 /dev/md0p1
Но я просто хотел бы получить любой совет. Я сделал массив RAID5 с аналогичными настройками, и он был довольно медленным, писал со скоростью 20 МБ / с (что было 1/5 скорости, которую я мог получить с одним диском)
РЕДАКТИРОВАТЬ:
Итак, я обнаружил, что Seagate ST3000DM001, возможно, был худшим диском, который я мог бы выбрать согласно Backblaze, поэтому первое: не покупайте их! Я думаю, что 4 из 10 терпят неудачу за полтора года
Я построил RAID6 со следующими изменениями, и он работал в 5 раз быстрее, но я не уверен, насколько каждое отдельное изменение имело значение.
Из эта страница
Отключите NCQ на каждом диске. Для каждой поездки
# echo 1 > /sys/block/sd[driveletterhere]/device/queue_depth
Установить упреждающее чтение
# blockdev --setra 65536 /dev/md[raidnumberhere]
Установите stripe-cache_size для RAID
# echo 16384 > /sys/block/md[raidnumberhere]/md/stripe_cache_size
Надеюсь, что это поможет любому, кто найдет это, в поисках того же самого, что и я! Для справки, мой процессор - AMD A4-5300, и у меня 8 ГБ оперативной памяти, и эта настройка почти не касается ни одного из них.
Я согласен. За исключением того, что вам не нужно запускать parted на md0, просто создайте раздел.
# mdadm --create /dev/md0 --chunk=2048 --level=6 --raid-devices=10 /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdh /dev/sdi /dev/sdj /dev/sdk
# mkfs.xfs -L /big_raid -b size=4096 -d agcount=64,sunit=4096,swidth=32768 /dev/md0
По моему опыту, изменение размера блока не сильно улучшает производительность. Это всегда всего лишь 1-2%, ничего страшного.
Создание рейда на дисках напрямую может вызвать некоторые проблемы в некоторых системах, даже хуже, если вы хотите использовать его в качестве загрузочного диска. Поэтому я бы использовал разделение на дисках, чтобы создать по 1 разделу gpt на каждом. Разделение было бы неплохо выровнять - который разделяет поддерживает (пожалуйста, следуйте https://www.google.cz/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=parted%20alignment%20partitions), а затем создать md0 на / dev / sda1, / dev / sdb1, ...