Как преодолеть ограничение в 1 Гбит iSCSI между ESXi и VNXe

15

У меня большие проблемы с моей сетью iSCSI, и я не могу заставить ее работать так быстро, как могла.

Итак, я попробовал почти все, чтобы добиться максимальной производительности от SAN, задействовав специалистов VMware и EMC.

Краткое описание моего оборудования: 3 встроенных сетевых адаптера HP DL360 G7 / vSphere 5.5 / 4/4 сетевых адаптера PCIe Intel для iSCSI 2x HP 2510-24G 1x процессоры EMC VNXe 3100/2, каждый с 2 ​​выделенными сетевыми платами iSCSI / 24x 15k SAS RAID10 / 6x 7.2k SAS RAID6

Я использовал лучшие практики и равномерно распределил пулы хранения на обоих iSCSI-серверах. Я создал 2 сервера iSCSI, по одному на каждый процессор хранилища. Пожалуйста, смотрите изображение для моей конфигурации iSCSI.

конфигурация iSCSI

Трафик iSCSI отделяется через VLAN (запрещенный набор для других VLAN), я даже попробовал его с другим коммутатором HP серии 29xx. Управление потоком включено (тоже пробовал отключено), Jumbo отключен. Там нет маршрутизации.

На хостах ESX используются все сетевые карты iSCSI, так как я использовал настройку Round Robin для каждого хранилища данных. Я также попробовал это с политикой изменения пути 1 IO, поскольку многие другие, похоже, достигли производительности таким образом. Я тоже попробовал внутренние сетевые карты (Broadcom), но разницы нет. На коммутаторах я вижу, что порты используются очень равномерно, со стороны ESX и со стороны VNXe. У меня идеальная балансировка нагрузки, ОДНАКО: я не могу преодолеть всего 1 Гбит. Я понимаю, что VNXe оптимизирован для нескольких соединений, и Round Robin тоже в этом нуждается, но даже когда я выполняю vMotion хранилища между 2 хостами и 2 хранилищами данных (используя разные серверы iSCSI), я вижу прямую линию около 84 Мбит / с. через веб-интерфейс Unisphere. Я вижу эту строку так часто с точно таким же значением, что не могу поверить, что мои диски не поставь больше или задачи не требуют достаточно. Становится еще лучше: благодаря одному кабелю на каждом хосте и каждом процессоре хранения я достигаю ОДНУ ЖЕ производительность. Таким образом, я получил много избыточности, но никакой дополнительной скорости вообще.

Поскольку я видел довольно много людей, говорящих об их производительности iSCSI, я отчаянно пытаюсь выяснить, что не так с моей конфигурацией (которая была проверена и проверена квалифицированными специалистами VMware и EMC). Я благодарен за каждое мнение!

РЕДАКТИРОВАТЬ:

Да, я настроил vMotion для использования нескольких сетевых карт. Кроме того, хранилище vMotion всегда проходит через адаптеры iSCSI, а не через адаптеры vMotion. Я приложил скриншоты моей конфигурации.

привязка порта iSCSI

Направления iSCSI

Пути iSCSI

Я знаю, что Storage vMotion не является эталоном, однако мне пришлось делать это много в последние несколько дней, и верхний предел всегда был около 80 МБ / с. Пул из 6x 15k 600 ГБ дисков SAS в RAID 10 должен легко справиться с задачей, не так ли? Я сделал тест IO Meter для вас - пробовал некоторые из них, самый быстрый был 256 КиБ 100% Чтение. Я получил 64,45 МБ / с - мой Unisphere показывает примерно такую ​​же скорость. Это виртуальная машина, которая хранится в пуле диска SAS 6x15k 300 ГБ (RAID 10), что вряд ли какая-либо другая активность в это время дня.

IO Meter

Unisphere

EDIT2:

Извините за дубликаты имен пользователей, но я написал этот вопрос на работе, и он не использовал мое имя пользователя, которое я уже получил в Stock Overflow. Однако вот скриншот, показывающий мои настройки Round Robin. Это одинаково на всех хостах и ​​во всех магазинах.

По-круговой

Райан Харди
источник
Я не думаю, что что-то не так. Что именно вы ожидаете? Вы настроили мульти-NIC vMotion?
Ewwhite
3
Использование vmotion для хранилища не является эталоном для систем хранения, так как vmkernel ограничен на ввод-вывод и использование процессора. Вы пробовали бенчмаркинг с использованием Iometer и т. Д.? Что за диски в VNXe и какой тип рейда / пула памяти?
Пауска
Кроме того, вы можете опубликовать скриншот "пути управления" LUN внутри vSphere?
Пауска
Вы вошли в систему с другим пользователем, чем вы задавали вопрос, поэтому ваши изменения застряли в очереди.
Пауска
Спасибо за скриншоты, но это все еще не тот, о котором я просил. Нажмите на один из ваших хостов esxi, вкладку конфигурации, хранилища данных, выберите хранилище данных, которое вы хотите устранить, и нажмите ссылку «Свойства» в правом нижнем углу. Затем нажмите «Управление путями» и отправьте нам скриншот этого окна.
Пауска

Ответы:

1

Вполне возможно, что вы не сгенерируете достаточно IOPS для того, чтобы это действительно заработало.
Посмотрите здесь, как изменить настройку с 1000 IOPS по умолчанию на меньшее значение. (Это зависит от симметрии, но вы можете сделать то же самое для VMWare Round Robin Provider)

Я, однако, еще не уверен, что он действительно может использовать более одной ссылки полностью параллельно только с одним хранилищем данных. Я думаю, что вы должны выполнить тест IOMeter одновременно на нескольких хранилищах данных, чтобы увидеть преимущества. (Не уверен на 100%, хотя)

MichelZ
источник
Как указано в моем вопросе, я уже установил политику изменения пути на 1 вместо 1.000 - на самом деле ничего не изменилось.
Райан Харди
Ааа, я должен был пропустить эту часть, извини.
MichelZ
1

Создайте правило SATP для поставщика хранилища с именем EMC, задайте политику пути как Round Robine и IOPS по умолчанию от 1000 до 1. Это будет сохраняться при перезагрузках, и каждый раз, когда появляются новые EMC iSCSI LUN, это правило будет выбрано. Чтобы применить это к существующим EMC iSCSI LUN, перезагрузите хост.

esxcli storage nmp satp rule add --satp="VMW_SATP_DEFAULT_AA" \
  --vendor="EMC" -P "VMW_PSP_RR" -O "iops=1"

Я поиграл с изменением IOPS между 1 и 3 и считаю, что лучше всего работать на одной виртуальной машине. Тем не менее, если у вас много виртуальных машин и много хранилищ данных, 1 может быть не оптимальным ...

Убедитесь, что для каждого интерфейса VNXe установлено значение 9000 MTU. Кроме того, vSwitch с интерфейсами iSCSI должен быть установлен на 9000 MTU вместе с каждым VMKernel. На вашем VNXe создайте два сервера iSCSI - один для SPA и один для SPB. Свяжите один IP для каждого изначально. Затем просмотрите сведения о каждом сервере iSCSI и добавьте дополнительные IP-адреса для каждого активного интерфейса для каждого SP. Это даст вам круговое представление, которое вы ищете.

Затем создайте как минимум два хранилища данных. Свяжите одно хранилище данных с iSCSIServer-SPA, а другое - с iSCSIServer-SPB. Это гарантирует, что один из ваших SP не будет сидеть на холостом ходу.

Наконец, все интерфейсы на стороне ESX, которые используются для iSCSI, должны быть подключены к отдельному vSwitch со всеми активными интерфейсами. Однако вам понадобится VMkernel для каждого интерфейса на стороне ESX в указанном vSwitch. Вы должны переопределить порядок отработки отказа vSwitch, чтобы у каждого VMKernel был один активный адаптер, а все остальные не использовались. Это мой сценарий развертывания, который я использовал для подготовки хостов ESX. Каждый хост имеет 8 интерфейсов, 4 для локальной сети и 4 для трафика iSCSI / VMotion.

  1. Выполните настройку ниже

а. # DNS esxcli сеть ip dns поиск добавить --domain = mydomain.net

esxcli сетевой ip dns сервер добавить --server = XXXX

esxcli сетевой ip dns сервер добавить --server = XXXX

б. # установить обновление имени хоста соответственно

Имя хоста системы esxcli установлено --host = server1 --domain = mydomain.net

с. # добавить восходящие ссылки в vSwitch0 esxcli network vswitch standard uplink add --uplink-name = vmnic1 --vswitch-name = vSwitch0

esxcli сеть vswitch стандартная восходящая связь добавить --uplink-name = vmnic4 --vswitch-name = vSwitch0

esxcli сеть vswitch стандартная восходящая связь добавить --uplink-name = vmnic5 --vswitch-name = vSwitch0

д. # создать vSwitch1 для хранилища и установить MTU на 9000

стандартная сеть esxcli vswitch add --vswitch-name = vSwitch1

стандартная сеть esxcli vswitch --vswitch-name = vSwitch1 --mtu = 9000

е. # добавить ссылки на vSwitch1

esxcli сеть vswitch стандартная восходящая связь добавить --uplink-name = vmnic2 --vswitch-name = vSwitch1

esxcli сеть vswitch стандартная восходящая связь добавить --uplink-name = vmnic3 --vswitch-name = vSwitch1

esxcli сеть vswitch стандартная восходящая связь добавить --uplink-name = vmnic6 --vswitch-name = vSwitch1

esxcli сеть vswitch стандартная восходящая связь добавить --uplink-name = vmnic7 --vswitch-name = vSwitch1

е. # установить активную сетевую карту для vSwitch0

Набор отказоустойчивых политик esxcli network vswitch - vswitch-name = vSwitch0 - active-uplinks = vmnic0, vmnic1, vmnic4, vmnic5

грамм. # установить активную сетевую карту для vSwitch1

Набор аварийного переключения стандартной политики для сети ESXCLI - vswitch-name = vSwitch1 - active-uplinks = vmnic2, vmnic3, vmnic6, vmnic7

час # создавать группы портов для iSCSI и vmkernels для ESX01, а не ESX02

esxcli network vswitch стандартная группа портов add --portgroup-name = iSCSI-vmnic2 --vswitch-name = vSwitch1

Сетевой ip-интерфейс esxcli добавить --interface-name = vmk2 --portgroup-name = iSCSI-vmnic2 --mtu = 9000

Сетевой ip-интерфейс esxcli ipv4 set --interface-name = vmk2 --ipv4 = 192.158.50.152 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk2

сеть esxcli vswitch стандартная группа портов add --portgroup-name = iSCSI-vmnic3 --vswitch-name = vSwitch1

Сетевой ip-интерфейс esxcli добавить --interface-name = vmk3 --portgroup-name = iSCSI-vmnic3 --mtu = 9000

Сетевой ip-интерфейс esxcli ipv4 set --interface-name = vmk3 --ipv4 = 192.158.50.153 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk3

сеть esxcli vswitch стандартная группа портов add --portgroup-name = iSCSI-vmnic6 --vswitch-name = vSwitch1

Сетевой ip-интерфейс esxcli добавить --interface-name = vmk6 --portgroup-name = iSCSI-vmnic6 --mtu = 9000

Сетевой ip-интерфейс esxcli ipv4 set --interface-name = vmk6 --ipv4 = 192.158.50.156 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk6

esxcli network vswitch стандартная группа портов add --portgroup-name = iSCSI-vmnic7 --vswitch-name = vSwitch1

Сетевой ip-интерфейс esxcli добавить --interface-name = vmk7 --portgroup-name = iSCSI-vmnic7 --mtu = 9000

Сетевой ip-интерфейс esxcli ipv4 set --interface-name = vmk7 --ipv4 = 192.158.50.157 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk7

я. # создавать группы портов для iSCSI и vmkernels для ESX02, а не ESX01

esxcli network vswitch стандартная группа портов add --portgroup-name = iSCSI-vmnic2 --vswitch-name = vSwitch1

Сетевой ip-интерфейс esxcli добавить --interface-name = vmk2 --portgroup-name = iSCSI-vmnic2 --mtu = 9000

Сетевой ip-интерфейс esxcli ipv4 set --interface-name = vmk2 --ipv4 = 192.168.50.162 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk2

сеть esxcli vswitch стандартная группа портов add --portgroup-name = iSCSI-vmnic3 --vswitch-name = vSwitch1

Сетевой ip-интерфейс esxcli добавить --interface-name = vmk3 --portgroup-name = iSCSI-vmnic3 --mtu = 9000

Сетевой ip-интерфейс esxcli ipv4 set --interface-name = vmk3 --ipv4 = 192.168.50.163 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk3

сеть esxcli vswitch стандартная группа портов add --portgroup-name = iSCSI-vmnic6 --vswitch-name = vSwitch1

Сетевой ip-интерфейс esxcli добавить --interface-name = vmk6 --portgroup-name = iSCSI-vmnic6 --mtu = 9000

Сетевой ip-интерфейс esxcli ipv4 set --interface-name = vmk6 --ipv4 = 192.168.50.166 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk6

esxcli network vswitch стандартная группа портов add --portgroup-name = iSCSI-vmnic7 --vswitch-name = vSwitch1

Сетевой ip-интерфейс esxcli добавить --interface-name = vmk7 --portgroup-name = iSCSI-vmnic7 --mtu = 9000

Сетевой ip-интерфейс esxcli ipv4 set --interface-name = vmk7 --ipv4 = 192.168.50.167 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk7

к. # установить активный NIC для каждого iSCSI vmkernel

Набор отказоустойчивых политик esxcli network vswitch - portgroup-name = iSCSI-vmnic2 --active-uplinks = vmnic2

Набор аварийного переключения политики стандартной группы портов esxcli network vswitch --portgroup-name = iSCSI-vmnic3 --active-uplinks = vmnic3

Набор отказоустойчивой политики стандартной группы портов esxcli network vswitch --portgroup-name = iSCSI-vmnic6 --active-uplinks = vmnic6

Набор отказоустойчивой политики стандартной группы портов esxcli network vswitch --portgroup-name = iSCSI-vmnic7 --active-uplinks = vmnic7

к. # создавать группы портов

сеть esxcli vswitch стандартная группа портов add --portgroup-name = VMNetwork1 --vswitch-name = vSwitch0

сеть esxcli vswitch стандартная группа портов add --portgroup-name = VMNetwork2 --vswitch-name = vSwitch0

сеть esxcli vswitch стандартная группа портов add --portgroup-name = VMNetwork3 --vswitch-name = vSwitch0

л. # установить VLAN для групп портов VM

сеть esxcli vswitch стандартный набор групп портов -p VMNetwork1 --vlan-id ##

сеть esxcli vswitch стандартный набор групп портов -p VMNetwork2 --vlan-id ##

сеть esxcli vswitch стандартный набор групп портов -p VMNetwork3 --vlan-id ###

м. # удалить группу портов VM по умолчанию

сеть esxcli vswitch стандартная группа портов удалить --portgroup-name = "сеть VM" -v = vSwitch0

п. # включить программный адаптер iSCSI

esxcli iscsi комплект программного обеспечения --enabled = true

esxcli iscsi networkportal add -A vmhba33 -n vmk2

esxcli iscsi networkportal add -A vmhba33 -n vmk3

esxcli iscsi networkportal add -A vmhba33 -n vmk6

esxcli iscsi networkportal add -A vmhba33 -n vmk7

о. # переименовать локальное хранилище данных

имя хоста> $ var =

vim-cmd hostsvc / datastore / переименовать datastore1 local-$var

п. # Определить родной плагин типа Multi Path Storage Array для EMC VNXe 3300 и настраивать циклический IOPS от 1000 до 1

esxcli storage nmp satp rule add --satp = "VMW_SATP_DEFAULT_AA" --vendor = "EMC" -P "VMW_PSP_RR" -O "iops = 1"

кв. # обновить сеть

обновление сетевого брандмауэра esxcli

vim-cmd hostsvc / net / refresh

  1. Настройте NTP-клиента, используя vSphere Client для каждого хоста

а. Конфигурация -> Конфигурация времени -> Свойства -> Параметры -> Настройки NTP -> Добавить -> ntp.mydomain.net -> Установите флажок «Перезапустить службу NTP, чтобы применить изменения» -> ОК -> подождите… -> Выберите «Запуск и остановка с хоста» -> ОК -> Проверить «Клиент NTP включен -> ОК»

  1. Перезагрузить хост

  2. Продолжайте использовать EMC VNXe Storage Provisioning, вернитесь к этому руководству после завершения.

  3. Вход в клиент vSphere для каждого хоста

  4. Обновите каждое хранилище данных до VMFS-5

а. Конфигурация -> Хранение -> Выделить хранилище данных -> Обновить до VMFS-5

Роберт Марджесон
источник
0

К сожалению, я думаю, что с вашей настройкой все в порядке. Вы просто не можете использовать более 1 Гбит / с для одной виртуальной машины.

Дело в том, что вы не хотите просто использовать два (или более) сетевых карт, вы хотите использовать их одновременно в конфигурации, подобной RAID-0.

802.3ad, стандарт об агрегации на уровне каналов, который, я думаю, вы настроили на своих коммутаторах, обычно не может быть настроен для разделения одного соединения между разными сетевыми картами. Это связано с тем, как работает выбор интерфейсного алгоритма: он основан на MAC-адресах src и dst и / или IP / портах, и одно соединение всегда будет иметь одинаковые MAC / IP / порты .

Это не означает, что ваша установка не может выдвигать более высокие числа (как tput, так и IOPS), но это накладывает жесткое ограничение на то, какую производительность может извлечь одна виртуальная машина. Попробуйте загрузить 2 или 4 экземпляра IOMeter на 2/4 разных виртуальных машин: могу поспорить, что совокупная производительность будет намного выше, чем в тесте одной виртуальной машины, но ни одна машина не пройдет ограничение в 1 Гбит / с.

Мостовое соединение Linux и некоторые высокопроизводительные коммутаторы поддерживают различные методы агрегации каналов и обеспечивают агрегированные сетевые интерфейсы с полной полосой. Однако это имеет нетривиальные последствия для того, как другие коммутаторы / системы взаимодействуют с этими «нестандартными» методами агрегирования.

В любом случае, для сети хранения данных вы должны действительно включить jumbo-кадры, если они поддерживаются.

shodanshok
источник