Al crear un dispositivo raid de software de Linux como un dispositivo raid10, estoy confundido por qué debe inicializarse. La misma pregunta se aplica para raid1 o raid0, realmente.
En última instancia, la mayoría de las personas pondrían un sistema de archivos de algún tipo encima, y ese sistema de archivos no debería asumir ningún estado de los datos del disco. Cada escritura afectará a ambos discos en una configuración raid10 o raid1, donde se escriben los N espejos. No debería haber ninguna razón para que una incursión10 se inicialice inicialmente, ya que sucederá con el tiempo.
Puedo entender por qué para una configuración de raid5 / 6 donde hay un requisito de paridad, pero incluso entonces parece que esto podría hacerse perezosamente.
¿Es solo para que la gente se sienta mejor al respecto?
fuente
Respuestas:
La sincronización inicial es necesaria porque las diferencias entre los espejos aparecerían como errores durante la verificación periódica.
Y deberías estar haciendo controles periódicos.
fuente
La incursión 1, al ser un espejo, depende de que todos los discos en un espejo sean copias exactas el uno del otro. Tome su disco duro aleatorio y otro disco duro aleatorio, y posiblemente tenga datos diferentes allí, lo que viola esta presunción. Por eso es necesaria la inicialización. Simplemente copia el contenido de la primera unidad a otros. Tenga en cuenta que en algunas condiciones puede salirse con la suya sin inicializar las unidades; por lo general, los dispositivos nuevos de fábrica ya tienen ceros por todas partes, por lo que simplemente puede ignorar esto. La
mdadm
opción--assume-clean
hace esto, pero te advierte:Si no lo hace, hay una discrepancia entre las unidades y se lee, no se sabe qué leerá la unidad. Debería estar bastante seguro con un sistema de archivos (pero tenga en cuenta a continuación), porque lo más probable es que escriba antes de leer cualquier cosa de ese dispositivo, y luego estará claro.
Tenga en cuenta que al menos Linux's
mdadm
inicializará la matriz en segundo plano. Puede crear felizmente FS encima del primer segundo. El rendimiento va a sufrir hasta que finalice la inicialización, pero eso es todo.Pero:
a) Al hacer
mkfs
algunas utilidades, verifique si ya hay algo en esa unidad. Si bien esto solo toca algunas regiones conocidas de la unidad, se lee antes de escribir algo, lo que lo pone en peligro.b) Si realiza una resincronización periódica de su matriz, el dispositivo RAID no sabe nada de su FS. Simplemente lee cada bloque de cada dispositivo y los compara. Y si no está utilizando un FS de copia en escritura (por ejemplo, ZFS o BTRFS) y nunca llena su FS, es perfectamente posible que un bloque permanezca sin inicializar desde la perspectiva del FS durante años.
¿Por qué resincronizar con dispositivos RAID1?
Por el mismo motivo, vuelve a sincronizar con dispositivos RAID5 o cualquier otro nivel (excepto RAID0). Lee todos los datos y compara / verifica las sumas de verificación RAID (en RAID 5 o 6). Si se volcó un poco de alguna manera (porque la memoria HD se volteó espontáneamente, porque los teléfonos celulares de usted y sus 5 vecinos interfirieron accidentalmente sobre esta región particular de la bandeja, lo que sea) detectará inconsistencia, pero no podrá ayudarte. Si, OTOH, uno de los discos duros simplemente informa "No puedo leer ese bloque", lo que es más probable con un disco defectuoso, simplemente ha detectado un fallo temprano y ha reducido el tiempo de funcionamiento en modo degradado (contando desde el fallo de la unidad, no desde el momento en que lo notas). Raid no te ayudará si falla una unidad y un mes después la otra falla si no lo haces '
RAID10
Ahora, para RAID10 se cumple todo lo anterior. Después de todo, RAID10 es solo una forma inteligente de decir 'Estoy poniendo mis dos dispositivos RAID1 en un par RAID0'.
Consideración:
Todo esto es comportamiento indefinido. Por qué he comprobado en Linux, usando
mdadm
, otras implementaciones de software RAID pueden comportarse de manera diferente. Otras versiones del kernel y / omdadm
herramientas de Linux que estoy usando también pueden comportarse de manera diferente.fuente
If you don't do it, there is a discrepancy between the drives and it's read, the RAID device will report failure of a drive
. Creo que esa afirmación es incorrecta. Al menos proporcione un ejemplo del mensaje de error de modo que sea posible consultar la fuente para verificar bajo qué circunstancias se produce.While this only touches a few well-known regions of drive, it reads before you write anything, thus putting you in danger.
¿En peligro de qué? Me doy cuenta de que la lectura puede resultar en cualquier cosa, pero ¿por qué eso resultaría en algún tipo de peligro para el usuario si (a) la información que se lee no se usa en ninguna parte y (b) está por suceder una escritura?urandom
dispositivo inicializado, con linux mdadm muestra que los primeros 80k siguen siendo diferentes, así como los últimos 48k. Esto último probablemente debido al redondeo del tamaño RAID al tamaño del bloque. No he probado con diferentes tamaños de dispositivo, pero el 80 + 48 es exactamente la diferencia de tamaño entre el dispositivo RAID y el dispositivo de bloque subyacente.Recuerde que RAID 1 es un espejo, y que RAID 10 es una franja de espejos.
La pregunta es, ¿en qué disco de cada espejo son válidos los datos? En una matriz recién creada, esto no se puede conocer, ya que los discos pueden tener datos diferentes.
Recuerde también que RAID opera a un nivel muy bajo; no sabe nada de sistemas de archivos ni de los datos que puedan almacenarse en el disco. Puede que ni siquiera haya un sistema de archivos en uso.
Por lo tanto, la inicialización en estos arreglos consiste en que los datos de un disco en cada espejo se copian tal cual al otro disco.
Esto también significa que la matriz es segura de usar desde el momento de la creación, y se puede inicializar en segundo plano; la mayoría de los controladores RAID (y mdraid de Linux) tienen una opción para esto, o lo hacen automáticamente.
fuente
En pocas palabras, ya que no se espera que dos discos nuevos sean copias perfectas en espejo desde el principio.
Deben convertirse en copias perfectas el uno del otro.
Además, la inicialización incluye la configuración del superbloque de metadatos con información sobre la configuración de la matriz también.
El archivo / proc / mdstat debería indicarle que el dispositivo se ha iniciado, que se está reconstruyendo el espejo y un ETA de la finalización de la reconstrucción. La reconstrucción se realiza utilizando el ancho de banda de E / S inactivo. Por lo tanto, su sistema aún debería responder, aunque los LED de su disco también mostrarán mucha actividad.
El proceso de reconstrucción es transparente, por lo que puede usar el dispositivo aunque el espejo esté actualmente en reconstrucción.
fuente