Как наилучшим образом настроить SAN / инициаторы Dell PowerVault MD3600i для обеспечения максимальной производительности?
Недавний владелец Dell PowerVault MD3600i у меня странные результаты.
У меня есть выделенный 24x 10GbE Switch (PowerConnect 8024), настроенный на гигантские кадры 9K.
MD3600 имеет 2 RAID-контроллера, каждый из которых имеет 2x 10GbE Ethernet. На переключателе больше ничего нет; одна VLAN для трафика SAN.
Вот мой multipath.conf
defaults {
udev_dir /dev
polling_interval 5
selector "round-robin 0"
path_grouping_policy multibus
getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
prio_callout none
path_checker readsector0
rr_min_io 100
max_fds 8192
rr_weight priorities
failback immediate
no_path_retry fail
user_friendly_names yes
# prio rdac
}
blacklist {
device {
vendor "*"
product "Universal Xport"
}
# devnode "^sd[a-z]"
}
devices {
device {
vendor "DELL"
product "MD36xxi"
path_grouping_policy group_by_prio
prio rdac
# polling_interval 5
path_checker rdac
path_selector "round-robin 0"
hardware_handler "1 rdac"
failback immediate
features "2 pg_init_retries 50"
no_path_retry 30
rr_min_io 100
prio_callout "/sbin/mpath_prio_rdac /dev/%n"
}
}
И iscsid.conf:
node.startup = automatic
node.session.timeo.replacement_timeout = 15
node.conn[0].timeo.login_timeout = 15
node.conn[0].timeo.logout_timeout = 15
node.conn[0].timeo.noop_out_interval = 5
node.conn[0].timeo.noop_out_timeout = 10
node.session.iscsi.InitialR2T = No
node.session.iscsi.ImmediateData = Yes
node.session.iscsi.FirstBurstLength = 262144
node.session.iscsi.MaxBurstLength = 16776192
node.conn[0].iscsi.MaxRecvDataSegmentLength = 262144
После моих испытаний; Я едва могу прийти к 200 Мбит / с для чтения / записи.
Стоит ли ожидать большего? При условии, что у него есть двойной 10 GbE, мои мысли, где обойтись 400 Мбит / с.
Есть идеи? Методические рекомендации? Советы по устранению неполадок?
РЕДАКТИРОВАТЬ:
Массив настроен как один логический том объемом 5,7 ТБ. Все диски имеют размер 1 ТБ, 7,2 К, SAS 6 ГБ (ST1000NM0001). RAID - RAID10.
Некоторые строки конфигурации Swith:
interface Te1/0/23
storm-control broadcast
storm-control multicast
spanning-tree portfast
mtu 9000
switchport access vlan 40
exit
...
iscsi cos vpt 5
management access-list "default"
permit service ssh priority 1
permit service http priority 2
permit service https priority 3
И многолучевой вывод:
[root@xnode4 ~]# multipath -ll -v2
multipath.conf line 30, invalid keyword: prio
mpath1 (36d4ae520009bd7cc0000030e4fe8230b) dm-2 DELL,MD36xxi
[size=5.5T][features=3 queue_if_no_path pg_init_retries 50][hwhandler=1 rdac][rw]
\_ round-robin 0 [prio=400][active]
\_ 7:0:0:0 sdc 8:32 [active][ready]
\_ 9:0:0:0 sde 8:64 [active][ready]
\_ 11:0:0:0 sdi 8:128 [active][ready]
\_ 13:0:0:0 sdn 8:208 [active][ready]
\_ round-robin 0 [prio=0][enabled]
\_ 10:0:0:0 sdj 8:144 [active][ghost]
\_ 12:0:0:0 sdh 8:112 [active][ghost]
\_ 8:0:0:0 sdd 8:48 [active][ghost]
\_ 6:0:0:0 sdb 8:16 [active][ghost]
3 ответа
Судя по вашим комментариям и изменениям, вашим узким местом может быть хранилище. Во-первых, при условии, что у вас включено кэширование записи, все ваши записи до полного заполнения кэша должны выполняться со скоростью строки. Вы можете измерить это довольно легко, посчитав, сколько у вас кеша, и сделав 100% тест записи с меньшим объемом данных. Во-вторых, как только кэш начинает сбрасывать данные на диск, производительность записи на RAID-10 (при условии, что контроллеры не создают узких мест) будет вдвое ниже производительности чтения. Это потому, что каждая запись выполняется на два диска, а чтение выполняется только с одного. Одним из преимуществ RAID-10 является отсутствие четности для расчета, поэтому маловероятно, что процессоры контроллеров просто не в состоянии угнаться.
Далее, если ваш тест измеряет смесь операций чтения и записи, производительность, которую вы получите от контроллера хранилища, будет зависеть от типа ввода-вывода. Если это последовательно, вы получите большее количество МБ / с, но меньшее количество операций ввода-вывода. Если это случайный небольшой блок, вы получите небольшое количество МБ / с, но столько ввод-вывода, сколько могут обеспечить ваши диски. Каждый диск со скоростью 7200 об / мин будет обеспечивать определенное количество операций ввода-вывода, когда вы читаете непредсказуемо, поэтому число накоплений в рейде, умноженное на количество операций ввода-вывода на диск, будет вашим теоретическим пределом производительности.
Наконец, если у вас есть все хранилище на одном большом томе, представленном как один LUN, ваша очередь команд может быть переполнена. Нормальные операционные системы имеют настраиваемую глубину очереди команд (количество ожидающих операций ввода-вывода, которые они выстроят в очередь для хранилища), и каждый том /LUN имеет свою собственную очередь. Другая проблема с наличием всей памяти в одном и том же LUN состоит в том, что обычно IO отправляется одному контроллеру для этого LUN. Даже в активных / активных системах хранения (в которых я не уверен, что они есть) они могут иметь сходство для одного контроллера над другим. Цель состоит в том, чтобы создать группу томов и распределить их равномерно между контроллерами.
Может быть, вы хотите увеличить размер блока кеша в массиве с 4 до 16 КБ или 32 КБ (особенно если вы ищете последовательную рабочую нагрузку)
Сопоставьте это с одним диском и сделайте это снова со всеми вашими дисками в рейде 0.
Рейд 0 не будет иметь накладных расходов на рейд10 или рейд 5.
Также посмотрите на ваш кеш на MD. По умолчанию это 4k блоков, но оно может доходить до 32k блоков. У меня была разница в скорости между этими двумя значениями до 30%. Проверьте это для ваших рабочих нагрузок, хотя.
Используйте что-то вроде SQLIO, где вы можете использовать больше потоков. Мои номера наконец начали хорошо выглядеть, когда я стал усерднее работать.
И убедитесь, что MD настроен на 10G. Опция 10G или 1G на портах, она не выполняет автоматическое согласование.