Cómo descifrar el límite iSCSI de 1 Gbit entre ESXi y VNXe


15

Tengo grandes problemas con mi red iSCSI y parece que no puedo hacer que funcione tan rápido como podría.

Así que he intentado casi todo para obtener el máximo rendimiento de mi SAN, habiendo involucrado a especialistas de VMware y EMC.

Una breve descripción de mi equipo: 3 NIC integradas HP DL360 G7 / vSphere 5.5 / 4/4 NIC Intel PCIe para iSCSI 2x HP 2510-24G 1x procesadores de almacenamiento EMC VNXe 3100/2, cada uno con 2 NIC dedicadas iSCSI / 24x 15k SAS RAID10 / 6x 7.2k SAS RAID6

Seguí las mejores prácticas y puse los grupos de almacenamiento de manera uniforme en ambos servidores iSCSI. Creé 2 servidores iSCSI, uno en cada procesador de almacenamiento. Por favor, vea la imagen de mi configuración iSCSI.

configuración de iSCSI

El tráfico iSCSI se separa a través de VLAN (prohibido establecerlo para otras VLAN), incluso lo probé con otro conmutador HP de la serie 29xx. El control de flujo está habilitado (también lo probé deshabilitado), Jumbo está deshabilitado. No hay enrutamiento involucrado.

En los hosts ESX, todas las NIC iSCSI se están utilizando ya que utilicé la configuración Round Robin para cada almacén de datos. También lo probé con una política de cambio de ruta de 1 IO, ya que muchos otros parecen haber obtenido rendimiento de esa manera. También probé las NIC internas (Broadcom), pero no hay diferencia. En los conmutadores puedo ver que los puertos se usan de manera muy uniforme, en el lado ESX y en el lado VNXe. Tengo un equilibrio de carga perfecto, SIN EMBARGO: no puedo superar 1 Gbit en total. Entiendo que VNXe está optimizado para múltiples conexiones y Round Robin también lo necesita, pero incluso cuando hago una vMotion de almacenamiento entre 2 hosts y 2 almacenes de datos (usando diferentes servidores iSCSI), puedo ver una línea recta de alrededor de 84 MBit / s a través de la interfaz web de Unisphere. Puedo ver esa línea con tanta frecuencia exactamente con el mismo valor que no puedo creer que mis discos no No entregue más o las tareas no son lo suficientemente exigentes. Se está volviendo aún mejor: con solo un cable en cada host y cada procesador de almacenamiento, logro el MISMO rendimiento. Así que obtuve mucha redundancia pero ninguna velocidad adicional.

Como he visto a muchas personas hablando sobre su rendimiento iSCSI, estoy desesperado por descubrir qué tiene de malo mi configuración (que ha sido probada y verificada por personas capacitadas de VMware y EMC). Estoy agradecido por cada opinión!

EDITAR:

Sí, he configurado vMotion para usar múltiples NIC. Además de ese almacenamiento, vMotion siempre pasa por los adaptadores iSCSI, no por los adaptadores vMotion. He adjuntado capturas de pantalla de mi configuración.

Enlace de puerto iSCSI

Destinos iSCSI

Rutas iSCSI

Sé que el almacenamiento vMotion no es un punto de referencia, sin embargo, tuve que hacer mucho de esto en los últimos días y el límite superior siempre ha sido de alrededor de 80 MB / s. Un conjunto de discos SAS de 6x 15k 600 GB en RAID 10 debería ser capaz de hacer mucho más, ¿no crees? Hice una prueba de IO Meter para usted, probé algunos de ellos, el más rápido fue 256 KiB 100% de lectura. Obtuve 64.45 MB / s, mi Unisphere también muestra aproximadamente la misma velocidad. Eso está en una máquina virtual que se almacena en un grupo de 6x 15k 300 GB de disco SAS (RAID 10) que casi ninguna otra actividad a esta hora del día.

Medidor IO

Unisphere

EDIT2:

Perdón por los nombres de usuario duplicados, pero escribí esta pregunta en el trabajo y no usó mi nombre de usuario que ya obtuve en Stock Overflow. Sin embargo, aquí está la captura de pantalla que muestra mi configuración de Round Robin. Es lo mismo en todos los hosts y todas las tiendas.

Round Robin


No creo que nada esté mal. ¿Qué esperas exactamente? ¿Ha configurado vMotion multi-NIC?
ewwhite

3
Hacer almacenamiento vmotion no es un punto de referencia para los sistemas de almacenamiento, ya que vmkernel está restringido en el uso de E / S y CPU. ¿Has probado el benchmarking con iometer, etc.? ¿Qué tipo de discos en VNXe y qué tipo de configuración de grupo de incursión / almacenamiento?
pauska

Además, ¿puede publicar una captura de pantalla de la "ruta de administración" de LUN dentro de vSphere?
pauska

Inició sesión con un usuario diferente al que solía hacer la pregunta, por lo que su edición se quedó atascada en una cola.
pauska

Gracias por las capturas de pantalla, pero aún no es la que pedí. Haga clic en uno de sus hosts esxi, la pestaña de configuración, almacenes de datos, seleccione el almacén de datos que desea solucionar y haga clic en el enlace "Propiedades" en la parte inferior derecha. Luego haga clic en "administrar rutas" y envíenos una captura de pantalla de esa ventana.
pauska

Respuestas:


1

Es posible que no generes suficientes IOPS para que esto realmente funcione.
Eche un vistazo aquí sobre cómo cambiar la configuración de 1'000 IOPS por defecto a un valor menor. (Esto es específico de Symmetrix, pero puede hacer lo mismo para VMWare Round Robin Provider)

Sin embargo, todavía no estoy convencido de si realmente puede utilizar más de un enlace totalmente en paralelo con un solo almacén de datos. Creo que debe realizar la prueba IOMeter en más de un almacén de datos en paralelo para ver los beneficios. (Aunque no estoy 100% seguro)


Como se indicó en mi pregunta, ya he establecido la política de cambio de ruta en 1 en lugar de 1.000, realmente no cambió mucho.
Ryan Hardy

Aah, debo haber pasado por alto esa parte, lo siento.
MichelZ

1

Cree una regla SATP para el proveedor de almacenamiento llamado EMC, establezca la política de ruta como Round Robine e IOPS desde 1000 por defecto. Esto será persistencia entre reinicios y cada vez que se presente un nuevo LUN de iSCSI de EMC, esta regla se seleccionará. Para que esto se aplique a los LUN iSCSI de EMC existentes, reinicie el host.

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

He jugado con el cambio de IOPS entre 1 y 3 y encuentro el mejor rendimiento en una sola VM. Dicho esto, si tiene muchas máquinas virtuales y muchos almacenes de datos, 1 puede no ser óptimo ...

Asegúrese de tener cada interfaz en el VNXe configurada en 9000 MTU. Además, el vSwitch con sus interfaces iSCSI debe establecerse en 9000 MTU junto con cada VMKernel. En su VNXe, cree dos servidores iSCSI: uno para SPA y otro para SPB. Asociar una IP para cada una inicialmente. Luego, vea los detalles de cada servidor iSCSI y agregue IP adicionales para cada interfaz activa por SP. Esto le dará el rendimiento de round robin que está buscando.

Luego cree al menos dos almacenes de datos. Asociar un almacén de datos con iSCSIServer-SPA y otro con iSCSIServer-SPB. Esto asegurará que uno de sus SP no esté allí inactivo.

Por último, todas las interfaces en el lado de ESX que se utilizan para iSCSI deben ir a un vSwitch separado con todas las interfaces como activas. Sin embargo, querrá un VMkernel para cada interfaz en el lado de ESX dentro de ese vSwitch designado. Debe anular el orden de conmutación por error de vSwitch para que cada VMKernel tenga un adaptador activo y todos los demás sin usar. Este es mi script de implementación que utilicé para aprovisionar hosts ESX. Cada host tiene un total de 8 interfaces, 4 para LAN y 4 para tráfico iSCSI / VMotion.

  1. Realice la siguiente configuración

a. # DNS esxcli network ip dns search add --domain = mydomain.net

esxcli network ip dns server add --server = XXXX

esxcli network ip dns server add --server = XXXX

si. # establecer la actualización del nombre de host en consecuencia

conjunto de nombres de host del sistema esxcli --host = server1 --domain = mydomain.net

C. # agregar enlaces ascendentes a vSwitch0 esxcli red vswitch enlace ascendente estándar agregar --uplink-name = vmnic1 --vswitch-name = vSwitch0

esxcli network vswitch estándar enlace ascendente agregar --uplink-name = vmnic4 --vswitch-name = vSwitch0

esxcli network vswitch estándar enlace ascendente agregar --uplink-name = vmnic5 --vswitch-name = vSwitch0

re. # crea vSwitch1 para almacenamiento y establece MTU en 9000

esxcli network vswitch standard add --vswitch-name = vSwitch1

esxcli network vswitch set estándar --vswitch-name = vSwitch1 --mtu = 9000

mi. # agregar enlaces ascendentes a vSwitch1

esxcli network vswitch estándar enlace ascendente agregar --uplink-name = vmnic2 --vswitch-name = vSwitch1

esxcli network vswitch estándar enlace ascendente agregar --uplink-name = vmnic3 --vswitch-name = vSwitch1

esxcli network vswitch estándar enlace ascendente agregar --uplink-name = vmnic6 --vswitch-name = vSwitch1

esxcli network vswitch estándar enlace ascendente agregar --uplink-name = vmnic7 --vswitch-name = vSwitch1

F. # establecer NIC activa para vSwitch0

conjunto de conmutación por error de directiva estándar de red vswitch de esxcli --vswitch-name = vSwitch0 --active-uplinks = vmnic0, vmnic1, vmnic4, vmnic5

sol. # establecer NIC activa para vSwitch1

conjunto de conmutación por error de directiva estándar de red vswitch de esxcli --vswitch-name = vSwitch1 --active-uplinks = vmnic2, vmnic3, vmnic6, vmnic7

h. # crear grupos de puertos para iSCSI y vmkernels para ESX01 no ESX02

esxcli network vswitch standard portgroup add --portgroup-name = iSCSI-vmnic2 --vswitch-name = vSwitch1

esxcli network ip interface add --interface-name = vmk2 --portgroup-name = iSCSI-vmnic2 --mtu = 9000

esxcli network ip interface 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 network ip interface add --interface-name = vmk3 --portgroup-name = iSCSI-vmnic3 --mtu = 9000

esxcli network ip interface 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 network ip interface add --interface-name = vmk6 --portgroup-name = iSCSI-vmnic6 --mtu = 9000

esxcli network ip interface 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 network ip interface add --interface-name = vmk7 --portgroup-name = iSCSI-vmnic7 --mtu = 9000

esxcli network ip interface ipv4 set --interface-name = vmk7 --ipv4 = 192.158.50.157 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk7

yo. # crear grupos de puertos para iSCSI y vmkernels para ESX02 no ESX01

esxcli network vswitch standard portgroup add --portgroup-name = iSCSI-vmnic2 --vswitch-name = vSwitch1

esxcli network ip interface add --interface-name = vmk2 --portgroup-name = iSCSI-vmnic2 --mtu = 9000

esxcli network ip interface 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 network ip interface add --interface-name = vmk3 --portgroup-name = iSCSI-vmnic3 --mtu = 9000

esxcli network ip interface 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 network ip interface add --interface-name = vmk6 --portgroup-name = iSCSI-vmnic6 --mtu = 9000

esxcli network ip interface 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 network ip interface add --interface-name = vmk7 --portgroup-name = iSCSI-vmnic7 --mtu = 9000

esxcli network ip interface 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. # establecer NIC activa para cada vmkernel iSCSI

esxcli network vswitch standard portgroup policy failover set --portgroup-name = iSCSI-vmnic2 --active-uplinks = vmnic2

esxcli network vswitch estándar portgroup policy failover set --portgroup-name = iSCSI-vmnic3 --active-uplinks = vmnic3

esxcli network vswitch estándar 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. # crear grupos de puertos

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

l. # establecer VLAN en grupos de puertos VM

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 ###

metro. # eliminar el grupo de puertos de VM predeterminado

esxcli network vswitch standard portgroup remove --portgroup-name = "VM Network" -v = vSwitch0

norte. # habilitar el adaptador de software iSCSI

conjunto de software 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

o. # cambiar el nombre del almacén de datos local

nombre de host> $ var =

vim-cmd hostsvc / datastore / rename datastore1 local-$var

pag. #Definir el complemento de tipo de matriz de almacenamiento de múltiples rutas nativas para EMC VNXe 3300 y ajustar IOPS round-robin de 1000 a 1

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

q. # actualizar redes

actualización del firewall de red esxcli

vim-cmd hostsvc / net / refresh

  1. Configure el cliente NTP con vSphere Client para cada host

a. Configuración -> Configuración de hora -> Propiedades -> Opciones -> Configuración NTP -> Agregar -> ntp.mydomain.net -> Marque "Reiniciar el servicio NTP para aplicar los cambios" -> Aceptar -> espere ... -> Seleccione "Iniciar y detener con host" -> Aceptar -> Marcar "Cliente NTP habilitado -> Aceptar

  1. Reiniciar host

  2. Continúe con el aprovisionamiento de almacenamiento de EMC VNXe, regrese a esta guía cuando haya terminado

  3. Inicie sesión en el cliente vSphere por host

  4. Actualice cada almacén de datos a VMFS-5

a. Configuración -> Almacenamiento -> Resaltar almacén de datos -> Actualizar a VMFS-5


0

Desafortunadamente, creo que no hay nada malo con su configuración. Simplemente no puede usar más de 1 Gb / s para una sola VM.

El punto aquí es que no desea simplemente usar dos (o más) NIC, desea usarlas simultáneamente , en una configuración similar a RAID-0.

802.3ad, el estándar sobre la agregación a nivel de enlace y que creo que configuró en sus conmutadores, generalmente no se puede configurar para dividir una sola conexión en diferentes NIC. Esto se debe a cómo funciona la selección de interfaz-alg: se basa en MAC y / o IP / puertos src y dst, y una sola conexión siempre tendrá los mismos MAC / IP / puertos .

Esto no significa que su configuración no pueda impulsar números más altos (tanto como tput como IOPS), pero esto pone un límite estricto a la cantidad de rendimiento que puede extraer una sola VM. Intente cargar 2 o 4 instancias de IOMeter en 2/4 máquinas virtuales diferentes: apuesto a que la tput agregada será mucho mayor que el punto de referencia de una sola máquina virtual, pero ninguna máquina pasará el límite de 1 Gb / s.

El puente de Linux y algunos conmutadores de gama alta admiten diferentes métodos de agregación de enlaces y permiten interfaces de red agregadas y completamente divididas. Sin embargo, esto tiene ramificaciones no triviales sobre cómo otros conmutadores / sistemas interactúan con estos métodos de agregación "no estándar".

De todos modos, para la red de almacenamiento, realmente debería habilitar las tramas gigantes, si es compatible.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.