Мы настраиваем конфигурацию ADAPT0 (наподобие RAID-60) для файлового сервера.
У нас шесть пулов дисков. Каждый состоит из 14 дисков и настраивается с помощью ADAPT. В соответствии с Официальный технический документ Dell, ADAPT похож на RAID 6, но распределяет свободную емкость. На странице 13 указано, что размер блока составляет 512 Кбайт, а ширина полосы - 4 МиБ (более 8 дисков) для каждого пула дисков.
Насколько я понимаю, на каждые 14 дисковых пулов емкость 2 диска зарезервирована для резервных, 20% из оставшихся 12 дисков (емкость 2,4 диска) используется для четности, а 80% (9,6 диска) используется для хранения. Однако размер блока составляет 512 КиБ, а ширина полосы остается 4 МБ, поскольку мы записываем только на 8 дисков в один непрерывный блок.
Чтобы получить конфигурацию ADAPT0 (наподобие RAID-60), мы затем создали логический том, чередующийся по двум пулам дисков с помощью LVM. Наша цель - в конечном итоге создать 3 чередующихся тома, каждый из которых будет располагаться по двум дисковым пулам. Мы использовали размер полосы, соответствующий размеру аппаратного RAID (512 КиБ):
$ vgcreate vg-gw /dev/sda /dev/sdb
$ lvcreate -y --type striped -L 10T -i 2 -I 512k -n vol vg-gw
Затем настройте файловую систему XFS на чередующемся логическом томе. Следующий рекомендации от XFS.org и несколько других источников, мы сопоставили полосу su
к размеру полосы LVM и RAID (512 КБ) и установите ширину полосы sw
до 16, так как у нас 16 «дисков с данными».
$ mkfs.xfs -f -d su=512k,sw=16 -l su=256k /dev/mapper/vg--gw-vol
$ mkdir -p /vol/vol
$ mount -o rw -t xfs /dev/mapper/vg--gw-vol /vol/vol
Мы протестировали производительность последовательного ввода-вывода для блоков размером 4 КиБ на /dev/sda
и /dev/sdb
и /dev/mapped/vg--gw-vol
с помощью
fio --name=test --ioengine=posixaio --rw=rw --bs=4k --numjobs=1 --size=256g --iodepth=1 --runtime=300 --time_based --end_fsync=1
Мы были удивлены, увидев похожие характеристики:
Volumes Throughput Latency
--------------------- ---------- ----------
/dev/sda 198MiB/s 9.50 usec
/dev/sdb 188MiB/s 10.11 usec
/dev/mapped/vg--gw-vol 209MiB/s 9.06 usec
Если мы используем инструмент мониторинга ввода / вывода bwm-ng
, мы видим ввод / вывод для обоих /dev/sda
и /dev/sdb
при письме в /dev/mapped/vg--gw-vol
.
Мы правильно настроили? Более конкретно:
(1) Правильно ли было согласовать размер полосы LVM с размером аппаратного RAID (512 Кбайт)?
(2) Правильно ли было выровнять блок полосы XFS и ширину, как у нас (размер полосы 512 КБ и 16 дисков данных), или мы должны «абстрагировать» базовые тома (размер полосы 4 МБ и 2 диска данных)?
(3) Путаница усугубляется самопроверкой выходных данных блочных устройств:
$ grep "" /sys/block/sda/queue/*_size
/sys/block/sda/queue/hw_sector_size:512
/sys/block/sda/queue/logical_block_size:512
/sys/block/sda/queue/max_segment_size:65536
/sys/block/sda/queue/minimum_io_size:4096
/sys/block/sda/queue/optimal_io_size:1048576
/sys/block/sda/queue/physical_block_size:4096
Спасибо!
Я бы не стал вставлять слой RAID0 поверх ADAPT. Скорее, я бы создал простой линейный пул LVM, состоящий из двух массивов, или, в качестве альтернативы, создал бы один массив из 28 дисков (вообще не используя второй контроллер).
При линейной конкатенации LVM двух массивов XFS даст вам дополнительную производительность благодаря своей собственной стратегии группы распределения (из-за того, что файловая система одновременно выполняет несколько операций ввода-вывода для различных диапазонов LBA).
Однако один пул из 28 дисков должен обеспечивать немного лучшую эффективность использования пространства из-за меньшей общей свободной емкости по сравнению с данными пользователя.
Что касается параметров XFS, вы должны использовать su=512k,sw=8
на основе макета ADAPT. В любом случае, с высокопроизводительным контроллером, оснащенным большим кешем записи с защитой от потери мощности, это должно иметь незначительный эффект.