Pour une raison quelconque, lorsque je tente de renommer un tableau RAID mdadm en un nom textuel, le changement ne prend pas.
J'ai essayé le conseil de ceci question de serverfault , mais en vain.
~$ mdadm --version
mdadm - v3.1.4 - 31st August 2010
~$ Sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue Sep 27 08:32:32 2011
Raid Level : raid1
Array Size : 1953513424 (1863.02 GiB 2000.40 GB)
Used Dev Size : 1953513424 (1863.02 GiB 2000.40 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Sun Oct 2 17:59:37 2011
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : omicron:0 (local to Host omicron)
UUID : 75c4a555:482aecd0:ade70dfc:1547926a
Events : 17
Number Major Minor RaidDevice State
0 8 80 0 active sync /dev/sdf
1 8 96 1 active sync /dev/sdg
~$ Sudo mdadm --stop /dev/md0
mdadm: stopped /dev/md0
~$ Sudo mdadm --assemble /dev/md/alpha --update=name /dev/sd[gf]
mdadm: /dev/md/alpha has been started with 2 drives.
~$ Sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue Sep 27 08:32:32 2011
Raid Level : raid1
Array Size : 1953513424 (1863.02 GiB 2000.40 GB)
Used Dev Size : 1953513424 (1863.02 GiB 2000.40 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Sun Oct 2 18:06:11 2011
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : omicron:0 (local to Host omicron)
UUID : 75c4a555:482aecd0:ade70dfc:1547926a
Events : 17
Number Major Minor RaidDevice State
0 8 80 0 active sync /dev/sdf
1 8 96 1 active sync /dev/sdg
~$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdf[0] sdg[1]
1953513424 blocks super 1.2 [2/2] [UU]
md126 : active (auto-read-only) raid1 sdd[0] sde[1]
1953513424 blocks super 1.2 [2/2] [UU]
md127 : active (auto-read-only) raid1 sdb[0] sda[1]
976762496 blocks [2/2] [UU]
unused devices: <none>
Comme vous pouvez le constater, le nom est toujours signalé sous la forme omicron:0
et est toujours accessible via l'ancien fichier de périphérique. Essayer Sudo mdadm --detail /dev/md/alpha
fonctionnera et signalera le même nom, faux, jusqu’au prochain redémarrage, quand il ne fonctionnera plus.
Il semble que mdadm s'embrouille et crée simplement le fichier de périphérique pour déterminer le nom à entrer.
DE CÔTÉ
Existe-t-il un moyen de forcer mdadm à forcer la mise à jour du nom du superbloc (c.-à-d. Définir explicitement le nom que vous souhaitez attribuer au tableau) sans avoir à recréer explicitement le superbloc? (i.e. Sudo mdam --zero-superblock /dev/sd[fg]; Sudo mdadm --create /dev/md/alpha --raid-devices=2 --level=1 --assume-clean --name=alpha /dev/sd[fg]
)
Le problème est qu'après le redémarrage, malgré l'ajout de ARRAY /dev/md/alpha metadata=1.2 name=omicron:alpha UUID=c66a267...
à mdadm.conf, le fichier de périphérique nommé disparaît et est remplacé par un des formats standard. (/ dev/md125 ou similaire)
Comment faire pour qu'un tableau renommé mdadm conserve son nom? - C'est à dire. - Comment puis-je faire en sorte qu'ubuntu conserve les fichiers de périphérique entre les bottes?
Vous devez lui donner le nom en fait avec --name=
comme:
Sudo mdadm --assemble /dev/md/alpha --name=newname --update=name /dev/sd[gf]
Pour avoir un comportement cohérent lors du redémarrage, vous devez utiliser le même nom dans l'argument --name que dans la dernière partie du périphérique. Ce serait: Sudo mdadm --assemble/dev/md/alpha --name = alpha --update = name/dev/sd [gf]
Voir le post de Khassad ci-dessous pour une explication complète.
Pour faire persister Ubuntu, le changement de nom à travers les bottes consiste à mettre à jour vos initramfs. Après avoir mis à jour votre nom de groupe et le fichier mdadm.conf, vous devez exécuter la commande suivante:
Sudo update-initramfs -u
L'ensemble du processus:
Sudo mdadm --stop /dev/md125
Sudo mdadm --assemble /dev/md/alpha --name=alpha --update=name /dev/sd[fg]
Sudo mdadm -Db /dev/md/alpha
La troisième commande devrait renvoyer quelque chose comme:
ARRAY /dev/md/alpha metadata=1.2 name=omicron:alpha UUID=5b024352:3a940335:233aa23f:5c6b2a1f
Collez le résultat dans /etc/mdadm/mdadm.conf (en remplacement de l'ancienne ligne). Ou exécuter:
Sudo mdadm -Db /dev/md/alpha >> /etc/mdadm/mdadm.conf
Prochaine course:
Sudo update-initramfs -u
Enfin, redémarrez.
La première réponse de pille et N.N fonctionne.
L'astuce ici est que, lorsque vous ne spécifiez pas l'option --name
, le seul changement de nom effectué par mdadm
consiste à attribuer le nom du tableau à partir du numéro de périphérique alloué. Dans cette question, il s'agit de 0, le nouveau nom du tableau est donc 0.
Puisque vous spécifiez le nom de périphérique ("alpha" ici) à utiliser dans la commande assemble, il créera et utilisera ce nom de périphérique. Mais, avec le démarrage automatique, mdadm
crée un périphérique en fonction du nom qu’il voit dans le superbloc, à savoir 0 dans ce cas, de sorte que le nom de périphérique que vous avez spécifié dans votre commande assemble est perdu.
Pour que votre changement de nom reste collant et cohérent, vous devez utiliser le même nom dans la dernière partie du nom de votre périphérique et dans le nouveau nom de votre tableau. Dans ce cas, pour le périphérique "alpha", vous devrez utiliser cette ligne de commande:
mdadm --assemble /dev/md/alpha --name=alpha --update=name /dev/sd[gf]
Vous pouvez également modifier le nom d'hôte. Pour ce faire, vous devez le déclarer explicitement à l'aide de la syntaxe -name=<hostname>:<array_name>
.
Cela peut être utile par exemple après un changement de nom d'ordinateur.
Il semble que la réponse à votre question se trouve dans la page de manuel mdadm.
[create, build, grow]
-N, --name=
Set a name for the array. This is **currently only effective when creat‐
ing an array** with a version-1 superblock, or an array in a DDF con‐
tainer. The name is a simple textual string that can be used to iden‐
tify array components when assembling. If name is needed but not speci‐
fied, it is taken from the basename of the device that is being created.
e.g. when creating /dev/md/home the name will default to home.
et pour assembler
-N, --name=
Specify the name of the array to assemble. **This must be the name that
was specified when creating the array**. It must either match the name
stored in the superblock exactly, or it must match with the current
homehost prefixed to the start of the given name.
Ce qui explique pourquoi l'attribut name n'est pas collant une fois défini. Si vous avez réussi à le faire fonctionner, veuillez ajouter un commentaire indiquant quelle réponse vous a été utile. Alternativement, vous pouvez toujours créer des liens symboliques en utilisant une règle udev et l'UUID du tableau comme ancre.
Je ne vois pas l'intérêt d'ajouter le faux nom au fichier /etc/mdadm.conf, vous utilisez déjà l'UUID, qui est le nom du tableau canonique. Ajouter une autre variable, que vous jugez utile, est simplement un entretien inutile et un problème, par exemple. tableau ne parvient pas à démarrer.
Au-delà de ces observations, le meilleur endroit pour comprendre pourquoi vous ne pouvez tout simplement pas mettre à jour le nom au moment de l'exécution est d'envoyer une requête ping à la liste de diffusion linux-raid.
après avoir changé le nom, avez-vous essayé de mettre à jour votre mdadm.conf
?
mdadm --examine --scan --config=mdadm.conf >> /etc/mdadm.conf
mdadm a un bogue lorsque des volumes RAID ont été créés en interne avec un espace dans leur nom. Ces volumes ne seront pas montés correctement en raison d'une erreur de format dans le fichier /etc/mdadm/mdadm.conf généré. Vous devez les renommer ici, mais cela ne sera pas persistant. Il est donc nécessaire de renommer les noms internes ... mais cela n'est pas pris en charge par tous les contrôleurs RAID qui bloquent leurs métadonnées et ne prennent pas en charge l'option de nom. Je ne vois pas comment renommer ces volumes (même s'ils sont référencés en interne par leur UUID, les noms sont ceux utilisés par Linux; Windows au contraire n'a pas ce bogue et monte parfaitement les volumes RAID contenant des espaces dans leurs noms)!