Comment changer le nom d'un périphérique MD (mdadm)

25

Voici la sortie de mdadm -Esv :

ARRAY / dev / md127 level = raid0 num-devices = 2 UUID = d89d9d45: 9a420812: c44c77eb: 7ee19756 devices = / dev / sdb8, / dev / sda8

Il s'agit d'un tableau v0.90. La question est la suivante: comment mdadm attribue-t-il le nom d'un périphérique correspondant, où le stocke-t-il et comment le change-t-on?

Ce que je veux accomplir, c'est renommer md127 en quelque chose de différent à mon goût.

XXL
la source

Réponses:

31

Avertissement : veuillez effectuer une sauvegarde avant de suivre tout conseil donné ici :-)

Option 1:

Modifier /etc/mdadm.conf:

ARRAY / dev / md1 level = raid0 num-devices = 2 UUID = d89d9d45: 9a420812: c44c77eb: 7ee19756 devices = / dev / sdb8, / dev / sda8

Je viens d'entrer votre propre sortie et j'ai changé 127 en 1. Redémarrez et cela devrait être md1 maintenant.

Option 2:

Si vous ne l'avez pas mdadm.confet que vous souhaitez l'assembler automatiquement à md1 , vous pouvez le faire:

mdadm a un concept de «mineur préféré». Par exemple, une fois qu'un certain nombre mineur est attribué à un tableau et stocké dans le superbloc, il sera utilisé chaque fois que ce tableau est auto-assemblé. Vérifiez ceci:

mdadm --detail / dev / md127

S'il indique "Mineur préféré: 127", c'est votre problème. Vous devez mettre à jour le mineur préféré. Comment procéder:

Vous ne pouvez pas simplement changer le mineur préféré. Vous devez démarrer en mode de récupération ou en mode utilisateur unique s'il s'agit de votre appareil racine, démontez le système de fichiers, après cela:

mdadm --stop / dev / md127
mdadm --assemble --update = super-mineur / dev / md1 / dev / sdb8 / dev / sda8

Ensuite, vous aurez votre md127 assemblé en tant que md1. Et il devrait en être ainsi à l'avenir également.

Avec les tableaux 1.x:

Les tableaux plus récents ne stockent pas de numéro «Mineur préféré» et ne prennent pas en charge «--update = super-minor». Au lieu de cela, ils stockent un nom qui peut être modifié avec:

mdadm --stop / dev / md127
mdadm --assemble --update = nom --name = 2 / dev / md1 / dev / sdb8 / dev / sda8

Ou vous pouvez spécifier 'hostname: 2' pour que tout reste cohérent avec les autres tableaux (recherchez le nom actuel avec --detail).

haimg
la source
très bon! Exactement ce que je cherchais. donc l'astuce était de mettre aussi à jour le super-mineur .. merci!
XXL
Vous êtes un sauveur de vie! J'ai utilisé cela pour débrancher un périphérique WD NAS qui utilise md.
Vlad
Cette solution est théoriquement correcte, mais il m'a été difficile de l'implémenter sur le système vivant. L'option n ° 1 ne fonctionnait pas non plus pour moi. Je suis allé avec superuser.com/questions/287462/…
gorn
+1 pour la dernière partie de la solution qui a été très utile lors du déplacement de la baie de raid d'une machine à une autre. 'hostname: 2' et changer md127 en md1 était exactement ce dont j'avais besoin pour garder les noms cohérents
Yahoo
13

Juste pour ajouter à l'excellente réponse de haimg. Il peut arriver que même avec un mdadm.conf, le système (au moins pour Ubuntu) puisse toujours assembler automatiquement les tableaux avant de lire mdadm.conf. Donc, quand il le trouve, il ignore simplement les tableaux qui viennent d'être assemblés de toute façon.

Pour en tenir compte, exécutez sudo update-initramfs -upour régénérer l'initrd approprié.

Liens pertinents: http://ubuntuforums.org/showthread.php?t=1764861%29%3a

Wtower
la source
2
Cela a résolu le problème pour moi (après un autre redémarrage) sur Ubuntu 16.04. Dans mon cas, c'était parce que j'avais recréé la baie et qu'elle avait un nouvel UUID. Après l'avoir mis à jour mdadm.conf, le redémarrage seul n'était pas suffisant; la mise à jour des initramfs a fait l'affaire.
nh2
2

Les superblocs de la version 0.9 n'ont pas de nom, ils ont été introduits dans la version 1. /dev/md127n'est pas le nom du tableau, c'est le nom du fichier de périphérique du tableau, qui est une conséquence directe du numéro mineur du périphérique de bloc de raid. Ce nombre mineur est choisi de façon plutôt arbitraire lorsque le tableau est assemblé.

L'UUID fournit un identifiant unique pour le tableau, si vous en avez besoin. Si vous préférez un nom lisible ou structuré, placez un volume physique LVM dans la baie.

Gilles 'SO- arrête d'être méchant'
la source
Je suis conscient de la possibilité de --homehost à partir de la dernière version, c'est pourquoi j'ai délibérément déclaré qu'il s'agit d'un tableau de métadonnées v0.90. Cependant, ce n'est pas mon intention ni compatible. En parcourant mes messages, je ne peux pas non plus remarquer où j'ai mentionné que / dev / md127 était le nom du tableau . Je pense avoir fourni les détails exacts de ce que je veux faire. Donc, la question demeure, comment puis-je le changer et où est ce "numéro mineur" stocké? Je suppose que cela fait partie du superbloc? Cela gâchera-t-il la somme de contrôle des superblocs lors de la modification hexadécimale?
XXL
@XXL Ce nombre n'est stocké nulle part, il est choisi de façon plutôt arbitraire lorsque le tableau est assemblé.
Gilles 'SO- arrête d'être méchant'
hmm .. je ne comprends pas. Alors pourquoi ai-je toujours / dev / md127 quand je mdadm -Esv ? Ne devrais-je pas obtenir autre chose, qui est aléatoire, autre qu'un nom statique? C'est si c'est vraiment "arbitraire" ..
XXL