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 md
para detalles.
Respuestas:
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 consync && echo 3 > /proc/sys/vm/drop_caches
. Dehdparm
lo contrario , reclamará lecturas súper rápidas.Archivo único:
Dos archivos:
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=$COUNT
Parte 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 ).
fuente
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).
fuente
man 4 md
declara: "... 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
iostat
salida observada en una configuración RAID de software típica de 2 HDD, no hay equilibrio . De hecho, parece quemdadm
la opción--write-mostly
siempre está activada .fuente
No, no recibirá ningún beneficio mientras lea mdadm RAID1. Me preguntaba sobre esto hace algún tiempo.
dstat
muestra el uso de discos, tambiénbwm-ng
realmente 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).
fuente