¿Por qué RAID 0 no puede utilizar todo el espacio en disco en dos discos de diferentes tamaños?


10

Para citar el artículo de Wikipedia sobre RAID :

Se puede crear un RAID 0 con discos de diferentes tamaños, pero el espacio de almacenamiento agregado a la matriz por cada disco está limitado al tamaño del disco más pequeño. Por ejemplo, si un disco de 100 GB se divide junto con un disco de 350 GB, el tamaño de la matriz será de 200 GB (100 GB × 2).

Sin embargo, el artículo no indica por qué no puede RAID juntos y usar todo el espacio en disco. Entiendo que las rayas escriben entre los dos, pero seguramente no debería evitar escribir en los sectores posteriores del segundo disco, mientras se ejecuta en un rendimiento degradado. ¿Existe un sistema RAID alternativo (por ejemplo, RAID de software) que ofrezca dicha función?


No estoy seguro de si esto funcionaría con algunas incursiones de hardware, pero con incursiones de software. Para aprovechar algunos aspectos de la incursión 0 mientras usa más espacio disponible en dos unidades de tamaño diferente, como una de 100 GB y una de 350 GB, puede intentar crear 3 Particiones de 100 GB en la unidad más grande y raya la partición de 100 KB en la primera y las 3 particiones de 100 GB en la segunda unidad. El nivel de incursión 0 le dará 400 conciertos para usar mientras proporciona un aumento en el rendimiento de lectura / escritura, pero probablemente sería menor que si dividiera dos unidades de 200 GB.
Keith Reynolds

Normalmente no querría hacer esto. Para fines de demostración, configuré un RAID0 usando una unidad flash 1G y 16G. Hice una partición extendida llenando cada disco. Luego hice una partición de 981 MB en cada unidad hasta que estuvieron llenas. Luego hice una incursión usando las 16 particiones con el comando en Linux mdadm --create --verbose /dev/md0 --chunk=512 -l0 -n16 /dev/sdd5 /dev/sde5 /dev/sde6 /dev/sde7 /dev/sde8 /dev/sde9 /dev/sde10 /dev/sde11 /dev/sde12 /dev/sde13 /dev/sde14 /dev/sde15 /dev/sde16 /dev/sde17 /dev/sde18 /dev/sde19. Terminé con menos espacio del que acababa de usar la unidad de 16 GB
Keith Reynolds el

Respuestas:


11

La razón de que el tamaño se limite al tamaño del disco más pequeño tiene que ver con el hecho de que las rayas se escriben "alternativamente" y deben ser del mismo tamaño.

En un sistema de dos discos, todas las bandas impares están en un disco, las pares en el otro. Las escrituras se alternan entre discos, impar / par / impar / par / ...

Como las franjas deben ser del mismo tamaño y estar emparejadas (para dos discos), está limitado a un espacio máximo utilizable de 2 * (tamaño del disco más pequeño).


3

Usted puede utilizar el espacio restante. Puede crear un volumen usando el espacio restante, o incluso usarlo como parte de otro RAID. Sin embargo, el uso de este espacio adicional degradará el rendimiento que le proporciona RAID 0, ya que dos procesos diferentes podrían estar intentando acceder al mismo controlador físico y disco.

¿Por qué no puede agregar este espacio adicional al RAID original? Bueno, sin entrar en muchos detalles, es debido a los algoritmos que usan los RAID. RAID 0 escribe en el primer disco de RAID y luego en el siguiente. Esto aumenta el rendimiento, ya que no tiene que esperar a que el disco anterior termine de leer o escribir. Si se utilizaron los 250 GB en su publicación, la mayoría de la escritura sería en el primer disco, eliminando prácticamente cualquier ganancia de rendimiento.

RAID podría no ser la solución que está buscando, si desea utilizar todo el espacio de las unidades, debería abarcar volúmenes. Spanning le permite tomar muchos volúmenes y concatenarlos juntos en un gran volumen. La expansión no ofrece aumento de rendimiento ni redundancia.


Esto no explica por qué no puede usar todas las dos unidades en un volumen. Además, la parte de volúmenes separados no causará ningún problema de rendimiento: el control de E / S del disco en el nivel bajo se maneja mediante interrupciones a través de disk.sys, por lo que las solicitudes de lectura / escritura se canalizan de todos modos, y Windows también admite E / S superpuestas.
Polinómico el

Ok, tu actualización aún no lo explicó. Estoy familiarizado con el funcionamiento de las bandas, pero eso no explica por qué no puede simplemente pasar al modo de disco único (con rendimiento estándar de disco único) una vez que el disco más pequeño está lleno. Gracias por mencionar la expansión del volumen, eso parece útil.
Polinómico el

1
Porque así es como funciona RAID. Si realmente quisiera, podría RAID 0 lo que pudiera, luego crear un volumen con el espacio libre, luego abarcar el RAID y el volumen adicional. Pero no creo que ningún controlador RAID le permita hacer eso. Puede hacerlo con una combinación de RAID de hardware y software.
Keltari el

1
-1 "Esto aumenta el rendimiento, ya que no tiene que esperar a que el disco anterior termine de leer o escribir" lo mismo podría decirse de dos discos duros de diferentes tamaños en RAID 0
Celeritas

2
@Polynomial Eso no sería RAID 0. Usted preguntó por qué RAID 0 no puede usar todo el espacio en disco y luego responde "por qué no puede simplemente ...". No puede porque es RAID 0. Si hiciera otra cosa, sería otra cosa.
David Schwartz

0

RAID es un pseudo estándar que describe cómo se pueden almacenar los datos en una matriz de discos. El estándar describe cuatro formas diferentes de almacenar datos (técnicamente más, pero en su mayoría a nadie le importan los demás):

Raid-0: Rayado. Cada bloque de datos se divide entre cada miembro del dispositivo RAID. Sin redundancia, por lo que se trata más de una matriz de discos económicos, no una matriz redundante de discos económicos.

Raid-1: Reflejo. Cada bloque de datos se almacena en cada disco de la matriz. Esto solo se hace realmente con dos discos. RAID 1/0 o simplemente RAID 10 es una combinación de duplicación y creación de bandas y se puede utilizar para aprovechar más de dos discos.

Raid-5: paridad. Cada bloque de datos se divide entre cada miembro del dispositivo RAID + un disco está dedicado a la paridad.

Raid-6: Doble paridad: igual que Raid-5, pero con dos discos de paridad.

Eso es. La incursión no describe qué hacer con las coincidencias de tamaño ni nada, pero las franjas solo funcionan realmente con discos del mismo tamaño. Por lo general, la forma de evitar esto es que podría usar el espacio sobrante como una unidad de disco separada.

Alejándose de RAID como una forma de crear una gran matriz de discos, puede usar cosas como ZFS y simplemente agregar discos a un grupo de almacenamiento. ZFS siempre intentaría usar ambos discos de la manera más eficiente posible, y podría decirle a ZFS con qué nivel de redundancia está satisfecho.

Las tecnologías anteriores son cosas como la asignación de volumen (es decir, LVM, o su equivalente en Windows), que resumen la idea de asignar bloques al disco a un nivel superior. Con LVM puede atravesar discos, expandir particiones, tener particiones no contiguas, etc. La asignación de volumen no es RAID, y en lugar de aumentar el rendimiento a medida que aumenta los discos, simplemente elegirá al azar para escribir en un disco u otro dependiendo de dónde se encuentre en el sistema de archivos. Esto se conoce como expansión y, por lo general, es mejor que RAID si opta por IOPS en lugar de rendimiento sin formato.


0
A RAID 0 can be created with disks of differing sizes, but the storage
space added to the array by each disk is limited to the size of the
smallest disk.

Esto puede ser cierto y lo será para la mayoría de las implementaciones de RAID0. Sin embargo, no para todos.

Hay dos razones para usar RAID 0:

  1. Concatene múltiples discos en un gran volumen.
  2. Actuación.

La opción 2 es la más común y creo que se usa en casi todas las implementaciones actuales de RAID 0. La explicación técnica es que la información se escribe alternando entre discos.

De una manera no técnica: piense en los discos como dos libros. Estos libros tienen velocidades de acceso limitado (lectura / escritura). Entonces, en lugar de dos libros de 100 páginas, los formateamos en dos libros, pero renumeramos las páginas para que todos los números pares estén escritos en un libro y todos los números impares en el otro libro.

Ahora nuestro nuevo 'libro R0' se comporta si es un solo libro con el doble de páginas y el doble de velocidad.


La opción 1 puede ser tan simple como "pegar libros de forma consecutiva". En cuyo caso no tiene ganancia de velocidad, pero puede pegar libros con un recuento de páginas diferente. Parece que recuerdo algunas implementaciones de 'RAID0' como esa alrededor de 1990. Pero no es lo que la mayoría de la gente consideraría 'RAID 0 adecuado'.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.