Sur Ubuntu 18.04, je crée un tableau RAID 1 comme ceci:
mdadm --create /dev/md/myarray --level=1 --run --raid-devices=2 /dev/sdc /dev/sdd
J'ajoute ensuite la sortie de mdadm --detail --scan /dev/md/myarray
à /etc/mdadm/mdadm.conf. Cela ressemble à ceci:
ARRAY /dev/md/myarray metadata=1.2 name=MYHOSTNAME:myarray UUID=...
Le nom du périphérique a été préfixe avec "MyHostName:". À ce stade, le Symlink /dev/md/myarray
existe toujours, mais après la première fois que je le redémarre devient /dev/md/MYHOSTNAME:myarray
, casser des choses. Pour que cela aggrave, cela ne se produit que sur certains Machines - sur d'autres, le symbole de Symlink reste /dev/md/myarray
. Tous fonctionnent Ubuntu 18.04, donc je ne sais pas pourquoi.
Comment obtenir un chemin de périphérique cohérent pour mon appareil MD, idéalement exactement celui que j'ai spécifié ("/ dev/md/mraparray")? J'ai essayé de modifier mdadm.conf pour supprimer le nom d'hôte, mais même si la ligne dit
ARRAY /dev/md/myarray metadata=1.2 name=myarray UUID=...
le Symlink change toujours sur le redémarrage - sur des machines qui "veulent" le nom d'hôte. J'ai aussi essayé d'aller dans l'autre sens et d'ajouter le nom d'hôte à la fois:
ARRAY /dev/md/HOSTNAME:myarray metadata=1.2 name=HOSTNAME:myarray UUID=...
mais encore une fois sur des machines qui "ne veulent pas" le nom d'hôte, le symlink devient/dev/md/mraparray après un redémarrage!
Je ne peux pas utiliser le périphérique numérique (/ dev/md127) soit parce que lorsqu'il y a plusieurs périphériques MD créés, ils ont tendance à alterner entre MD126 et MD127! C'est fou!
Comment obtenir un chemin de périphérique cohérent pour mon appareil MD, idéalement exactement celui que j'ai spécifié ("/ dev/md/mraparray")?
Après mdadm --create /dev/md/foobar ...
, les deux hostname
et name
sont stockés dans les métadonnées Mdadm, comme vous devez vérifier avec mdadm --examine
ou mdadm --detail
:
# mdadm --detail /dev/md/foobar
Name : ALU:foobar (local to Host ALU)
ALU
arrive à ê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 de certains LiveCD ou autre, et le nom d'hôte dans cet environnement ne correspond pas à votre installation principale du tout. Et puis, les métadonnées stockent un nom d'hôte totalement indépendant.
De même si vous définissez tout correctement, mais rencontrez des problèmes avec votre raid et démarrez un système de sauvetage pour vérifier les choses, et encore une fois, il y a une inadéquation avec les noms d'hôtes.
Ou l'inverse, le nom d'hôte peut correspondre même s'il s'agit de la mauvaise machine - si vous utilisez le même nom d'hôte pour deux systèmes indépendants, puis migrer les lecteurs. Ensuite, les tableaux extraterrestres reprennent les noms des originaux ...
Maintenant, les métadonnées peuvent également être modifiées ultérieurement en utilisant mdadm --assemble --update=homehost
ou --update=name
, c'est un moyen de faire face à un problème. Il devrait être correctement fixé, mais il est difficile de changer comme (pour une raison quelconque) à court de métadonnées hexagonales directement, elle ne peut être effectuée qu'au temps de montage.
Une autre façon est d'ignorer les systèmes hostname
et spécifiez plutôt --homehost
sur montage ou ensemble HOMEHOST
dans mdadm.conf
. Ceci est décrit dans certains détails dans le manche MDADM.CONF.
HOMEHOST
[.____] La ligne HomeHost donne une valeur par défaut pour l'option --HomeHost = Option à Mdadm. Il ne devrait normalement être que d'un autre mot sur la ligne. Il devrait être soit un nom d'hôte, soit l'un des mots spéciaux<system>
,<none>
et<ignore>
. Si<system>
est donné, alors le gethostname (2) SystemCall est utilisé pour obtenir le nom d'hôte. Ceci est la valeur par défaut.
[...]
[.____] Lorsque des tableaux sont créés, ce nom d'hôte sera stocké dans les métadonnées. Lorsque des tableaux sont assemblés à l'aide de l'assemblage automatique, des tableaux qui n'enregistrent pas le nom de la maison correct de leurs métadonnées seront assemblés à l'aide d'un nom "étranger". Un nom "étranger" se termine toujours avec une chaîne de chiffres précédée d'un soulignement pour la différencier de tout nom local possible. par exemple./dev/md/1_1 ou/dev/md/home_0.
Donc, vous pouvez essayer de définir HOMEHOST ALU
(dans mon cas) ou plus générique HOMEHOST <ignore>
(ou HOMEHOST <none>
) dans le mdadm.conf
. Mais cela ne fonctionnera que lorsque mdadm.conf
est présent. Et encore une fois si vous définissez Ignorer puis connectez-vous une matrice d'une autre machine, vous pourriez rencontrer des conflits de noms.
Il serait donc préférable de définir correctement le nom d'hôte dans les métadonnées et Mdadm.conf et ne pas l'ignorer, et mieux encore définir le nom d'hôte réel dans InitiDramfs avant l'assemblage, mais il peut être difficile de mettre en pratique.
Ma préférence personnelle consiste à coller au style numérique classique. Identifier 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 cela dépend également d'avoir été créé de cette manière et/ou défini en conséquence dans les métadonnées, sinon vous pourriez également avoir à --update
ce). Et des tableaux extraterrestres qui ne correspondent pas aux Uuids donnés devraient se retrouver comme /dev/md127+
.
À la fin de la journée, peu importe ce que vous faites, vous ne devriez pas conserver aveuglément sur /dev/mdX
ou /dev/md/name
s la même chose que vous ne vous aveuglez pas aveuglément sur /dev/sdX
des lettres. Utilisez toujours des uuids de système de fichiers pour identifier tout ce qui est sur ces tableaux.
Il y a trop de cas d'angle où les noms peuvent changer de manière inattendue, alors au mieux, cela peut être une aide d'orientation ou une allusion à la sysadmin, ce n'est pas la réponse à tous les problèmes.