У меня большие проблемы с моей сетью iSCSI, и я не могу заставить ее работать так быстро, как могла.
Так что я испробовал практически все, чтобы получить полную производительность от моей SAN, привлекая специалистов VMware и EMC.
Краткое описание моего оборудования: 3x HP DL360 G7 / vSphere 5.5 / 4 встроенных сетевых адаптера / 4 PCIe Intel NIC для iSCSI 2x HP 2510-24G 1x EMC VNXe 3100/2 процессора хранения, каждый с 2 выделенными сетевыми картами iSCSI / 24x 15k SAS RAID10 / 6 дисков SAS RAID6 7.2k
Я применил передовой опыт и равномерно разместил пулы хранения на обоих 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 Мбит / s через веб-интерфейс Unisphere. Я так часто вижу эту строку с одним и тем же значением, что не могу поверить, что мои диски не справились бы с большей нагрузкой или задачи были недостаточно требовательными. Становится еще лучше: имея только один кабель на каждом хосте и каждом процессоре хранения, я добиваюсь ОДНОЙ производительности. Так что у меня много избыточности, но никакой дополнительной скорости.
Поскольку я видел, как многие люди говорят о своей производительности iSCSI, я отчаянно пытаюсь выяснить, что не так с моей конфигурацией (которая была протестирована и проверена обученными людьми из VMware и EMC). Благодарю за каждое мнение!
РЕДАКТИРОВАТЬ:
Да, я настроил vMotion на использование нескольких сетевых адаптеров. Кроме того, хранилище vMotion всегда проходит через адаптеры iSCSI, а не через адаптеры vMotion. Я приложил скриншоты своей конфигурации.
Я знаю, что Storage vMotion не является эталоном, однако мне приходилось делать много этого в последние несколько дней, и верхний предел всегда составлял около 80 МБ / с. Пул из 6 дисков SAS по 15 тыс. 600 ГБ в массиве RAID 10 легко сможет обеспечить гораздо больше, не так ли? Я сделал для вас тест IO Meter - попробовал некоторые из них, самый быстрый был 256 КБ при 100% чтении. Получил 64,45 МБ / с - примерно такая же скорость у меня и Unisphere. Это виртуальная машина, которая хранится в пуле из 6 дисков SAS по 15 тыс. 300 ГБ (RAID 10), что практически не вызывает каких-либо других действий в это время суток.
РЕДАКТИРОВАТЬ2:
Извините за повторяющиеся имена пользователей, но я написал этот вопрос на работе, и он не использовал мое имя пользователя, которое я уже получил на Stock Overflow. Однако вот скриншот, показывающий мои настройки Round Robin. Это одинаково на всех хостах и во всех магазинах.
Создайте правило SATP для поставщика хранилища с именем EMC, установите политику пути как Round Robine и IOPS по умолчанию с 1000 до 1. Это будет постоянство при перезагрузках, и это правило будет применяться каждый раз, когда будут представлены новые LUN EMC iSCSI. Чтобы это применимо к существующим логическим модулям EMC iSCSI, перезагрузите хост.
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 для LAN и 4 для трафика iSCSI / VMotion.
а. # DNS esxcli network ip dns search add --domain = mydomain.net
esxcli network ip dns server add --server = X.X.X.X
esxcli network ip dns server add --server = X.X.X.X
б. # установить соответствующее обновление имени хоста
Имя хоста системы esxcli установлено --host = server1 --domain = mydomain.net
c. # добавить аплинки в сеть vSwitch0 esxcli vswitch standard uplink add --uplink-name = vmnic1 --vswitch-name = vSwitch0
esxcli network vswitch standard uplink add --uplink-name = vmnic4 --vswitch-name = vSwitch0
esxcli network vswitch standard uplink add --uplink-name = vmnic5 --vswitch-name = vSwitch0
d. # создать vSwitch1 для хранения и установить MTU равным 9000
esxcli network vswitch standard add --vswitch-name = vSwitch1
Стандартный набор vswitch сети esxcli --vswitch-name = vSwitch1 --mtu = 9000
е. # добавить аплинки к vSwitch1
esxcli network vswitch standard uplink add --uplink-name = vmnic2 --vswitch-name = vSwitch1
esxcli network vswitch standard uplink add --uplink-name = vmnic3 --vswitch-name = vSwitch1
esxcli network vswitch standard uplink add --uplink-name = vmnic6 --vswitch-name = vSwitch1
esxcli network vswitch standard uplink add --uplink-name = vmnic7 --vswitch-name = vSwitch1
f. # установить активную сетевую карту для vSwitch0
esxcli network vswitch standard policy failover set --vswitch-name = vSwitch0 --active-uplinks = vmnic0, vmnic1, vmnic4, vmnic5
грамм. # установить активную сетевую карту для vSwitch1
esxcli network vswitch standard policy failover set --vswitch-name = vSwitch1 --active-uplinks = vmnic2, vmnic3, vmnic6, vmnic7
час # создать группы портов для iSCSI и vmkernels для ESX01, а не для ESX02
esxcli network vswitch standard portgroup add --portgroup-name = iSCSI-vmnic2 --vswitch-name = vSwitch1
esxcli сетевой IP-интерфейс добавить --interface-name = vmk2 --portgroup-name = iSCSI-vmnic2 --mtu = 9000
esxcli сетевой IP-интерфейс 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 standard portgroup add --portgroup-name = iSCSI-vmnic3 --vswitch-name = vSwitch1
esxcli сетевой IP-интерфейс добавить --interface-name = vmk3 --portgroup-name = iSCSI-vmnic3 --mtu = 9000
esxcli сетевой IP-интерфейс 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 standard portgroup add --portgroup-name = iSCSI-vmnic6 --vswitch-name = vSwitch1
esxcli сетевой IP-интерфейс добавить --interface-name = vmk6 --portgroup-name = iSCSI-vmnic6 --mtu = 9000
esxcli сетевой IP-интерфейс 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 standard portgroup add --portgroup-name = iSCSI-vmnic7 --vswitch-name = vSwitch1
esxcli сетевой IP-интерфейс добавить --interface-name = vmk7 --portgroup-name = iSCSI-vmnic7 --mtu = 9000
esxcli сетевой IP-интерфейс 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 standard portgroup add --portgroup-name = iSCSI-vmnic2 --vswitch-name = vSwitch1
esxcli сетевой IP-интерфейс добавить --interface-name = vmk2 --portgroup-name = iSCSI-vmnic2 --mtu = 9000
esxcli сетевой IP-интерфейс 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 standard portgroup add --portgroup-name = iSCSI-vmnic3 --vswitch-name = vSwitch1
esxcli сетевой IP-интерфейс добавить --interface-name = vmk3 --portgroup-name = iSCSI-vmnic3 --mtu = 9000
esxcli сетевой IP-интерфейс 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 standard portgroup add --portgroup-name = iSCSI-vmnic6 --vswitch-name = vSwitch1
esxcli сетевой IP-интерфейс добавить --interface-name = vmk6 --portgroup-name = iSCSI-vmnic6 --mtu = 9000
esxcli сетевой IP-интерфейс 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 standard portgroup add --portgroup-name = iSCSI-vmnic7 --vswitch-name = vSwitch1
esxcli сетевой IP-интерфейс добавить --interface-name = vmk7 --portgroup-name = iSCSI-vmnic7 --mtu = 9000
esxcli сетевой IP-интерфейс ipv4 set --interface-name = vmk7 --ipv4 = 192.168.50.167 --netmask = 255.255.255.0 --type = static
vim-cmd hostsvc / vmotion / vnic_set vmk7
j. # установить активную сетевую карту для каждого iSCSI vmkernel
esxcli network vswitch standard portgroup policy failover set --portgroup-name = iSCSI-vmnic2 --active-uplinks = vmnic2
esxcli network vswitch standard portgroup policy failover set --portgroup-name = iSCSI-vmnic3 --active-uplinks = vmnic3
esxcli network vswitch standard portgroup policy failover set --portgroup-name = iSCSI-vmnic6 --active-uplinks = vmnic6
esxcli network vswitch standard portgroup policy failover set --portgroup-name = iSCSI-vmnic7 --active-uplinks = vmnic7
k. # создать группы портов
esxcli network vswitch standard portgroup add --portgroup-name = VMNetwork1 --vswitch-name = vSwitch0
esxcli network vswitch standard portgroup add --portgroup-name = VMNetwork2 --vswitch-name = vSwitch0
esxcli network vswitch standard portgroup add --portgroup-name = VMNetwork3 --vswitch-name = vSwitch0
л. # установить VLAN на группы портов ВМ
esxcli network vswitch standard portgroup set -p VMNetwork1 --vlan-id ##
esxcli network vswitch standard portgroup set -p VMNetwork2 --vlan-id ##
esxcli network vswitch standard portgroup set -p VMNetwork3 --vlan-id ###
м. # удалить группу портов виртуальной машины по умолчанию
esxcli network vswitch standard portgroup remove --portgroup-name = "VM Network" -v = vSwitch0
п. # включить программный адаптер iSCSI
esxcli iscsi software set --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 Multi 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"
q. # обновить сеть
Обновление сетевого брандмауэра esxcli
vim-cmd hostsvc / сеть / обновление
а. Конфигурация -> Конфигурация времени -> Свойства -> Параметры -> Настройки NTP -> Добавить -> ntp.mydomain.net -> Установите флажок «Перезапустить службу NTP, чтобы применить изменения» -> ОК -> подождите… -> Выберите «Начать и остановить с хостом» -> ОК -> Отметьте «Клиент NTP включен -> ОК
Перезагрузить хост
Продолжите работу с EMC VNXe Storage Provisioning, вернитесь к этому руководству по завершении
Вход в клиент vSphere для каждого хоста
Обновите каждое хранилище данных до VMFS-5
а. Конфигурация -> Хранилище -> Выделить хранилище данных -> Обновление до VMFS-5
Возможно, вы не генерируете достаточно операций ввода-вывода в секунду, чтобы это действительно сработало.
Посмотри Вот о том, как изменить настройку с 1000 IOPS по умолчанию на меньшее значение. (Это зависит от симметрии, но вы можете сделать то же самое для поставщика VMWare Round Robin)
Однако я еще не уверен, действительно ли он может использовать более одной ссылки полностью параллельно только с одним хранилищем данных. Я считаю, что вам нужно провести тест IOMeter одновременно на нескольких хранилищах данных, чтобы увидеть преимущества. (Хотя не уверен на 100%)
К сожалению, я думаю, что с вашей настройкой все в порядке. Вы просто не можете использовать более 1 Гбит / с для одной виртуальной машины.
Дело в том, что вы не хотите просто использовать две (или более) сетевые карты, вы хотите использовать их одновременно, в конфигурации типа RAID-0.
802.3ad, стандарт агрегации на уровне каналов, который, я думаю, вы настроили на своих коммутаторах, обычно не может быть настроен для разделения одного соединения на разные сетевые адаптеры. Это связано с тем, как работает выбор interface-alg: он основан на MAC-адресах src и dst и / или IP / портах, и одно соединение всегда будет иметь одинаковые MAC / IP / порты.
Это не означает, что ваша установка не может выдавать более высокие числа (как tput, так и IOPS), но это накладывает жесткий предел производительности, которую может извлечь одна виртуальная машина. Попробуйте загрузить 2 или 4 экземпляра IOMeter на 2/4 разных виртуальных машины: готов поспорить, что совокупная пропускная способность будет намного выше, чем эталонный тест отдельной виртуальной машины, но ни одна машина не преодолеет ограничение в 1 Гбит / с.
Мостовое соединение Linux и некоторые высокопроизводительные коммутаторы поддерживают различные методы агрегации каналов и обеспечивают полные агрегированные сетевые интерфейсы с чередованием. Однако это имеет нетривиальные последствия для взаимодействия других коммутаторов / систем с этими "нестандартными" методами агрегирования.
В любом случае, для сети хранения вам действительно следует включить jumbo-кадры, если они поддерживаются.