ZFS: Mirror vs. RAID-Z

14

Estoy planeando construir un servidor de archivos usando OpenSolaris y ZFS que proporcione dos servicios principales: ser un objetivo iSCSI para máquinas virtuales XenServer y ser un servidor de archivos de inicio general. El hardware que estoy viendo incluye 2x controladores SATA de 4 puertos, 2x unidades de arranque pequeñas (una en cada controlador) y 4x unidades grandes para almacenamiento. Esto permite un puerto libre por controlador para actualizar la matriz en el futuro.

Donde estoy un poco confundido es cómo configurar las unidades de almacenamiento. Para el rendimiento, la duplicación parece ser el rey. Me está costando ver cuál sería el beneficio de usar RAIDZ sobre la duplicación. Con esta configuración, puedo ver dos opciones: dos grupos reflejados en una franja, o RAIDZ2. Ambos deben proteger contra 2 fallas de la unidad y / o una falla del controlador ... el único beneficio de RAIDZ2 sería que cualquier unidad 2 podría fallar. El almacenamiento debería ser del 50% de la capacidad en ambos casos, pero el primero debería tener un rendimiento mucho mejor, ¿verdad?

La otra cosa que estoy tratando de entender es el beneficio de las matrices duplicadas con más de dos dispositivos. Para la integridad de los datos, ¿cuál sería, en su caso, el beneficio de un RAIDZ sobre un espejo de tres vías? Dado que ZFS mantiene la integridad del archivo, ¿qué aporta RAIDZ a la tabla ... las verificaciones de integridad de ZFS no niegan el valor de la paridad de RAIDZ?

John Clayton
fuente

Respuestas:

14

La respuesta simple es que reflejar algo casi no requiere potencia de procesamiento, solo escribe en el disco por segunda vez. Para RAID-Z2, debe calcular un bloque de paridad completamente nuevo, que aunque es pequeño PUEDE atascar la CPU cuando tiene que escribir grandes cantidades de datos rápidamente.

Mirroring es siempre la solución preferida para datos de alta velocidad, si es sólo de almacenamiento a granel y sin velocidad de escritura rápida, RAID-Z2 es una buena alternativa que no permiten ningún dos unidades de morir que usted alude a.

La otra ventaja es que los grupos reflejados se pueden expandir con más dispositivos reflejados, mientras que un RAID-Z2 no se puede expandir, aunque se puede agregar más almacenamiento RAID-Z2 al grupo, serán dos grupos de almacenamiento RAID-Z2 concatenados (en efecto) en lugar de dividirse equitativamente entre todo el almacenamiento y rayado.

dotwaffle
fuente
Pero en ZFS, ¿qué te da el bloque de paridad de RAIDZ? ¿Proporciona integridad de datos adicional más allá de lo que ZFS ya proporciona? ¿O simplemente es necesario que mueran dos unidades? Si ese es el único beneficio que en el escenario de tres vías, RAIDZ no tiene ningún beneficio sobre un espejo, ¿verdad?
John Clayton
1
RAID-Z permite que una unidad muera: si tiene 10 unidades, obtendrá 9 unidades de datos. Con RAID-Z2 puede tener dos unidades muertas y tener 8 unidades de datos. Con el espejo, puede hacer que mueran la mitad de las unidades, pero solo una de cada conjunto de dos. Sospecho que ya lo sabe, pero es este caso marginal de 4 unidades que ofrece dos soluciones de fallas en dos unidades: RAID-Z2 y modo espejo. No hay asignaciones adicionales de integridad de datos que sean "útiles" en un escenario normal.
dotwaffle
Entonces, ¿para que quede claro que el beneficio de RAIDZ sobre los espejos es un poco más de protección contra fallas de hardware? ¿RAIDZ1 y un espejo con unidades X son esencialmente equivalentes?
John Clayton
55
La paridad de RAID-Z es un superconjunto de la suma de comprobación incorporada de ZFS. Todo lo que hace la suma de comprobación es asegurarse de que los datos que se leen de los discos sean correctos. Está diseñado para ser un control rápido con poca sobrecarga. Lo que le proporciona la paridad de RAID-Z es la capacidad de reconstruir datos dañados en caso de pérdida de una unidad (o 2 para RAID-Z2). Pero los cálculos para generar estos datos de paridad son mucho más intensivos de CPU que una simple suma de verificación de bloque, y deben calcularse en una franja completa, incluso si solo está escribiendo un bloque de 4KB.
Afrazier
44
@John Clayton: el nivel de redundancia depende de cómo configure su almacenamiento. Puede crear un espejo N-way, lo que significa que su capacidad de datos es del tamaño de una unidad, pero puede perder unidades N-1 sin perder ningún dato. Por ejemplo, si tiene un espejo de 3 vías, las 3 unidades contienen los mismos datos, y puede perder 2 unidades sin perder ningún dato. La diferencia es que agregar unidades a un espejo N-way aumenta la redundancia (pero su capacidad siempre es del tamaño de 1 unidad), mientras que agregar unidades a raidz2 aumenta la capacidad (pero su redundancia siempre es de 2 unidades).
robar
18

RAID-Z elimina la mayor parte de la penalización de escritura y los problemas de integridad de datos que sufren los volúmenes RAID 5/6, a costa de algún tiempo de CPU. Por lo general, los sistemas tienen ciclos de CPU de sobra, por lo que gastar tiempo de CPU para mejorar el rendimiento de E / S y la integridad de los datos es un buen compromiso frente a la duplicación.

Aquí hay una explicación detallada de RAID-Z que puede responder a otras preguntas.

Además, recuerde que RAID es una solución de tolerancia a fallas . No implementa RAID-Z2 para protegerse contra la pérdida de datos; realiza copias de seguridad o replica para hacerlo. Usted elige implementar RAID-Z2 frente a RAID-Z o RAID-10 frente a RAID-6 frente a RAID-5 para mantener sus sistemas operativos en caso de falla del hardware.

duffbeer703
fuente
1
Tengo que dar la respuesta a dotwaffle ya que me ayudó a entender la diferencia técnica. Sin embargo, un gran consejo sobre el uso previsto ... eso realmente me hizo parar y pensar.
John Clayton
1
Una cosa importante a tener en cuenta es que si bien RAIDZ elimina los problemas de penalización de escritura , presenta problemas de penalización de lectura debido a la mayor concurrencia para cada operación de lectura
el wabbit