Как преодолеть ограничение iSCSI в 1 Гбит между ESXi и VNXe
У меня большие проблемы с моей сетью 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, каждый с двумя выделенными сетевыми платами iSCSI / 24x 15k SAS RAID10 / 6x 7.2k SAS RAID6
Я использовал лучшие практики и равномерно распределил пулы хранения на обоих iSCSI-серверах. Я создал 2 сервера 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. Я приложил скриншоты моей конфигурации.
Я знаю, что vMotion для хранения данных не является эталоном, однако мне пришлось много чего делать в последние несколько дней, и верхний предел всегда был около 80 МБ / с. Пул из 6x 15k 600 ГБ дисков SAS в RAID 10 должен легко справиться с задачей, не так ли? Я сделал тест IO Meter для вас - пробовал некоторые из них, самый быстрый был 256 КиБ 100% Чтение. Я получил 64,45 МБ / с - мой Unisphere показывает примерно такую же скорость. Это виртуальная машина, которая хранится в пуле диска SAS 6x 15k 300 ГБ (RAID 10), что вряд ли что-либо другое в это время дня.
EDIT2:
Извините за дубликаты имен пользователей, но я написал этот вопрос на работе, и он не использовал мое имя пользователя, которое я уже получил в Stock Overflow. Однако вот скриншот, показывающий мои настройки Round Robin. Это одинаково на всех хостах и во всех магазинах.
3 ответа
Создайте правило SATP для поставщика хранилища с именем EMC, установите политику пути как Round Robine и IOPS по умолчанию от 1000 до 1. Это будет постоянство при перезагрузках, и каждый раз при появлении новых LUN EMC iSCSI это правило будет выбрано. Чтобы применить это к существующим 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.
- Выполните настройку ниже
а. # 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 network vswitch - 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 network 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 network 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 network 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 network 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 network 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 network vswitch стандартная группа портов удалить --portgroup-name="VM Network" -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
п. # Определить плагин Native Multiple Path Storage Array Type для 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
- Настройте NTP-клиента, используя vSphere Client для каждого хоста
а. Конфигурация -> Конфигурация времени -> Свойства -> Параметры -> Настройки NTP -> Добавить -> ntp.mydomain.net -> Установите флажок "Перезапустить службу NTP, чтобы применить изменения" -> ОК -> подождите... -> Выберите "Запуск и остановка с хоста" -> ОК -> Проверить "Клиент NTP включен -> ОК"
Перезагрузить хост
Продолжайте использовать EMC VNXe Storage Provisioning, вернитесь к этому руководству после завершения.
Вход в клиент vSphere для каждого хоста
Обновите каждое хранилище данных до VMFS-5
а. Конфигурация -> Хранение -> Выделить хранилище данных -> Обновление до VMFS-5
Вполне возможно, что вы не сгенерируете достаточно IOPS для того, чтобы это действительно заработало.
Посмотрите здесь, как изменить настройку с 1000 IOPS по умолчанию на меньшее значение. (Это зависит от симметрии, но вы можете сделать то же самое для VMWare Round Robin Provider)
Однако я еще не уверен, что он действительно может использовать более одной ссылки полностью параллельно только с одним хранилищем данных. Я думаю, что вы должны выполнить тест IOMeter одновременно на нескольких хранилищах данных, чтобы увидеть преимущества. (Не уверен на 100%, хотя)
К сожалению, я думаю, что с вашей настройкой все в порядке. Вы просто не можете использовать более 1 Гбит / с для одной виртуальной машины.
Дело в том, что вы не хотите просто использовать два (или более) сетевых карт, вы хотите использовать их одновременно в конфигурации, подобной RAID-0.
802.3ad, стандарт об агрегации на уровне каналов, который, я думаю, вы настроили на своих коммутаторах, обычно не может быть настроен для разделения одного соединения между разными сетевыми картами. Это связано с тем, как работает выбор интерфейсного алгоритма: он основан на MAC-адресах src и dst и / или IP/ портах, и одно соединение всегда будет иметь одинаковые MAC /IP/ порты.
Это не означает, что ваша установка не может выдвигать более высокие числа (как tput, так и IOPS), но это накладывает жесткое ограничение на то, какую производительность может извлечь одна виртуальная машина. Попробуйте загрузить 2 или 4 экземпляра IOMeter на 2/4 разных виртуальных машин: могу поспорить, что совокупная производительность будет намного выше, чем в тесте одной виртуальной машины, но ни одна машина не пройдет ограничение в 1 Гбит / с.
Мостовое соединение Linux и некоторые высокопроизводительные коммутаторы поддерживают различные методы агрегирования каналов и позволяют использовать полностью чередующиеся агрегированные сетевые интерфейсы. Однако это имеет нетривиальные последствия для того, как другие коммутаторы / системы взаимодействуют с этими "нестандартными" методами агрегации.
В любом случае, для сети хранения данных вы должны действительно включить Jumbo-кадры, если они поддерживаются.