GNU/Linux >> Tutoriels Linux >  >> Linux

Modification du nom du périphérique MD pour inclure HOSTNAME :après le premier redémarrage. Comment obtenir un nom cohérent ?

Comment puis-je obtenir un chemin d'accès de périphérique cohérent pour mon périphérique MD, idéalement celui que j'ai spécifié ("/dev/md/myarray") ?

Après mdadm --create /dev/md/foobar ... , les deux hostname et name sont stockés dans les métadonnées mdadm, comme vous devez le vérifier avec mdadm --examine ou mdadm --detail :

# mdadm --detail /dev/md/foobar
           Name : ALU:foobar  (local to host ALU)

ALU se trouve être le nom d'hôte de ma machine ArchLinux :

# hostname
ALU

Vous pouvez spécifier l'hôte qui doit être stocké au moment de la création :

# mdadm --create /dev/md/foobar --homehost=barfoo
# mdadm --detail /dev/md/foobar
               Name : barfoo:foobar

... mais généralement personne ne se souvient de le faire.

Et c'est déjà là que les problèmes commencent ... vous avez peut-être créé votre matrice RAID à partir d'un LiveCD ou autre, et le nom d'hôte dans cet environnement ne correspondait pas du tout à votre installation principale. Et puis les métadonnées stockent un nom d'hôte complètement indépendant.

De même, si vous configurez tout correctement, mais que vous rencontrez ensuite des problèmes avec votre RAID et démarrez un système de secours pour vérifier les choses, il y a encore une fois une incompatibilité avec les noms d'hôte.

Ou inversement, le nom d'hôte peut correspondre même s'il s'agit de la mauvaise machine - si vous avez utilisé le même nom d'hôte pour deux systèmes indépendants, puis migrez les lecteurs. Ensuite, les tableaux extraterrestres reprennent les noms des originaux...

Désormais, les métadonnées peuvent également être modifiées ultérieurement à l'aide de mdadm --assemble --update=homehost ou --update=name , c'est une façon de traiter le problème. Il doit être défini correctement, mais il est difficile de le modifier car (pour une raison quelconque) à moins d'éditer directement les métadonnées en hexadécimal, cela ne peut être fait qu'au moment de l'assemblage.

Une autre façon est d'ignorer les systèmes hostname et spécifiez à la place --homehost sur montage ou ensemble HOMEHOST en mdadm.conf . Ceci est décrit en détail dans la page de manuel mdadm.conf.

HÔTE D'ACCUEIL
La ligne homehost donne une valeur par défaut pour l'option --homehost=à mdadm. Il ne devrait normalement y avoir qu'un seul autre mot sur la ligne. Il doit s'agir soit d'un nom d'hôte, soit de l'un des mots spéciaux <system> , <none> et <ignore> . Si <system> est donné, alors l'appel système gethostname(2) est utilisé pour obtenir le nom d'hôte. C'est la valeur par défaut.
[...]
Lorsque les baies sont créées, ce nom d'hôte sera stocké dans les métadonnées. Lorsque les baies sont assemblées à l'aide de l'auto-assemblage, les baies qui n'enregistrent pas le nom d'hôte d'accueil correct dans leurs métadonnées seront assemblées à l'aide d'un nom "étranger". Un nom "étranger" se termine toujours par une chaîne de chiffres précédée d'un trait de soulignement pour le différencier de tout nom local éventuel. par exemple. /dev/md/1_1 ou /dev/md/home_0.

Vous pouvez donc essayer de définir HOMEHOST ALU (dans mon cas), ou le plus générique HOMEHOST <ignore> (ou HOMEHOST <none> ) dans le mdadm.conf . Mais cela ne fonctionnera que lorsque ce mdadm.conf est présent. Et encore une fois, si vous définissez ignore puis connectez un tableau à partir d'une autre machine, vous risquez de rencontrer des conflits de noms.

Il serait donc préférable de définir correctement le nom d'hôte dans metadata et mdadm.conf et de ne pas l'ignorer, et mieux encore de définir le nom d'hôte réel dans initramfs avant l'assemblage, mais cela peut être difficile à mettre en pratique.

Ma préférence personnelle est de m'en tenir au style numérique classique. Identifiez-vous par UUID et rien d'autre :

ARRAY /dev/md1 UUID=8fe790ca:f3fa3388:4ae125b6:2c3a5d44
ARRAY /dev/md2 UUID=f14bef5b:a5356e51:25fde128:09983091
ARRAY /dev/md3 UUID=0639c68d:4c844bb1:5c02b33e:00ab4a93

Ceci est également cohérent (mais dépend également du fait qu'il a été créé de cette façon et/ou défini en conséquence dans les métadonnées, sinon vous devrez peut-être également --update ce). Et les tableaux étrangers qui ne correspondent pas aux UUID donnés devraient se retrouver sous la forme /dev/md127+ .

En fin de compte, quoi que vous fassiez, vous ne devriez pas vous fier aveuglément à /dev/mdX ou /dev/md/name c'est de la même manière que vous ne vous fiez pas aveuglément à /dev/sdX des lettres. Utilisez toujours les UUID du système de fichiers pour identifier tout ce qui se trouve sur ces baies.

Il y a trop de cas où les noms peuvent changer de manière inattendue, donc au mieux, cela peut être une aide d'orientation ou un indice pour l'administrateur système, ce n'est pas la réponse à tous les problèmes.


Linux
  1. Comment lier les caméras USB v4l2 aux mêmes noms de périphérique même après le redémarrage ?

  2. Comment obtenir le nom de l'ordinateur (pas son nom d'hôte) ?

  3. Comment empêcher l'adresse MAC de changer après la déconnexion ?

  4. Comment obtenir le nom de l'utilisateur à partir de l'uid

  5. Android - Comment faire détecter mon appareil par ADB sous Linux ?

Comment changer le nom d'hôte sur Debian Linux

Comment obtenir le PID par nom de processus ?

Comment désactiver ou supprimer une fonction bash ?

Comment obtenir un nom de domaine sous Windows à l'aide de la commande ?

Comment rendre les interfaces tactiles persistantes après le redémarrage ?

Le raid Linux disparaît après le redémarrage