En mi servidor de archivos local tengo raid-6 en unidades de disco duro 7x.
dd if=/dev/zero of=tempfile bs=1M count=2048 conv=fdatasync
La prueba de velocidad local me da 349 MB / s de velocidad de escritura.
Las escrituras remotas a Samba desde SSD (> 2 Gb / s de velocidad de lectura) me dan 259 MB / s de escrituras. Pero las escrituras remotas en la unidad iSCSI (en el iniciador iSCSI de Win10) me dan solo 151 Mb / s de escrituras.
configuración de raid6: tamaño de fragmento de 128K, stripe_cache_size = 8191. El mapa de bits de intención de escritura está en SSD (Samsung 860 PRO, fragmento de mapa de bits 4096K).
Array montado con opciones: rw,noatime,nobarrier,commit=999,stripe=128,data=writeback
configuración de open-iscsi: el objetivo se basa en un archivo de 4Tb.
¿Alguna pista de por qué iSCSI es más lento que Samba en escrituras? ¿Alguna pista sobre cómo mejorar la velocidad de escritura de iSCSI?
Supongo que tiene algo que ver con el deseo de open-iscsi de vaciar las escrituras en el disco después de cada operación, lo que aumenta la amplificación de escritura en raid6 debido a reescrituras de paridad excesivas. Pero no estoy seguro de cómo solucionarlo. Acelere más que la seguridad de los datos actualmente escritos en caso de corte de energía.
Como nota al margen, el objetivo iSCSI de ietd más antiguo tenía la capacidad de habilitar el modo de reescritura (usando IOMode=wb
) y la velocidad de escritura sostenida era mucho más rápida. Desafortunadamente, parece estar actualmente sin mantenimiento.
fuente
Respuestas:
En primer lugar, el RAID-6 es el problema debido al cálculo de doble paridad. En segundo lugar, puede conectar el objetivo iSCSI dos veces en MS iSCSI Initiator, habilitar RR o Profundidad de cola mínima (desafortunadamente, Win10 no admite rutas múltiples, por lo que puede probarlo con Windows Server).
De hecho, el acceso a nivel de bloque debe ser más rápido que el acceso a nivel de archivo. ¿Qué tipo de herramienta de evaluación comparativa está utilizando desde el sitio de Windows? Recomendaría usar diskspd o FIO. Además, puede usar algo como Starwind como un objetivo iSCSI mucho más rápido.
https://www.starwindsoftware.com/starwind-virtual-san#Hyper-V
fuente
iSCSI debe usarse a nivel de bloque, la descripción de su configuración parece que está utilizando un sistema de archivos, colocando un archivo en él y luego ejecutando este archivo como capa de bloque iSCSI.
Esto está lejos de ser ideal, y definitivamente no es una configuración para comparar velocidades. Intente usar lvm en la parte superior de la raid6 para segmentar el espacio y permanecer en la capa de bloque para iSCSI, o use raid6 directamente como dispositivo iSCSI.
En su configuración actual, los datos se transfieren a través de la red, golpeando un archivo en el sistema de archivos, que (muy probablemente) no está optimizado para este tipo de carga de trabajo, y también se comparte con otros procesos. Es posible hacer dicha configuración con iSCSI, pero debe considerarse como una solución alternativa no optimizada.
fuente
Tenga en cuenta que
dd
es un punto de referencia muy simple y es MUY propenso a las distorsiones. Por ejemplo,dd
está escribiendo ceros: si algo tiene un caso especial para los datos llenos de ceros (por ejemplo, porque puede hacer compresión), verá un rendimiento fantástico pero cambiará a escribir "datos reales" distintos de cero y de repente ese rendimiento puede desaparecer. ..Para responder a su pregunta (como en todas las evaluaciones comparativas), realmente tiene que aislar las piezas para identificar la parte que introduce el problema. Por ejemplo, ¿escribir en el sistema de archivos de Windows directamente (y no a través de iSCSI) también es extremadamente rápido? Si toma la misma configuración de hardware y ejecuta Linux en lugar de Windows, ¿es igual de rápido o se ralentiza? ¿Qué sucede si cambias a una herramienta de referencia como fio ?
Lamentablemente, hay demasiadas posibilidades para poder responder bien a una pregunta como esta ...
fuente