Solution 1 :
Raid 1, étant un miroir, dépend du fait que tous les disques d'un miroir sont des copies exactes les uns des autres. Prenez votre disque dur aléatoire et un autre disque dur aléatoire, et vous y trouverez peut-être des données différentes, violant ainsi cette présomption. C'est pourquoi l'initialisation est nécessaire. Il copie simplement le contenu du premier disque vers d'autres. Notez que dans certaines conditions, vous pouvez vous en tirer sans initialiser les disques - généralement, les nouveaux appareils d'usine ont déjà des zéros partout, vous pouvez donc simplement l'ignorer. Le mdadm
choix --assume-clean
le fait, mais vous avertit :
--assume-clean
Dites à mdadm que le tableau préexistait et est connu pour être propre. Cela peut être utile lorsque vous essayez de récupérer après une panne majeure, car vous pouvez être sûr qu'aucune donnée ne sera affectée à moins que vous n'écriviez réellement dans la baie. Il peut également être utilisé lors de la création d'un RAID1 ou RAID10 si vous souhaitez éviter la resynchronisation initiale, mais cette pratique - bien que normalement sûre - n'est pas recommandée. Utilisez-le uniquement si vous savez vraiment ce que vous faites.
Si vous ne le faites pas, il y a un écart entre les lecteurs et il est lu, on ne sait pas ce que le lecteur lira. Vous devriez être assez sûr avec un système de fichiers (mais notez ci-dessous), car vous écrirez probablement avant de lire quoi que ce soit à partir de ce périphérique, et alors vous serez clair.
Notez qu'au moins le mdadm
de Linux initialisera le tableau en arrière-plan. Vous pouvez heureusement créer FS dessus dès la première seconde. Les performances vont souffrir jusqu'à ce que l'initialisation soit terminée, mais c'est tout.
Mais :
a) En faisant mkfs
certains utilitaires vérifient s'il y a déjà quelque chose sur ce lecteur. Bien que cela ne touche que quelques régions bien connues du lecteur, il lit avant que vous n'écriviez quoi que ce soit, vous mettant ainsi en danger.
b) Si vous effectuez une resynchronisation périodique de votre matrice, le périphérique RAID ne sait rien de votre FS. Il lit simplement chaque bloc de chaque appareil et les compare. Et si vous n'utilisez pas de FS de copie sur écriture (par exemple, ZFS ou BTRFS) et que vous ne remplissez jamais votre FS, il est parfaitement plausible qu'un bloc reste non initialisé du point de vue de FS pendant des années.
Pourquoi effectuer une resynchronisation avec des appareils RAID1 ?
Pour la même raison, vous vous resynchronisez avec des périphériques RAID5 ou tout autre niveau (sauf RAID0). Il lit toutes les données et compare/vérifie les sommes de contrôle RAID (en RAID 5 ou 6). Si un peu a été retourné de quelque manière que ce soit (parce que la mémoire HD a été retournée spontanément, parce que les téléphones portables de vous et de vos 5 voisins viennent d'interférer accidentellement sur cette région particulière du plateau, peu importe), il détectera une incohérence, mais ne pourra pas T'aider. Si, OTOH, l'un des disques durs signale simplement "Je ne peux pas lire ce bloc", ce qui est plus probable avec un disque défaillant, vous venez de détecter une panne tôt et de réduire le temps d'exécution en mode dégradé (à partir de la panne du disque, pas à partir du moment où vous la remarquez). Raid ne vous aidera pas si un disque tombe en panne et un mois plus tard, l'autre tombe en panne si vous ne remarquez pas la première panne au cours de ce mois.
RAID10
Maintenant, pour RAID10, tout ce qui précède est valable. Après tout, RAID10 n'est qu'un moyen astucieux de dire "Je mets mes deux appareils RAID1 dans une paire RAID0".
Mise en garde :
Tout cela est un comportement indéfini. Pourquoi j'ai vérifié sur Linux, en utilisant mdadm
, d'autres implémentations RAID logicielles peuvent se comporter différemment. Autres versions du noyau Linux et/ou mdadm
les outils que j'utilise peuvent aussi se comporter différemment.
Solution 2 :
N'oubliez pas que RAID 1 est un miroir et que RAID 10 est une bande de miroirs.
La question est de savoir sur quel disque de chaque miroir les données sont-elles valides ? Dans une baie fraîchement créée, cela ne peut pas être connu, car les disques peuvent avoir des données différentes.
Rappelez-vous également que le RAID fonctionne à un niveau très bas; il ne sait rien des systèmes de fichiers ou des données qui pourraient être stockées sur le disque. Il pourrait même ne pas être un système de fichiers en cours d'utilisation.
Ainsi, l'initialisation dans ces baies consiste à copier les données d'un disque de chaque miroir telles quelles sur l'autre disque.
Cela signifie également que le tableau peut être utilisé en toute sécurité dès sa création et peut être initialisé en arrière-plan ; la plupart des contrôleurs RAID (et Linux mdraid) ont une option pour cela, ou le font automatiquement.
Solution 3 :
La synchronisation initiale est nécessaire car toute différence entre les miroirs apparaîtrait comme une erreur lors de la vérification périodique.
Et vous devriez faire des vérifications périodiques.