¿RAID1 aumenta el rendimiento con Linux mdadm?

¿RAID1 aumenta el rendimiento con Linux mdadm?

Tengo un NAS económico de 2 bahías con un disco duro de 2 TB. Para ser resistente a las fallas del disco, estoy pensando en comprar un segundo disco duro de 2 TB y colocarlo en RAID1 con Linux mdadm. El sistema de archivos es ext4.

¿Esto aumentará o disminuirá el rendimiento del NAS? ¿Qué pasa con el rendimiento de lectura o escritura?

Parece haber muchas opiniones sobre esto en línea pero no hay consenso.

Gracias.

Editar:

Así que ya tengo tres respuestas diferentes: "un poco más rápido", "no lo notarás" y "disminuirá el rendimiento en todo caso". (Estoy interesado principalmente en el rendimiento de lectura). Wikipedia dice que "el rendimiento de lectura puede aumentar aproximadamente como un múltiplo lineal del número de copias". ¿Cuál es?

Edición 2:

He encontrado cada vez más pruebas que respaldan el aumento del rendimiento de lectura de RAID1, incluida la página de manual de MD:

Los cambios se escriben en todos los dispositivos en paralelo. Los datos se leen desde cualquier dispositivo. El controlador intenta distribuir las solicitudes de lectura entre todos los dispositivos para maximizar el rendimiento.

También descubrí RAID10 de MD con --layout=f2, que proporciona redundancia de RAID1 con el rendimiento de lectura de RAID0 y se puede utilizar con sólo dos unidades. Sin embargo, el rendimiento de escritura se reduce, ya que una escritura secuencial implica que ambas unidades busquen hacia adelante y hacia atrás entre partes distantes de la unidad. man mdpara detalles.

Respuesta1

Sí,La implementación de RAID1 en Linux acelera las operaciones de lectura de disco en un factor de dos, siempre que se realicen dos operaciones de lectura de disco separadas al mismo tiempo.. Eso significa que leer un archivo de 10 GB no será más rápido en RAID1 que en un solo disco, pero leer dos archivos distintos de 10 GB* será más rápido.

Para demostrarlo, basta con leer algunos datos con dd. Antes de realizar cualquier cosa, borre el caché de lectura del disco con sync && echo 3 > /proc/sys/vm/drop_caches. De lo contrario hdparm, reclamará lecturas súper rápidas.

Fila india:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 65,9659 s, 159 MB/s

Dos archivos:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT skip=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 64,9794 s, 161 MB/s
10485760000 bytes (10 GB) copied, 68,6484 s, 153 MB/s

Leer 10 GB de datos tomó 65 segundos, mientras que leer 10 GB + 10 GB = 20 GB de datos tomó 68,7 segundos en total, lo que significalas lecturas de discos múltiples se benefician enormemente de RAID1en Linux. skip=$COUNTparte es muy importante. El segundo proceso lee 10 GB de datos del desplazamiento de 10 GB.

La respuesta de Jared y los comentarios de ssh refiriéndose ahttp://www.unicom.com/node/459estan equivocados. El punto de referencia a partir de ahí demuestra que las lecturas de disco no se benefician de RAID1. Sin embargo, la prueba se realizó con la herramienta de evaluación comparativa bonnie++ que no realiza dos lecturas separadas al mismo tiempo. El autor afirma explícitamente que bonnie++ no se puede utilizar para realizar evaluaciones comparativas de matrices RAID (consulte el archivo Léame).

Respuesta2

Sí, obtendrá un aumento en el rendimiento de lectura + redundancia. Puede imaginarlo fácilmente, ya que puede leer las partes de los archivos al mismo tiempo desde dos discos duros diferentes, ya que los archivos están en ambos discos duros.

Entonces, en teoría, si el controlador RAID hace bien su trabajo, podría obtener una aceleración de O(n).

Respuesta3

No, no recibirá ningún beneficio mientras lee desde mdadm RAID1. Me preguntaba sobre esto hace algún tiempo.

dstatmuestra el uso de los discos, también bwm-ngayuda mucho, especialmente en este caso, ya que puede mostrar el uso de lectura/escritura en miembros RAID mdadm separados. Simplemente presione n(siguiente) varias veces y cambiará de estadísticas de interfaz a estadísticas de disco. Luego cambie a valores máximos con tpara ver el máximo de lecturas/escrituras de cada disco. Verás lo siguiente:

Al escribir en el volumen RAID1 bwm-ng se muestran 2 escrituras, escribiendo en 2 discos al mismo tiempo. Al leer desde el volumen RAID1 bwm-ng se muestra la lectura desde una sola unidad (miembro de la matriz).

Respuesta4

y NO al mismo tiempo. De forma predeterminada, el parámetro de "lectura anticipada" de RAID 1 es demasiado bajo para notar el beneficio en una sola transferencia de archivo; sin embargo, todo lo que tiene que hacer es ajustarlo.

Para verificar su valor escriba:

# blockdev --getra /dev/md0
256

Ahora puede configurar la lectura anticipada (en sectores de 512 bytes) por dispositivo raid. La sintaxis es:

## Set read-ahead to 32 MiB ##
# blockdev --setra 65536 /dev/md0

En la mayoría de los casos, simplemente configurar este parámetro duplicará la velocidad de lectura de un solo archivo (suponiendo que ambas unidades sean iguales).

Nota: Esto se aplica a todas las configuraciones de raid.

información relacionada