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.
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.
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.
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.
fuente
Respuestas:
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)
fuente
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.
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.
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
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
Reiniciar host
Continúe con el aprovisionamiento de almacenamiento de EMC VNXe, regrese a esta guía cuando haya terminado
Inicie sesión en el cliente vSphere por host
Actualice cada almacén de datos a VMFS-5
a. Configuración -> Almacenamiento -> Resaltar almacén de datos -> Actualizar a VMFS-5
fuente
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.
fuente