Назад | Перейти на главную страницу

Как лучше всего настроить SAN / инициаторы Dell PowerVault MD3600i для достижения максимальной производительности?

Недавний владелец Dell PowerVault MD3600i я испытываю некоторые странные результаты.

У меня есть выделенный коммутатор 24x 10GbE (PowerConnect 8024), настройка на большие кадры 9K.

MD3600 имеет 2 контроллера RAID, каждый из которых имеет 2 разъема Ethernet 10GbE. На переключателе больше ничего нет; одна 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).

Некоторые строки конфигурации 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]

Судя по вашим комментариям и правкам, узким местом может быть хранилище. Во-первых, при условии, что у вас включено кэширование записи, все операции записи до заполнения кеша должны выполняться на линейной скорости. Вы можете довольно легко измерить это, выяснив, сколько у вас есть кеша, и выполнив 100% тест записи с меньшим количеством данных. Во-вторых, как только кеш начинает передавать данные на диск, производительность записи в RAID-10 (при условии, что контроллеры не создают узких мест) будет вдвое ниже производительности чтения. Это потому, что каждая запись выполняется на два диска, а чтение выполняется только с одного. Одно из преимуществ RAID-10 заключается в том, что нет четности для расчета, поэтому маловероятно, что процессоры контроллеров просто не смогут справиться с этим.

Далее, если ваш тест измеряет сочетание операций чтения и записи, производительность, которую вы получите от контроллера хранилища, будет зависеть от типа ввода-вывода. Если это последовательно, вы получите большее количество МБ / с, но меньшее количество операций ввода-вывода / с. Если это случайный small-block, вы получите небольшое количество МБ / с, но столько операций ввода-вывода / с, сколько могут обеспечить ваши диски. Каждый диск со скоростью 7200 об / мин обеспечит определенное количество операций ввода-вывода в секунду при непредсказуемом чтении, поэтому количество дисков в вашем рейде, умноженное на количество операций ввода-вывода в секунду на диск, будет вашим теоретическим пределом производительности.

Наконец, если у вас есть все хранилище в одном большом томе, представленном как один LUN, ваша очередь команд может быть переполнена. Обычные операционные системы имеют настраиваемую глубину очереди команд (количество невыполненных операций ввода-вывода, которые они выстраивают в линию для хранилища), и каждый том / LUN имеет свою собственную очередь. Еще одна проблема, связанная с размещением всего хранилища в одном LUN, заключается в том, что обычно операции ввода-вывода отправляются на один контроллер для этого LUN. Даже в активных / активных системах хранения (в которых я не уверен, что ваша) они могут иметь сходство для одного контроллера с другим. Цель состоит в том, чтобы создать группу томов и равномерно разделить их между контроллерами.

Может быть, вы хотите увеличить размер блока кеша в массиве с 4k до 16k или 32k (особенно, если вы ищете последовательную рабочую нагрузку).

Протестируйте его с одним диском и сделайте это снова со всеми дисками в рейде 0.

Raid 0 не будет иметь накладных расходов raid10 или raid 5.

Также посмотрите свой кеш на MD. По умолчанию используется 4 КБ блоков, но может быть до 32 КБ блоков. У меня разница в скорости между этими двумя значениями составила до 30%. Тем не менее, протестируйте его для своих рабочих нагрузок.

Используйте что-то вроде SQLIO, где вы можете использовать больше потоков. Мои цифры, наконец, стали хорошо выглядеть, когда я усерднее работал.

И убедитесь, что MD настроен на 10G. Для портов можно выбрать 10 Гбит / с или 1 Гбит / с, автосогласование не выполняется.