Banda ZFS en la parte superior del RAID 6. del hardware ¿Qué podría salir mal?

9

Tengo 36 * 4TB HDD SAN Rack. El controlador RAID no era compatible con RAID60 y no más de 16 discos duros en un grupo RAID. Así que decidí hacer 2 grupos RAID6 de 16HDD o 4 de 8 HDD. Quiero obtener todo el almacenamiento como una partición.

Entonces, ¿qué podría salir mal si voy a usar el grupo zfs sobre RAID6 de hardware? Sí, sé que es muy recomendable usar discos duros nativos o modo de transferencia. Pero no tengo esta opción.

¿O debería mantenerme alejado de ZFS y las redadas de software en esta situación? (Estoy principalmente interesado en la compresión y las instantáneas)

Severgun
fuente
2
Si va a usar ZFS, ¿por qué no simplemente exponer todos los discos individualmente (a veces llamado modo HBA) y dejar que ZFS lo maneje? Es lo que mejor hace. Tenemos un número de verdaderos expertos en esto (para empezar) que lo ayudarán con esto: ¿qué controlador de disco exacto está utilizando?
Chopper3
1
Subvertirá muchas funciones de ZFS utilizando este método, pero en general no va a perjudicar nada hacerlo de esta manera. La suma de comprobación es un poco más inútil en esta configuración, ya que el controlador RAID extraerá todos los detalles del disco. Me interesa más por qué dices que no puedes usar JBOD. Assuredsan 3530 son unidades con capacidad JBOD.
Spooler
2
Yo esperaría para ewwhite - que está en el centro de los Estados Unidos por lo que está durmiendo pero él sabe ZFS mejor que nadie que yo conozca
Chopper3
1
@Severgun También 4 discos duros permanecen inútiles porque no hay necesidad de hotspare . ¿Realmente cree que es mejor para una matriz RAID con una unidad fallida cojear en modo degradado que recoger automáticamente un repuesto dinámico, reconstruir y volver a ¿estado funcional?
Andrew Henle
1
@ Chopper3 Contestaré ... de mala gana.
ewwhite

Respuestas:

5

Así que decidí hacer 2 grupos RAID6 de 16HDD o 4 de 8 HDD.

Esa no es la mejor manera de hacer las cosas. Puede funcionar lo suficientemente bien, pero dependiendo de sus requisitos de rendimiento, puede que no.

El tamaño ideal para una matriz RAID5 / 6 será tal que un múltiplo exacto de la cantidad de datos que "abarca" la matriz coincida con el tamaño de bloque del sistema de archivos construido encima.

Las matrices RAID5 / 6 funcionan como dispositivos de bloque: un solo bloque de datos abarca los discos de la matriz, y ese bloque también contiene datos de paridad. La mayoría de los controladores RAID escribirán una porción de datos del tamaño de una potencia de dos en cada disco de la matriz, cuyo valor exacto es configurable en mejores sistemas RAID, y su unidad Dot Hill es uno de esos "mejores sistemas RAID". Eso es importante.

Por lo tanto, se necesita N x (cantidad de datos almacenados por porción de disco) para abarcar la matriz, donde N es el número de discos de datos. Una matriz RAID5 de 5 discos tiene 4 discos de "datos", y una matriz RAID6 de 10 unidades tiene 8 discos de datos.

Porque cuando los datos se escriben en una matriz RAID5 / 6, si el bloque de datos es lo suficientemente grande como para abarcar toda la matriz, la paridad se calcula para esos datos, generalmente en la memoria del controlador, entonces la franja completa se escribe en disco. Simple y rápido.

Pero si la porción de datos que se está escribiendo no es lo suficientemente grande como para abarcar toda la matriz, ¿qué tiene que hacer el controlador RAID para calcular los nuevos datos de paridad? Piénselo: necesita todos los datos en toda la franja para volver a calcular los nuevos datos de paridad.

Entonces, si crea una matriz RAID6 de 16 unidades con la porción por disco predeterminada de 512kb, eso significa que se necesitan 7 MB para "abarcar" la matriz.

ZFS funciona en bloques de 128 kb, en general.

Entonces ZFS escribe un bloque de 128kB, en una matriz RAID6 de 16 unidades. En la configuración que está proponiendo, eso significa que el controlador RAID necesita leer casi 7 MB de la matriz y volver a calcular la paridad en esos 7 MB. Luego, vuelva a escribir esos 7 MB completos en el disco.

Si tienes suerte, todo está en caché y no recibes un gran impacto en el rendimiento. (Esta es una de las principales razones por las que la posición "no usar RAID5 / 6" tiene ese siguiente seguimiento: RAID1 [0] no sufre esto).

Si no tiene suerte y no alineó correctamente sus particiones del sistema de archivos, ese bloque de 128kB abarca dos bandas RAID que no están en caché, y el controlador necesita leer 14 MB, recalcular la paridad y luego escribir 14 MB. Todo para escribir un bloque de 128kB.

Ahora, eso es lo que debe suceder lógicamente . Hay muchas optimizaciones que los buenos controladores RAID pueden tomar para reducir el IO y la carga computacional de tales patrones de IO, por lo que podría no ser tan malo.

Pero bajo la gran carga de escribir bloques de 128kB en ubicaciones aleatorias, hay una muy buena posibilidad de que el rendimiento de una matriz RAID6 de 16 unidades con un tamaño de banda de 7 MB sea absolutamente terrible.

Para ZFS, los LUN RAID5 / 6 subyacentes "ideales" para un sistema de archivos de propósito general donde la mayoría de los accesos son efectivamente aleatorios tendrían un tamaño de franja que es un divisor par de 128kB, como 32kB, 64kB o 128kB. En este caso, eso limita el número de discos de datos en una matriz RAID5 / 6 a 1 (lo cual no tiene sentido, incluso si es posible configurarlo, es mejor usar RAID1 [0]), 2, 4 u 8. Mejor rendimiento en el mejor de los casos sería usar un tamaño de banda de 128kB para las matrices RAID5 / 6, pero el mejor de los casos no ocurre a menudo en los sistemas de archivos de propósito general, a menudo porque los sistemas de archivos no almacenan los metadatos de la misma manera que ellos almacenar datos de archivo.

Recomiendo configurar matrices RAID5 de 5 discos o matrices RAID6 de 10 discos, con un tamaño de fragmento por disco lo suficientemente pequeño como para que la cantidad de datos para abarcar una franja de matriz completa sea de 64kB (sí, lo he hecho antes para ZFS - muchas veces). Eso significa que para una matriz RAID con 4 discos de datos, el tamaño del fragmento por disco debe ser de 16kB, mientras que para una matriz RAID de 8 discos de datos, el tamaño del fragmento por disco debe ser de 8kB.

Luego permita que ZFS use toda la matriz; no la particione. ZFS se alineará correctamente con una unidad completa, ya sea que se trate de un disco simple o una matriz RAID presentada por un controlador RAID.

En este caso, y sin conocer sus requisitos exactos de espacio y rendimiento, recomendaría configurar tres conjuntos RAID6 de 10 unidades o seis conjuntos RAID5 de 5 unidades con un tamaño de banda de 64kB, configurar un par de repuestos dinámicos y guardar cuatro de sus discos para lo que surja en el futuro. Porque algo lo hará.

Ciertamente, no usaría ese sistema de disco en modo JBOD: es un dispositivo totalmente compatible con el Nivel 3 de NEBS que proporciona protecciones significativas de confiabilidad y disponibilidad integradas directamente en el hardware. No tire eso solo porque "ZFS !!!!". ¿Si se trata de una pieza barata de hardware que se ensambla a partir de piezas? Sí, el modo JBOD con ZFS manejando el RAID es el mejor, pero ese NO es el hardware que tienes. USE las características que proporciona el hardware.

Andrew Henle
fuente
Eso significa que para una matriz RAID con 4 discos de datos, el tamaño del fragmento por disco debe ser de 16kB, mientras que para una matriz RAID de 8 discos de datos, el tamaño del fragmento por disco debe ser de 32kB. Estoy un poco confundido con estas matemáticas. ¿Por qué 8 discos - 32kB trozo? Corríjame si me equivoco: 128kB (bloque ZFS) / 3 (matrices RAID) = 43 kB por matriz RAID. RAID6 de 10 discos 43kB / 8 = 5kB (tamaño de trozo no disponible) El trozo de 8kB más cercano tampoco está disponible por hardware. Entonces, ¿el mejor rendimiento no es accesible?
Severgun
@Severgun Puse los trozos al revés. El problema con el objetivo de obtener el mejor rendimiento absoluto en RAID5 / 6 es que solo sucederá cuando casi todas las operaciones de E / S coincidan perfectamente con el tamaño de banda de la matriz RAID. Un número significativo de operaciones de E / S más pequeñas que el tamaño de la banda puede degradar seriamente el rendimiento. Ir con un tamaño de bloque más pequeño ayuda a limitar el impacto de las escrituras aleatorias de bloque pequeño. En mi experiencia, es mejor renunciar al 1-2% del rendimiento máximo posible a cambio de limitar la caída en el peor de los casos. Los sistemas de archivos de propósito general tienden a tener una buena cantidad de escrituras pequeñas.
Andrew Henle el
(cont.) 8 discos de datos en una matriz RAID5 / 6 con un tamaño de fragmento de 16kB por disco hacen un tamaño de banda de 128kB en toda la matriz. Del mismo modo, fragmentos de 32kB para una matriz de 4 discos de datos. ZFS escribe un bloque de datos de archivo de 128kB en un solo dispositivo; no se divide en todos los zdevs. Sin embargo, una vez más, para un sistema de archivos de propósito general, habrá muchas escrituras de menos de 128kB, por lo que un tamaño de banda más pequeño (64kB) evitará la degradación del rendimiento mejor bajo una gran carga de escritura, pero a un bajo costo en el mejor ... Rendimiento del caso.
Andrew Henle
4

Ok, voy a morder ...

Este es el hardware incorrecto para la aplicación. La configuración de DotHill tiene las mismas limitaciones que un HP StorageWorks MSA2000 / P2000, ya que solo se pueden usar 16 unidades en una sola agrupación de arreglos.

ZFS sobre RAID de hardware o un SAN LUN exportado no es necesariamente un problema.

Sin embargo, la separación de los LUN ZFS sobre interconexiones desconocidas, a través del chasis de expansión puede presentar algún riesgo.

  • Por ejemplo, ¿está ejecutando SAS de múltiples rutas en una topología de anillo con controladores duales?
  • ¿Tiene cableado redundante de regreso al servidor?
  • ¿Ha distribuido las unidades verticalmente a través de los gabinetes de manera que mitigue la falla de un solo chasis / cable / controlador y evite que destruya una parte de su banda RAID0?

En serio, puede valer la pena evaluar si necesita todo este almacenamiento en un solo espacio de nombres ...

Si necesita ese tipo de capacidad en un solo montaje, debe usar un gabinete JBOD conectado a HBA dedicado y posiblemente múltiples unidades principales con cableado resistente y un diseño más inteligente.

ewwhite
fuente
1

Debe conectar DIRECTAMENTE todas las unidades a una caja que ejecute ZFS. Obtenga un HBA SAS y conecte las unidades a la caja compatible con ZFS (por ejemplo, ejecutando OmniOS o SmartOS). Luego puede compartir el espacio a través de NFS, SMB, iScsi ...

Tobi Oetiker
fuente
Debe conectar DIRECTAMENTE todas las unidades a una caja que ejecute ZFS. No necesariamente: reemplazar las unidades fallidas en una matriz de hardware en algunos controladores es fácil : extraiga el disco duro con la luz de falla encendida y luego coloque una nueva. No es necesario que el administrador del sistema ejecute comandos ZFS para reemplazar la unidad. En una configuración empresarial con cientos o miles de servidores y quizás decenas de miles de discos duros distribuidos en múltiples centros de datos, eso es una preocupación. Las unidades fallan mucho más de lo que sucede la putrefacción.
Andrew Henle
@Tobi Oetiker me dice cómo colocar 36 discos duros de 3,5 "en una caja de 2U
Severgun
simplemente los ponemos en una caja adicional ... use un extensor sas ... como para implementaciones grandes, tal vez pregunte cómo lo está manejando joyent.
Tobi Oetiker
@AndrewHenle Para ser justos, es posible lograr el mismo procedimiento de reemplazo fácil y LED de estado con ZFS y los HBA correctos (puede implicar algunas secuencias de comandos menores si no se utiliza una solución preempaquetada).
user121391
0

La razón por la que ZFS además de los volúmenes lógicos HW RAID es una idea MUY MALA es porque ZFS requiere acceso a nivel de bloque para funcionar realmente correctamente. Sí, será utilizable, pero la funcionalidad no estará completa hasta que conecte las unidades directamente al sistema operativo a través de un HBA o conexiones SATA directas. Un ejemplo es que en la configuración que está proponiendo, ZFS no puede proteger razonablemente sus datos contra los cambios en los datos a continuación (en el otro lado del controlador RAID HW) y, como tal , no puede garantizar la seguridad de sus datos . Esta es una de las razones principales por las que se usa ZFS, además de ser súper rápido.

ZFS es una tecnología increíble, y lo recomiendo altamente. Pero tendrá que volver a visitar su estructura aquí para poder usarla correctamente. Es decir, hacer que ZFS cree los volúmenes lógicos (vdevs) directamente desde los discos.

Parece que hay muchas más lecturas que debe hacer sobre cómo funciona ZFS antes de que pueda comprender con precisión lo que ha propuesto, en contraste con lo que realmente debería hacerse.

BloodyIron
fuente
Si si y si. Entiendo cómo funciona ZFS tanto como puedo. Pero hay algunas complicaciones: 1) Ya tengo un gabinete SAN y necesito usarlo. No estoy construyendo almacenamiento desde cero. 2) Este no es el NAS de mi casa donde puedo comprar y tirar cosas. 3) El presupuesto para la reconstrucción de la configuración de almacenamiento es igual a cero . Desde el almacenamiento, necesito la máxima velocidad de escritura disponible con un espacio de alrededor de 100 TB. Estoy buscando ZFS principalmente debido a la compresión y las instantáneas. Puedo probar btrfs pero es experimental. Hmm puede ser ZoL inestable también? No se.
Severgun
@Severgun Siempre y cuando sepa cuáles son las desventajas, estará bien en mi opinión. ZFS tiene muchas características agradables (como instantáneas) que funcionan independientemente de otras. La mayoría de los consejos en Internet enfatizan la importancia de las mejores prácticas en todas las áreas, pero son recomendaciones, no requisitos estrictos. Este punto será menos importante en el futuro, a medida que más y más distribuciones de LInux cambien a ZFS y la mayoría de los sistemas Linux se ejecuten virtualizados, por lo que tendrán su situación exacta.
user121391
1
La razón por la que ZFS además de los volúmenes lógicos HW RAID es una idea MUY MALA es porque ZFS requiere acceso a nivel de bloque para funcionar realmente correctamente. Eso es tan malo que ni siquiera es lo suficientemente bueno como para ser llamado mal. Aparentemente no tienes idea de lo que significa una pieza de hardware compatible con NEBS 3, ¿verdad? Además de ser súper rápido. ZFS es muchas cosas buenas. "super duper fast" NO es uno de ellos. Este es un sistema de archivos rápido . Así es esto . A medida que avanzan los sistemas de archivos, ZFS no es rápido.
Andrew Henle el