Lors de la création d'un périphérique raid logiciel Linux en tant que périphérique raid10, je ne comprends pas pourquoi il doit être initialisé. La même question s'applique vraiment à raid1 ou raid0.
En fin de compte, la plupart des gens placeraient un système de fichiers d'une sorte quelconque dessus, et ce système de fichiers ne devrait pas assumer aucun état des données du disque. Chaque écriture affectera les deux disques dans une configuration raid10 ou raid1, où les N miroirs sont écrits. Il ne devrait y avoir aucune raison pour qu'un raid10 soit initialisé initialement, car cela se produira avec le temps.
Je peux comprendre pourquoi pour une configuration raid5 / 6 où il y a une exigence de parité, mais même alors, il semble que cela pourrait être fait paresseusement.
Est-ce juste pour que les gens se sentent mieux à ce sujet?
la source
Réponses:
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.
la source
Raid 1, étant un miroir, dépend de tous les disques dans un miroir étant des copies exactes les uns des autres. Prenez votre disque dur aléatoire et un autre disque dur aléatoire, et vous disposez peut-être de données différentes, violant ainsi cette présomption. C'est pourquoi l'initialisation est nécessaire. Il copie simplement le contenu du premier lecteur sur 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 ignorer cela. L'
mdadm
option--assume-clean
fait cela, mais vous avertit:Si vous ne le faites pas, il y a une différence entre les lecteurs et leur lecture, vous ne savez pas ce que le lecteur lira. Vous devriez être assez en sécurité avec un système de fichiers (mais notez ci-dessous), car vous écrivez probablement avant de lire quoi que ce soit sur cet appareil, puis vous êtes clair.
Notez qu'au moins Linux
mdadm
initialisera le tableau en arrière-plan. Vous pouvez facilement créer FS au-dessus de lui la première seconde. La performance va souffrir jusqu'à la fin de l'initialisation, mais c'est tout.Mais:
a) Lorsque vous effectuez
mkfs
certains utilitaires, vérifiez s'il y a déjà quelque chose sur ce disque. Bien que cela ne touche que quelques régions bien connues du lecteur, il lit avant d'écrire quoi que ce soit, vous mettant ainsi en danger.b) Si vous effectuez une resynchronisation périodique de votre baie, 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 un FS de copie sur écriture (par exemple ZFS ou BTRFS) et ne remplissez jamais votre FS, il est parfaitement plausible qu'un bloc reste non initialisé du point de vue FS pendant des années.
Pourquoi resynchroniser avec des périphériques RAID1?
Pour la même raison, 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éfectueux, vous venez de détecter une panne tôt et de réduire le temps que vous utilisez en mode dégradé (en comptant à partir de l'échec du lecteur, pas à partir du moment où vous le remarquez). Raid ne vous aidera pas si un disque tombe en panne et un mois plus tard, l'autre échoue si vous ne le faites pas.
RAID10
Maintenant, pour RAID10, tout ce qui précède est valable. Après tout, RAID10 n'est qu'un moyen intelligent de dire «Je mets mes deux périphériques RAID1 dans une paire RAID0».
Caveat:
C'est tout 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. Les autres versions du noyau Linux et / ou desmdadm
outils que j'utilise peuvent également se comporter différemment.la source
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
. Je pense que cette déclaration est incorrecte. Fournissez au moins un exemple du message d'erreur tel qu'il est possible de consulter la source pour vérifier dans quelles circonstances il est produit.While this only touches a few well-known regions of drive, it reads before you write anything, thus putting you in danger.
En danger de quoi? Je me rends compte que la lecture peut entraîner quelque chose, mais pourquoi cela entraînerait-il un danger pour l'utilisateur si (a) les informations lues ne sont utilisées nulle part et (b) une écriture est sur le point de se produire?urandom
un périphérique initialisé, avec Linux mdadm, montre que les premiers 80k restent différents, ainsi que les derniers 48k. Ce dernier est probablement dû à l'arrondissement de la taille du RAID à la taille du bloc. Je n'ai pas testé avec différentes tailles de périphérique, mais le 80 + 48 est exactement la différence de taille entre le périphérique RAID et le périphérique sous-jacent.N'oubliez pas que RAID 1 est un miroir et que RAID 10 est une bande de miroirs.
La question est, sur quel disque dans chaque miroir les données sont-elles valides? Dans un tableau fraîchement créé, cela ne peut pas être connu, car les disques peuvent avoir des données différentes.
Souvenez-vous également que le RAID fonctionne à un niveau très bas; il ne sait rien des systèmes de fichiers ni 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 tableaux consiste à copier les données d'un disque dans chaque miroir telles quelles sur l'autre disque.
Cela signifie également que le tableau est sûr à utiliser dès la 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.
la source
En termes simples, deux nouveaux disques ne devraient pas être des copies parfaites l'une de l'autre dès le début.
Ils doivent être transformés en copies parfaites les uns des autres.
De plus, l'initialisation comprend également la configuration du superbloc de métadonnées avec des informations sur la configuration de la baie.
Le fichier / proc / mdstat devrait vous indiquer que le périphérique a été démarré, que le miroir est en cours de reconstruction et un ETA de la fin de la reconstruction. La reconstruction se fait en utilisant une bande passante d'E / S inactive. Ainsi, votre système doit toujours être réactif, bien que les voyants de votre disque affichent également beaucoup d'activité.
Le processus de reconstruction est transparent, vous pouvez donc réellement utiliser l'appareil même si le miroir est actuellement en cours de reconstruction.
la source