Solución 1:
Raid 1, al ser un espejo, depende de que todos los discos en un espejo sean copias exactas entre sí. Tome su disco duro aleatorio y otro disco duro aleatorio, y posiblemente tenga datos diferentes allí, violando así esta presunción. Por eso es necesaria la inicialización. Simplemente copia el contenido de la primera unidad a otras. 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. El mdadm
opción --assume-clean
hace esto, pero te advierte:
--assume-clean
Dígale a mdadm que la matriz ya existía y que se sabe que está limpia. Puede ser útil cuando intenta recuperarse de una falla importante, ya que puede estar seguro de que ningún dato se verá afectado a menos que realmente escriba en la matriz. También se puede usar al crear un RAID1 o RAID10 si desea evitar la resincronización inicial; sin embargo, esta práctica, aunque normalmente es segura, no se recomienda. Use esto solo si realmente sabe lo que está haciendo.
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 desde ese dispositivo, y luego estará libre.
Tenga en cuenta que al menos el mdadm
de Linux inicializará la matriz en segundo plano. Puede crear felizmente FS encima de él el primer segundo. El rendimiento se verá afectado hasta que finalice la inicialización, pero eso es todo.
Pero:
a) Al hacer mkfs
algunas utilidades verifican si ya hay algo en esa unidad. Si bien esto solo toca algunas regiones conocidas de la unidad, lee antes de que escriba 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 plausible que un bloque permanezca sin inicializar desde la perspectiva de FS durante años.
¿Por qué resincronizar con dispositivos RAID1?
Por la misma razón se resincroniza con dispositivos RAID5 o cualquier otro nivel (excepto RAID0). Lee todos los datos y compara/verifica las sumas de comprobación de RAID (en RAID 5 o 6). Si un bit se invirtió de alguna manera (porque la memoria HD se invirtió espontáneamente, porque los teléfonos celulares de usted y sus 5 vecinos simplemente interfirieron accidentalmente en esta región particular del plato, lo que sea) detectará la inconsistencia, pero no podrá ayudarte. Si, OTOH, uno de los discos duros simplemente informa "No puedo leer ese bloque", lo cual es más probable con una unidad defectuosa, simplemente ha detectado una falla temprano y ha reducido el tiempo que está funcionando en modo degradado (contando desde la falla de la unidad, no desde que la notó). Raid no lo ayudará si una unidad falla y, un mes después, la otra falla si no nota la primera falla en ese mes.
RAID10
Ahora, para RAID10, todo lo anterior se cumple. Después de todo, RAID10 es solo una forma inteligente de decir 'Voy a poner mis dos dispositivos RAID1 en un par RAID0'.
Advertencia:
Todo esto es un comportamiento indefinido. Por qué revisé Linux, usando mdadm
, otras implementaciones RAID de software pueden comportarse de manera diferente. Otras versiones del kernel de Linux y/o mdadm
las herramientas que estoy usando también pueden comportarse de manera diferente.
Solución 2:
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 saber, 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 o cualquier dato que pueda estar almacenado en el disco. Puede que ni siquiera sea un sistema de archivos en uso.
Por lo tanto, la inicialización en estas matrices consiste en que los datos de un disco en cada espejo se copian tal cual en el 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 Linux mdraid) tienen una opción para esto, o lo hacen automáticamente.
Solución 3:
Se necesita una sincronización inicial porque cualquier diferencia entre los espejos se mostraría como un error durante la verificación periódica.
Y deberías estar haciendo controles periódicos.