Requisito de velocidad de escritura: ¿posibilidades de 1.1GB / s?

29

Tendremos una máquina en el trabajo que, con el máximo rendimiento, debería ser capaz de empujar 50 ("cabezales de escritura") x 75 GB de datos por hora. Ese es el rendimiento máximo de ~ 1100 MB / s de velocidad de escritura. Para obtener eso de la máquina, se requieren dos líneas de 10GBi. Mi pregunta es qué tipo de servidor + tecnología puede manejar / almacenar dicho flujo de datos.

Actualmente para el almacenamiento de datos trabajamos con ZFS, aunque las velocidades de escritura nunca fueron una pregunta. (ni siquiera estamos cerca de estas velocidades) ¿Sería una opción ZFS (zfs en linux)? También necesitamos almacenar muchos datos, la "guía de TI" sugiere entre 50 y 75 TB en total. Por lo tanto, probablemente no puedan ser todos los SSD a menos que queramos ofrecerle a nuestro primogénito.

Algunas adiciones basadas en las excelentes respuestas:

  • el máximo es de 50x75 GB / hora durante el pico, que es inferior a 24 h (muy probablemente <6 h)
  • No esperamos que esto suceda pronto, lo más probable es que corramos 5-10x75GB / hora
  • es una máquina pre-alfa, sin embargo, se deben cumplir los requisitos (aunque hay muchos signos de interrogación en juego)
  • usaríamos NFS como la conexión de la máquina al servidor
  • diseño: máquina generadora -> almacenamiento (este) -> (incursión segura 6) -> clúster de cómputo
  • así que la velocidad de lectura no es esencial , pero sería bueno usarla desde el clúster de cómputo (pero esto es completamente opcional)
  • lo más probable es que sean archivos de datos grandes (no muchos pequeños)
SvennD
fuente
8
mb como en megaBIT o megaByte? Utilice MBi MiBi MByte o MB para denunciar bytes. También 2 líneas de 10 gbit le darán 2400 MByte / s
mzhaase
1
Ahora está más claro, gracias. Algunas preguntas mas. El rendimiento máximo es de 1.1 GBps, pero ¿cuál es el promedio? ¿Cuánto duran estos picos? ¿Y cuál es el rendimiento continuo mínimo que está dispuesto a aceptar? ¿La escritura es un archivo grande o varios archivos pequeños? ¿Qué tipo de protocolo se usará? ¿Qué tipo de redundancia quieres? Suena como algún tipo de equipo médico o científico, ¿puede vincular la hoja de datos? Como ya está utilizando ZFS, puede ponerse en contacto con una empresa de almacenamiento especializada de ZFS, de la cual hay un par. Podrían especificarte un sistema para ti.
mzhaase
2
¿Esto realmente tiene que hacerse con una sola máquina? El equilibrio de carga en varias máquinas podría facilitar esto. Puede usar el almacenamiento compartido o consolidar los datos más adelante. En AWS, puede usar un ELB, escalado automático, varias instancias de EC2 y EFS, pero parece que quiere hardware. Su pregunta no describe muy bien el caso de uso.
Tim
1
Solo una nota, no necesita un rendimiento "máximo": necesita un rendimiento "sostenido" de 1.1GBpS
jsbueno
1
@jsbueno Tienes razón, sin embargo, podemos elegir cuántos cabezales de escritura activar, por lo que 1 GB / s es el "peor de los casos", pero teniendo en cuenta que puede llevar horas, es un rendimiento sostenido.
SvennD

Respuestas:

18

Absolutamente ... ZFS en Linux es una posibilidad si está diseñado correctamente. Hay muchos casos de mal diseño de ZFS , pero bien hecho, se pueden cumplir sus requisitos.

Entonces, el principal determinante será cómo se conecta a este sistema de almacenamiento de datos. ¿Es NFS? CIFS? ¿Cómo se conectan los clientes al almacenamiento? ¿O el procesamiento, etc. se realiza en el sistema de almacenamiento?

Complete algunos detalles más y podemos ver si podemos ayudarlo.

Por ejemplo, si esto es NFS y con montajes síncronos, entonces definitivamente es posible escalar ZFS en Linux para satisfacer las necesidades de rendimiento de escritura y aún así mantener el requisito de capacidad de almacenamiento a largo plazo. ¿Los datos son comprimibles? ¿Cómo se conecta cada cliente? ¿Gigabit Ethernet?


Editar:

De acuerdo, voy a morder:

Aquí hay una especificación que cuesta aproximadamente $ 17k- $ 23k y cabe en un espacio de rack de 2U.

HP ProLiant DL380 Gen9 2U Rackmount
2 x Intel E5-2620v3 or v4 CPUs (or better)
128GB RAM
2 x 900GB Enterprise SAS OS drives 
12 x 8TB Nearline SAS drives
1 or 2 x Intel P3608 1.6TB NVMe drives

Esta configuración le proporcionaría 80 TB de espacio utilizable mediante RAID6 de hardware o RAIDZ2 de ZFS.

Dado que el enfoque es el rendimiento basado en NFS (suponiendo escrituras sincrónicas), podemos absorber todo eso fácilmente con las unidades P3608 NVMe (SLOG rayado). Pueden acomodar 3GB / s en escrituras secuenciales y tienen una calificación de resistencia lo suficientemente alta como para manejar continuamente la carga de trabajo que ha descrito. Las unidades se pueden sobreaprovisionar fácilmente para agregar algunas protecciones bajo un caso de uso de SLOG.

Con la carga de trabajo de NFS, las escrituras se fusionarán y se transferirán al disco giratorio. En Linux, sintonizamos esto para que se vacíe cada 15-30 segundos. Los discos giratorios podrían manejar esto y pueden beneficiarse aún más si estos datos son comprimibles.

El servidor se puede ampliar con 4 ranuras PCIe más abiertas y un puerto adicional para adaptadores FLR 10GbE de doble puerto. Entonces tiene flexibilidad de red.

ewwhite
fuente
gracias ewwwite; usaríamos NFS, y solo hay un cliente (la máquina) opcionalmente lo usaríamos como dispositivo de lectura desde nuestro clúster. (pero qué procesamiento o cómo se desconoce) Tenemos el "espacio" disponible en los servidores de almacenamiento de raid 6.
SvennD
@SvennD Si es NFS y con montajes síncronos, entonces definitivamente es posible escalar ZFS en Linux para satisfacer las necesidades de rendimiento de escritura y aún así mantener el requisito de capacidad de almacenamiento a largo plazo. ¿Los datos son comprimibles? Ese es otro factor. Sin embargo, el alcance de esto está más allá del consejo que podría dar en un foro en línea de forma gratuita. Mi información de contacto está disponible en mi perfil de ServerFault . Contáctame si necesitas discutir más.
ewwhite
55
ZFS es más que capaz de lo que estás pidiendo. El primer problema será asegurarse de que su hardware real sea ​​capaz de hacerlo. Va a ser bastante fácil crear accidentalmente un cuello de botella más apretado que 1GB / seg en el nivel del adaptador o plano posterior, si no tiene cuidado. Asegúrate de acertar esa parte, luego pregunta cómo evitar problemas en el lado de ZFS.
Jim Salter
@SvennD Editado con una especificación de diseño básica y costos aproximados.
ewwhite
Creo que recomendaría un Oracle X6-2L sobre un servidor HP. El servidor Oracle viene con cuatro puertos de red de 10GB listos para usar. Y en mi experiencia, HP le ahorra dinero por ILOM, licencias de software ILOM, etc., hasta el punto de que un servidor HP es más caro que una caja Oracle equivalente. Mi experiencia también me dice que la caja Oracle superará a la caja HP, y será mucho menos probable que la caja HP ​​tenga uno de esos cuellos de botella de hardware que @JimSalter menciona. Sí, comprar de Oracle puede ser doloroso.
Andrew Henle
23

Para una velocidad de escritura tan extrema, sugiero contra ZFS, BTRFS o cualquier sistema de archivos CoW. Usaría XFS, que es extremadamente eficiente en transferencias grandes / de transmisión.

Hay muchas informaciones faltantes (¿cómo planea acceder a estos datos? ¿Es importante la velocidad de lectura? ¿Va a escribir en fragmentos grandes? Etc.) para darle consejos específicos, sin embargo, algunos consejos generales son:

  • use XFS encima de una partición sin formato o un gran volumen LVM (no use volúmenes delgados)
  • ajuste el tamaño de ioblock para hacer frente de manera eficiente a grandes escrituras de datos
  • use una tarjeta RAID de hardware con caché de escritura protegida contra pérdida de potencia; si el uso de RAID de hardware está fuera de discusión, use un esquema RAID10 de software (evitando cualquier modo RAID basado en paridad)
  • use dos interfaces de red de 10 Gb / s con LACP (agregación de enlaces)
  • asegúrese de habilitar Jumbo Frames
  • como va a usar NFS, considere usar pNFS (v4.1) para aumentar la escalabilidad
  • seguramente muchas otras cosas ...
shodanshok
fuente
3
Además, si usa XFS, coloque el diario en un par SSD RAID1.
TB
2
Si usa una tarjeta RAID con un caché de escritura protegido contra pérdida de potencia, el diario puede dejarse en la matriz principal: el caché de escritura absorberá y fusionará las escrituras del diario. Además, según lo que describe el OP, la carga de metadatos debería ser bastante baja en comparación con la transmisión de datos.
shodanshok
2
ZFS funcionaría bien y puede ir mucho más rápido que XFS. Claro, necesitará configurarlo correctamente y tener RAM y SSD para ZIL y SLOG, pero eso probablemente no importe con las velocidades requeridas.
John Keates
3
Veo XFS en Linux como tecnología antigua. El OP podría ejecutar fácilmente ZFS sobre RAID de hardware. La razón por la que recomiendo ZFS es para permitir que el SLOG absorba las escrituras síncronas entrantes de NFS a baja latencia sin necesidad de un conjunto de SSD.
ewwhite
66
Un Shelby Cobra es "Tecnología antigua", pero aún puede fumar la mayoría de los automóviles por la puerta. Para empezar, ZFS nunca se diseñó como un sistema de archivos de alto rendimiento, y aunque es factible ajustarlo de manera que sea extremadamente rápido con una carga de trabajo particular, no está diseñado para ello de manera predeterminada. Se necesitará más hardware, mucha más memoria y mucho ajuste para que supere lo que XFS le ofrece de forma gratuita con algunas opciones de formato y montaje de archivos.
TB
4

Ethernet de 25 Gbps ya está en el límite de la corriente principal, mientras que NVMe con base PCIe aumentará ese tráfico fácilmente.

Como referencia, recientemente construí una pequeña solución de 'captura de registros' usando cuatro servidores regulares de doble xeon (HPE DL380 Gen9 en este caso), cada uno con 6 unidades NVMe, usé IP sobre Infiniband pero esas NIC de 25/40 Gbps serían las mismas y estamos capturando hasta 8GBps por servidor, funciona de maravilla.

Básicamente no es barato, pero es muy factible en estos días.

Chopper3
fuente
1
Sí, pero ¿cómo se almacenan ~ 50 TB en NVMe? Los hilanderos son baratos, entonces, ¿cómo nos fusionamos para mantener la velocidad a la par ...
SvennD
Buen punto, de manera realista solo tienes que obtener 4 x 4TB en un servidor, yo uso varios servidores, ¿presumiblemente no puedes? de lo contrario, son solo cargas de 2.5 "10krpm en R10
Chopper3
No quiero es más como eso, no necesitaremos esas especificaciones excepto para entrar por la puerta, y no quiero la pesadilla de la sobrecarga de múltiples servidores. por una sola máquina ¿R10 sería lo suficientemente rápido? (RAID harware?)
SvennD
Tenemos una caja de Windows 2012R2 que construimos con un kit de repuesto que no se estaba utilizando, la usamos como NAS, tiene 6 unidades SSD SAS de 400 GB internamente, 8 estanterías D2600 cada una con 25 unidades de disco SAS 10k de 25 GB y una D6000 estante con discos de 70 x 4TB y eso puede inundar fácilmente una NIC de 10 Gbps, no lo probé con una NIC de 25 Gb todavía tbh
Chopper3
1
@MSalters Hay varias unidades PMR de 8/10 TB (no SMR) con una velocidad de transferencia en el rango de 200 MB / s. Una matriz de 12 o 16 unidades, tanto en RAID10 como en RAID6, debe superar fácilmente la velocidad de transferencia requerida de 1.1 GB / s.
shodanshok
2

No suena como un gran problema. Nuestro proveedor local de hardware tiene esto como un producto estándar , aparentemente puede impulsar 1400 MB / s sostenido en modo de grabación de CCTV, que debería ser más difícil que sus requisitos máximos.

(El enlace es a la configuración predeterminada de 12 GB, pero señalan que 20x4 TB también es una opción. No hay experiencia personal con este servidor modelo en particular).

MSalters
fuente
44
Bueno, por "producto estándar" se refiere a una "caja de software negra" con 20 x 600 gb sas 15k y 3 x ssd de empresa. Es una oferta justa, obtuvimos uno similar de nuestro proveedor de hardware, pero el costo de la licencia para mí es una locura por algo que es básicamente gratuito (ZFS) ¡Gracias por compartir la compilación! (buen enlace)
SvennD
2

Las escrituras secuenciales a 1100 MB / s no son un problema con el hardware moderno. Como anécdota, mi configuración doméstica con unidades portátiles de 8x5900 RPM, unidades de 2x15000 RPM y unidades de 2x7200 RPM soporta 300 MB / s con una carga útil única de 16GB.

La red es de 10 GbE con cables de fibra, 9000 MTU en ethernet y la capa de aplicación es Samba 3.0. El almacenamiento está configurado en raid50 con tres bandas en tres volúmenes de raid5 de 4 unidades. El controlador es LSI MegaRAID SAS 9271-8i con hasta 6 Gb / s por puerto (tengo un multiplicador de puerto adicional y más lento).

Hable con cualquier administrador de sistemas experimentado y ellos deberían poder decirle exactamente qué controlador (es) y unidades cumplirían con sus requisitos.

Creo que puede probar con cualquier controlador de 12 Gb / sy configurar dos franjas duplicadas de ocho unidades de 7200 RPM cada una (casi cualquier unidad debería funcionar). Inicie 3-4 conexiones TCP para saturar el enlace y si un solo par de tarjetas de 10 GbE no puede manejarlo, use cuatro tarjetas.

Ярослав Рахматуллин
fuente
2

Algo tangente, pero considere usar InfiniBand en lugar de enlaces duales de 10GbE. Puede obtener tarjetas Infiniband de 56 Gbps bastante baratas, o tarjetas de 100 Gbps por no mucho más, y en Linux es fácil usar NFS con RDMA sobre IB, lo que le dará una latencia extremadamente baja y un rendimiento de velocidad de línea casi teórico (si su almacenamiento subyacente puede manejarlo). No necesita un interruptor, solo dos tarjetas InfiniBand y un cable de conexión directa (o un cable de fibra InfiniBand si necesita distancias más largas).

Una tarjeta Mellanox de 56 Gbps de un solo puerto (8x PCIe 3.0) como la MCB191A-FCAT cuesta menos de 700 dólares, y un cable de conexión directa de cobre de 2 metros equivale a 80 dólares.

El rendimiento generalmente expulsará 10 GbE del agua en todos los casos de uso. No hay inconvenientes, a menos que necesite acceder al servidor desde muchos clientes diferentes que no pueden usar InfiniBand (e incluso entonces, los conmutadores de Mellanox pueden conectar 10GbE y 40GbE a IB, pero eso es un poco más de una inversión, por supuesto).

Joakim Ziegler
fuente
1

Hacer esto con ZFS es posible, sin embargo, considere usar FreeBSD ya que FreeBSD tiene la pila de red más rápida. Esto permitiría posiblemente 100 GBit en una sola máquina.

1100 MBps parece mucho, pero puede lograrlo de manera realista utilizando solo discos duros normales. Dices que necesitas 75 TB de espacio, por lo que puedes usar 24 discos duros de 8 TB en los espejos. Esto le daría una velocidad de escritura de 12x de una sola unidad y una velocidad de lectura de 24x. Dado que estas unidades tienen más velocidad de escritura que 100 MBps, esto debería ser capaz de manejar fácilmente el ancho de banda. Asegúrese de no obtener unidades SMR, ya que tienen velocidades de escritura mucho más lentas.

ZFS crea sumas de verificación para cada bloque. Esto se implementa con un solo subproceso. Como tal, debe tener una CPU con una velocidad de reloj razonablemente rápida para no bloquear.

Sin embargo, los detalles exactos de implementación dependen en gran medida de los detalles.

mzhaase
fuente
12
"FreeBSD tiene una pila de red más rápida" [necesita cita]
Jim Salter
Exactamente. Linux es bastante capaz.
ewwhite
1

Hemos vinculado los datos de descarga de NIC 10G a un clúster Gluster sobre su cliente de fusibles. Se necesita un poco de ajuste que no creería en el rendimiento que puede lograr desde 3.0.

pozcircuitboy
fuente