¿RAID1 aumenta el rendimiento con Linux mdadm?

26

Tengo un NAS barato de 2 bahías con un disco duro de 2TB. Para ser robusto contra la falla del disco, estoy pensando en comprar un segundo HDD de 2TB y ponerlo en RAID1 con Linux mdadm. El sistema de archivos es ext4.

¿Aumentará o disminuirá esto el rendimiento del NAS? ¿Qué pasa con solo leer o escribir rendimiento?

Parece que hay 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 evidencia creciente en apoyo de RAID1 que aumenta el rendimiento de lectura, 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 solicitudes de lectura en 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 puede usarse con solo 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.

Jesse
fuente
2
escribe un poco más lento. lee; un poco más rápido Por lo que entiendo, la diferencia de escritura es casi cero, y la lectura es bastante notable.
Sirex
Justo lo que dice sirex ... no notarás la diferencia de rendimiento a simple vista ... No esperes duplicarlo o incluso la mitad.
Piotr Kula
1
Echo de menos una parte: qué tan rápido es el acceso al NAS. Si un disco ya llena la conexión de red, una mayor velocidad interna no le ayudará mucho.
Hennes

Respuestas:

39

Sí, la implementación de RAID1 en Linux acelera las operaciones de lectura de disco el doble de tiempo que dos operaciones de lectura de disco separadas se realizan a la vez . Eso significa que leer un archivo de 10GB no será más rápido en RAID1 que en un solo disco, pero leer dos archivos de 10GB * tomará más rápido.

Para demostrarlo, solo lea algunos datos con dd. Antes de realizar cualquier acción, borre el caché de lectura del disco con sync && echo 3 > /proc/sys/vm/drop_caches. De hdparmlo contrario , reclamará lecturas súper rápidas.

Archivo único:

# 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

La lectura de 10 GB de datos tomó 65 segundos, mientras que la lectura de 10 GB + 10 GB = 20 GB de datos tomó 68.7 segundos en total, lo que significa que múltiples lecturas de disco se benefician enormemente de RAID1 en 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 que se refieren a http://www.unicom.com/node/459 son incorrectos. 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 es utilizable para la evaluación comparativa de matrices RAID ( consulte el archivo Léame ).

Nowaker
fuente
5

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

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

inf
fuente
55
mdadm es RAID de software, por lo que en realidad no hay un "controlador RAID", pero proporcionará un buen impulso de lectura cuando se realizan lecturas de varias capas en paralelo, no tanto en este caso, supongo, ya que una caja NAS rara vez se accede con precisión. Ver aquí para más detalles: freebsdwiki.net/index.php/…
Shadok
1
En la práctica, el rendimiento disminuye para la lectura de la incursión MD de Linux Software. Consulte unicom.com/node/459 (en esa prueba, la velocidad de lectura disminuyó de 77 MB / sa 74 MB / s).
ssh
2
@ssh unicom.com/node/459 está totalmente equivocado. bonnie ++ no se puede usar para probar los espejos RAID, que se indica explícitamente en el archivo Léame. Vea mi respuesta para más detalles. superuser.com/a/757264/68978
Nowaker
4
  • man 4 mddeclara: "... Tenga en cuenta que el equilibrio de lectura realizado por el controlador no hace que el perfil de rendimiento RAID1 sea el mismo que para RAID0 ; no se acelerará un solo flujo de entrada (por ejemplo, un solo dd), sino múltiples flujos secuenciales o aleatorios la carga de trabajo usará más de un eje. En teoría , tener un N-disk RAID1 permitirá que N subprocesos secuenciales se lean desde todos los discos ... "

  • Para colmo, en la práctica , en función de la iostatsalida observada en una configuración RAID de software típica de 2 HDD, no hay equilibrio . De hecho, parece que mdadmla opción --write-mostlysiempre está activada .

poige
fuente
3

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

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

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

TooMeeK
fuente