Я думаю, многие из нас, кто настраивал iSCSI Multipathing в VMware vSphere, задавался следующим вопросом: "А можно и, главное, нужно ли использовать "NIC Teaming" для сетевых интерфейсов, выделенных для iSCSI трафика?". Забегая вперед, скажу, что нет, не нужно, но об этом немного ниже. Ну, а сейчас я хочу упомянуть об источниках, которыми я пользовался для написания этой маленькой заметки:


  1. Why can you not use NIC Teaming with iSCSI Binding?
  2. vSphere 5.0 Storage Features Part 12 - iSCSI Multipathing Enhancements
  3. VMware: Creating iSCSI network in vSphere ESXi 5.0


Предположим, что в вашей виртуальной инфраструктуре есть стандартный свич (vSwitch) с двумя подключенными к нему сетевыми интерфейсами (vmnicX), на котором создано две портгруппы с незатейливыми именами: "iSCSI01" и "iSCSI02". Для лучшего понимания, вот вам схема (я думаю, большинство именно так и настраивает iSCSI Multipathing):

iscsi-scheme.png

Если следовать официальной документации, а ей и нужно следовать, то в настройках каждой портгруппы "iSCSI01" и "iSCSI02" на вкладке "NIC Teaming" нужно один сетевой интерфейс поместить в секцию Active, а другой - в секцию Unused. В нашем случае для двух портгрупп это будет выглядеть следующим образом:

iscsi.png

Казалось бы, почему мы не можем поместить второй сетевой интерфейс в каждой портгруппе в секцию Standby, что позволило бы в случае отказа первого сетевого интерфейса перейти на использование второго? В блоге "VMware vSphere Blog" нам дают по этому поводу следующее пояснение:

This requirement prevents the VMkernel port from floating across uplinks in the case of a failure. The reason for this is that if the physical NIC loses connectivity, it should be treated as a storage path failure, not a network failure. We want the Pluggable Storage Architecture (PSA) in the VMkernel to handle this event and failover to an alternate path to stay connected to the storage.

Попробую пояснить то, как я это себе представляю. Если у вас все настроено, как написано в документации, когда один сетевой интерфейс находится в секции Active, а другой - в секции Unused, то в этом случае хост ESXi одновременно установит сразу два соединения до хранилища (фактически, по два соединения на каждый подключенный к хосту LUN), одно соединение через vmk1 iSCSI01 (vmnic4), а другое - через vmk2 iSCSI02 (vmnic5). В этом случае, если выйдет из строя сетевой интерфейс vmnic4, то PSA автоматически и без простоя в работе сменит маршрут до хранилища на альтернативный через vmk2 iSCSI02 (vmnic5). В данном случае все будет работать замечательно и, я еще раз подчеркну - без простоя в работе.


Теперь давайте рассмотрим другой вариант, когда второй интерфейс в каждой потргруппе находится в секции Standby, и внезапно, как оно обычно бывает, выходит из строя сетевой интерфейс vmnic4. Что же произойдет? А произойдет очень страшное: PSA вместо того, чтобы переключиться на альтернативный путь до хранилища через vmk2 iSCSI02, будет пытаться установить новое соединение через vmk1 iSCSI01, но уже через интерфейс vmnic5, который находится в секции Standby. Соответственно, мы получим некоторый простой в работе, хорошо, если виртуальные машины это переживут, а ведь могут и не пережить.

Примечание: вышенаписанное является моим личным (и, не исключено, что и ошибочным, потому, что на практике я это все дело не проверял/тестировал) видением того, как вся эта кухня работает, после прочтения соответствующих документов.

Надеюсь, что я понятно и достаточно полно ответил на вопрос, озвученный в теме поста. Если у вас есть какие-то дополнения - пишите в комментариях.