Pregunta Qué configuración producirá el mejor rendimiento para una matriz RAID USB


Estoy usando un viejo MacBook Core 2 Duo como servidor NAS. Tengo cuatro unidades USB externas de 3 TB (llamémoslas Drive1 - Drive4) que quiero configurar como una matriz RAID, ya sea RAID 0 + 1 o RAID 10. La MacBook tiene dos controladores USB 2.0 (llamémosles Controlador-A y -B) El plan es tener Drive1 y Drive2 conectados a ControllerA y Drive3 y Drive4 conectados a ControllerB. De la manera en que lo veo, tengo dos opciones para configurar la matriz RAID:

  1. Stripe Drive1 con Drive2 en ControllerA, stripe Drive3 con Drive4 en ControllerB y duplicar las unidades en ControllerA a las unidades en ControllerB (creo que esto se llama RAID 0 + 1)
  2. Stripe Drive1 en ControllerA con Drive3 en ControllerB, stripe Drive2 en ControllerA con Drive4 en ControllerB luego mirror Drive1 y Drive3 a Drive2 y Drive4 (creo que esto se llama RAID 10)

Mi pregunta es ¿qué configuración rendirá el mejor rendimiento?


0


origen


Aparte del rendimiento, tenga en cuenta que una franja de espejos (RAID 1 +) ofrece una mayor redundancia que un espejo de bandas (INCURSIÓN 0 + 1). Con la primera, siempre que una unidad en cada matriz RAID 1 siga funcionando, la matriz estará activa. Con este último, si falla una unidad en cada matriz RAID 0, habrá perdido la matriz completa de forma permanente (ya que RAID 1 solo vería los volúmenes RAID 0, a diferencia de las unidades individuales). Con cuatro unidades, no verá ningún rendimiento significativo o diferencia de espacio (como en los últimos dos ejemplos de @ ЯрославРахматуллин). - Bob
@Bob Podría, pero serán marginales. En algunos muy casos específicos, uno puede ser preferible al otro, pero no tengo suficiente experiencia para contar. - Ярослав Рахматуллин
@ ЯрославРахматуллин Eso probablemente dependería de la implementación, ya que en teoría deberían ser iguales en rendimiento y espacio (con una matriz 'cuadrada'). Por supuesto, podría ser que una forma siempre sea más eficiente (aunque sea levemente) simplemente porque es más fácil de implementar. Y una mayor redundancia siempre es importante, especialmente si esto es parte de cualquier sistema crítico. (¿Alguna vez alguien le dijo que su nombre es un fastidio al hacer ping?: P) - Bob
@Bob Lo hicieron, pero "ping" todos los nombres manualmente de todos modos, así que estamos a mano: D - Ярослав Рахматуллин


Respuestas:


Reescribir completo

Supuestos básicos

  1. El rendimiento de USB2 está limitado a unos 30-40MB / seg.
  2. Cualquier disco duro de 3TB es más rápido que eso.
  3. en realidad tienes dos controladores USB separados.

1) Es un hecho conocido. Hay algunas variaciones basadas en los controladores, los chips USB a SATA en los casos externos, etc. Pero a menos que tenga una configuración excepcionalmente pobre obtendrá aproximadamente 35 MB / seg por bus USB.

2) La velocidad del disco duro varía según el modelo. Poner un modelo de 3 TB es una unidad moderna y espero que su rendimiento secuencial más lento sea de al menos 90 MB / seg.

3) se basa en su propia publicación.

La MacBook tiene dos controladores USB 2.0 (llamémosles Controlador-A y -B).

Si tienes dos conectores USB que están conectados al mismo concentrador USB interno, entonces efectivamente tienes un controlador. No importa la combinación que use con las unidades, nunca excederá la velocidad del controlador individual.

Información RAID

los publicación canónica en niveles RAID más en nuestro sitio hermano ServerFault tiene una buena explicación de qué niveles de RAID 0 (Stripe), 1 (espejo) y 10 son.

Por favor léelo, la explicación es clara.


Tampoco son 1: 1 aplicables para usted. Todos ellos suponen que la velocidad es limitada en el disco. Es decir, la información se alimenta hacia y desde las unidades a un ritmo mucho más rápido de lo que la unidad puede soportar. Usar dos unidades en una línea sería dos veces más rápido porque puedes usar la velocidad de dos unidades simultáneamente.

Si coloca dos unidades en el mismo bus USB, aún estará limitado a la velocidad de ese bus y no obtendrá ninguna velocidad cuando realice lectura o escritura secuencial.

Que significa esto para mi?

Si configuras dos unidades independientes en el controlador A obtendrás esta situación.

Controlador-A --------- [Unidad1] ----- [Unidad2]

La velocidad de lectura y escritura sería de aproximadamente 35 MB / seg en cada unidad. O la mitad si usabas ambas unidades al mismo tiempo.


Si raya (RAID 0) las unidades, entonces aparece como una sola unidad de tamaño doble.

Controlador-A --------- ([Unidad1] [Unidad2])

La velocidad todavía está limitada por el bus USB2. El rendimiento secuencial aún está limitado a aproximadamente 35 MB / s. No ganaste velocidad. Sin embargo, tiene la facilidad de una unidad de 6TB virtual en lugar de dos unidades de 3TB.


Duplicación (RAID 1) las unidades suelen dar como resultado el doble de la velocidad de lectura (ya que el factor limitante sería la velocidad de lectura del disco y se puede leer simultáneamente de ambos) y generalmente no hay pérdida en la velocidad de escritura.

No en este caso.

Controlador-A --------- [Drive1]
                        [Drive2]

La velocidad de lectura de una sola unidad saturará el bus. Las unidades Twp no lo duplicarán. El resultado seguirá siendo el mismo 35 MB / seg.

En el caso de escribir en el espejo, es aún peor. Usted está escribiendo en ambas unidades. Pasará los mismos datos dos veces a través del mismo bus USB2 limitador. ¡La velocidad de escritura se reducirá a la mitad!


Podemos hacer lo mismo con los discos conectados a través del controlador USB B y obtener los mismos resultados. Claramente, usar dos discos en el mismo bus USB no aumentará el rendimiento. Incluso puede empeorar las cosas.

La alternativa es usar dos discos en diferentes controladores.

Controlador-A --------- ([Unidad 1]

Controlador-B --------- [Drive3])

Si los duplicas, ganas el doble de la velocidad de lectura. Esto porque la lectura ocurrirá desde ambos discos y llenará ambos buses USB2. La velocidad de lectura será de aproximadamente 70MB / seg.

Las escrituras deberán ir a ambas unidades. Todavía escribes el doble. Tienes el doble de ancho de banda. El resultado neto no es cambio.

Obtendrá la redundancia adicional de un espejo. (Si falla una unidad, aún puede leer todos los datos).


Ahora para hacer striping:

Controlador-A --------- ([Unidad 1]

Controlador-B --------- [Drive3])

Las lecturas y escrituras se pueden realizar simultáneamente desde ambas unidades. La velocidad de lectura y escritura se duplica. ¡Hurra! :)

Sin embargo, ahora está utilizando todo el ancho de banda en ambos buses USB2. Agregar más unidades no aumentará el rendimiento. No importa si los combina en RAID10 o RAID01.

Por lo tanto, estoy limitado a 70 MB / seg independientemente?

Sí.

La mejor velocidad posible con esta configuración es de 70MB / seg. usando dos unidades en controladores separados.

Puedes configurar dos rayas. Siempre que no utilice ambos al mismo tiempo, ambos obtendrán el máximo rendimiento. Si usa ambos al mismo tiempo, ambos caerán a la mitad de velocidad.

Rendimiento? No es la velocidad?

He tenido mucho cuidado de usar el rendimiento secuencial tanto como sea posible. No es velocidad

Puede hacer que un disco se ponga de rodillas haciendo muchas pequeñas solicitudes de IO. El rendimiento de la unidad en situaciones tan extremas puede caer tan bajo como 5 MB / segundo (incluso en unidades SAS de 15k RPM y 2½ pulgadas).

Esta no es la situación que obtendrá con el uso normal de NAS. En su mayoría, un NAS almacena películas, música, fotos y documentos de algunos MB de tamaño. En ese caso, el disco los leerá a alta velocidad (alrededor de 100MB / seg) y luego esperará 2/3 de su tiempo hasta que pueda empujarlo sobre el bus USB.

Si accede a muchos archivos pequeños en todo el disco (por ejemplo, durante un trabajo de compilación en un volumen muy fragmentado), la velocidad efectiva del disco será mucho menor. Si cae por debajo de la velocidad del bus USB2, obtendrá las ventajas normales de RAID de las unidades.

Sin embargo, esto debería ser extremadamente raro, y tu pregunta era:

Mi pregunta es ¿qué configuración rendirá el mejor rendimiento?

¿Qué harías?

Dos unidades en una línea, una unidad por controlador, produciendo una buena unidad de 6TB. Use las otras unidades como copia de seguridad fuera de línea.

El mantra RAID

RAID no es una copia de seguridad. RAID no es una copia de seguridad. RAID no es una copia de seguridad.

  • Si tiene un incendio, RAID no guardará sus datos.
  • Si hay un robo, RAID no guardará sus datos.
  • Si hay una falla de energía grave, RAID no guardará sus datos.
  • Etc. etc. La única copia de seguridad es una copia de seguridad fuera del sitio. A falta de una copia de seguridad fuera de línea.

2



Hombre, definitivamente entendiste mi pregunta. ¡Gracias una tonelada! Está 100% correcto de que RAID no es una copia de seguridad y no tengo la intención de usarlo como copia de seguridad. Lo que sí necesito es un volumen (virtual) de 6TB. Lo que no me gusta es que una matriz RAID 0 de dos unidades tiene el doble de probabilidades de fallar que una sola unidad por sí sola. Entonces, para mí, RAID 0 por sí mismo no es deseable. - HairOfTheDog
Usted correctamente dividió mi pregunta en dos partes; rendimiento y tolerancia a fallas. Ahora, si entiendo tu recomendación correctamente, estás diciendo dos cosas: 1) a pesar de que es más probable que falle RAID 0, sigue siendo mi mejor opción para lograr el máximo rendimiento, 2) la tolerancia a fallas de RAID 1 matará el rendimiento y Me sería más útil haciendo una copia de seguridad de la matriz RAID 0. ¿Estaría de acuerdo con mi resumen de su respuesta? - HairOfTheDog
Correcto. Puedes combatir el fracaso de varias maneras. Mi método preferido son las copias de seguridad fuera de línea regulares. En lo que a mí respecta, RAID es útil en algunos casos: 1) Rendimiento puro (por ejemplo, raya en una PC de juegos) 2) Mantener un servidor de archivos funcionando después de una falla de disco hasta las 5 PM y puede arreglar cosas. 3) Mantener una copia de los datos modificados entre las copias de seguridad. En su caso, buscaría rendimiento y usaría las otras unidades para realizar copias de seguridad. - Hennes


La segunda opción se llama 1 + 0 y no es lo mismo que RAID10 (depende del controlador en realidad). Una matriz RAID10 consta de al menos cuatro dispositivos y es un dolor de cabeza menor que mantener.

Habría una ganancia de rendimiento discutible si tuviera usted o más discos rayados y espejados de esta manera:

1 2 3: incursión 0 \
                 + - redada 1
4 5 6: incursión 0 /

.. Opuesto a

1 2 3: redada 1 \
                + - ataque 0
4 5 6: redada 1 /

.. pero entonces de nuevo

1 2: redada 1 \
3 4: incursión 1 + - incursión 0
5 6: redada 1 /

Probablemente le dará el mismo rendimiento.

Pero dado que tiene exactamente cuatro unidades, el rendimiento será más o menos igual en ambos casos. La verdad, sin embargo, acerca de su configuración, es que será lenta de todos modos porque USB2 es un serio cuello de botella.


0