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

Балансировка нагрузки multipathd на md3200i

Я работаю над настройкой кластера серверов с iSCSI MD3200i SAN для общего хранилища. Все работает хорошо, но у меня есть одна маленькая деталь, с которой я не могу работать. Похоже, что многопутевое переключение выполняется только с подключениями iSCSI к SAN. Я бы хотел, чтобы это работало в режиме балансировки нагрузки, чтобы он использовал каждый путь, а не только один или другой.

Здесь всегда отображается призрак, что означает, что он не используется.

[root@kvm-01]~# multipath -ll
mpath2 (36842b2b0006b9d87000004383bf558d9) dm-5 DELL,MD32xxi
[size=2.2T][features=3 queue_if_no_path pg_init_retries 50][hwhandler=1 rdac][rw]
\_ round-robin 0 [prio=100][active]
 \_ 8:0:0:0   sdb 8:16  [active][ready]
  \_ 7:0:0:0  sdc 8:32  [active][ghost]

Моя конфигурация multipathd:

[root@kvm-01]~# egrep -v '(#|^$)' /etc/multipath.conf
blacklist {
        device {
                vendor  "*"
                product "Universal Xport"
        }
        device {
                vendor  "*"
                product "MD3000"
        }
        device {
                vendor  "*"
                product "MD3000i"
        }
        device {
                vendor  "*"
                product "Virtual Disk"
        }
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z][[0-9]*]"
devnode "^cciss!c[0-9]d[0-9]*[p[0-9]*]"
devnode "^sda$"
}
defaults {
        user_friendly_names   yes
        polling_interval      5
        selector              "round-robin 0"
        path_checker          rdac
        path_grouping_policy  multibus
        rr_weight             uniform
        no_path_retry         30
        failback              immediate
        rr_min_io             100
        prio_callout          "/sbin/mpath_prio_rdac /dev/%n"
        max_fds               8192
}
devices {
        device {
                vendor                "DELL"
                product               "MD32xxi"
                hardware_handler      "1 rdac"
                features              "2 pg_init_retries 50"
        }
        device {
                vendor                "DELL"
                product               "MD32xx"
                hardware_handler      "1 rdac"
                features              "2 pg_init_retries 50"
        }
        device {
                vendor                "DELL"
                product               "MD36xxi"
                hardware_handler      "1 rdac"
                features              "2 pg_init_retries 50"
        }
}

Я пробовал различные настройки group_by и rr_weight, все с одинаковым результатом.

[root@kvm-01]~# lsmod | grep rdac
dm_rdac                41673  1
dm_multipath           58457  3 dm_round_robin,dm_rdac
scsi_mod              199001  14 dm_rdac,be2iscsi,ib_iser,iscsi_tcp,bnx2i,cxgb3i,libiscsi2,scsi_transport_iscsi2,scsi_dh,sr_mod,sg,libata,megaraid_sas,sd_mod

Я также пробовал загрузить scsi_dh_rdac, но это тоже не имело значения.

[root@kvm-01]~# egrep -v '(#|^$)' /etc/iscsi/iscsid.conf
node.startup = automatic
node.session.timeo.replacement_timeout = 30
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 = 15
node.session.err_timeo.abort_timeout = 15
node.session.err_timeo.lu_reset_timeout = 20
node.session.initial_login_retry_max = 8
node.session.cmds_max = 128
node.session.queue_depth = 32
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
discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768
node.conn[0].iscsi.HeaderDigest = None
node.session.iscsi.FastAbort = No
node.session.xmit_thread_priority = -20
node.conn[0].iscsi.MaxXmitDataSegmentLength = 0

Я уже некоторое время занимаюсь этим исследованием и обнаружил, что множество людей заставляют эту установку работать с MD3000i, но ни в одном случае не подтверждают 3200i. Я обнаружил, что один человек сказал, что он не поддерживает его, потому что вторичный контроллер пассивен по конструкции, но мне не удалось подтвердить это в документации Dell.

[root@kvm-01]~# uname -a
Linux kvm-01 2.6.18-238.9.1.el5 #1 SMP Tue Apr 12 18:10:13 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux

MD3200i (как и любой другой ребрендинг LSI) использует RDAC. Это алгоритм A / P.

Резюме

Единственное, что вы можете сделать для балансировки нагрузки, - это распределить LUN между контроллерами. Хотя он рекламирует себя как активный-активный, на самом деле это SAN с двойным активным действием. Таким образом, LUN может быть связан не более чем с одним процессором хранения одновременно, но оба контроллера могут быть активными и управлять LUN, выделенными для каждого контроллера. Это то, что в данном случае означает «Активный / Активный», что SAN может быть полностью использована, а не то, что один LUN может балансировать нагрузку двумя контроллерами одновременно.

подробности

Статус вашего пути для SDC говорит сам за себя, призрак == пассивный, так что вся ваша многопутевая конфигурация подходит для аварийного переключения. Ваша конфигурация активна / пассивна по определению.

http://sourceware.org/lvm2/wiki/MultipathUsageGuide

Этот резервный контроллер хранилища необходимо настроить для режима «Активный / Активный», чтобы выполнить то, что вам нужно; Это может быть ограничение SAN.

Проверка

Отвечая на другой вопрос с использованием того же SAN, я обнаружил документацию для SAN в Интернете и подтвердил, что эта марка и модель фактически являются двойными активными. Видеть:

Конфигурация Dell PowerVault MD3200i dm-multipath и проблемы производительности в Debian 6.0 (сжатие)