Comment renommer un tableau RAID raid mdadm?


23

Pour une raison quelconque, lorsque j'essaie de renommer un tableau RAID raid mdadm en un nom textuel, le changement ne prend pas.

J'ai essayé les conseils de cette question de défaut de serveur , 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 voir, le nom est toujours signalé comme omicron:0et toujours accessible via l'ancien fichier de l'appareil. Essayer sudo mdadm --detail /dev/md/alphafonctionnera et rapportera le même nom, incorrect, jusqu'au prochain redémarrage, quand il cessera de fonctionner.

Il semble que lors de la détermination du nom à insérer, mdadm soit confus et crée simplement le fichier de périphérique à la place.


DE CÔTÉ

Existe-t-il un moyen de forcer mdadm à forcer une mise à jour de la partie nom du superbloc (c'est-à-dire définir explicitement le nom que vous voulez que le tableau ait) sans avoir à recréer explicitement le superbloc? (ie 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 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 l'un de format standard. (/ dev / md125 ou similaire)

Comment puis-je faire en sorte qu'un tableau mdadm renommé conserve son nom? - C'est à dire - Comment puis-je faire ubuntu persister les fichiers du périphérique entre les bottes?

Réponses:


19

Vous devez lui donner le nom 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. Le voici: 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.


1
Une mise à jour mineure de cette ligne de commande, pour plus de clarté, comme comme un boob, je devais entrer le nom d'origine du tableau après «--update =». sudo mdadm --assemble /dev/md/alpha --name={newname} --update=name /dev/sd[gf] J'espère que cela a du sens ou le rend plus clair ....
anastrophe

Bonjour, après avoir émis la commande # sudo mdadm --assemble / dev / md127 --name = md0 --update = name / dev / sd [ab] J'obtiens mdadm: / dev / sda est occupé - en sautant mdadm: / dev / sdb est occupé - sauter Des pensées? Bien sûr, j'ai démonté la baie en premier!
razor7

2
@ razor7mdadm --stop --scan md127
Daniel Dinnyes

12

La façon de faire en sorte qu'Ubuntu persiste dans le changement de nom entre les démarrages est de mettre à jour vos initramfs. Après avoir mis à jour le nom de votre baie et mdadm.conf, vous devez exécuter la commande suivante:

sudo update-initramfs -u

Le processus complet:

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 retourner 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 remplaçant l'ancienne ligne). Ou exécutez:

sudo mdadm -Db /dev/md/alpha >> /etc/mdadm/mdadm.conf

Prochaine course:

sudo update-initramfs -u

Enfin, redémarrez.

Cette discussion a été utile .


8

La première réponse de pille et NN fonctionne.

L'astuce ici est que lorsque vous ne spécifiez pas l' --nameoption, le seul changement de nom effectué par mdadmattribue le nom de la baie à partir du numéro de périphérique qu'il a alloué. Dans cette question, il s'agit de 0, le nouveau nom du tableau est donc 0.

Puisque vous spécifiez le nom du périphérique ("alpha" ici) à utiliser dans la commande d'assemblage, il créera et utilisera ce nom de périphérique. Mais au démarrage automatique, mdadmcrée un périphérique basé sur le nom qu'il voit dans le superbloc, c'est-à-dire 0 dans ce cas, donc le nom du périphérique que vous avez spécifié dans votre commande d'assemblage est perdu.

Pour rendre votre changement de nom collant et cohérent, vous devez utiliser le même nom dans la dernière partie du nom de votre appareil et dans le nouveau nom de votre baie. 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 -name=<hostname>:<array_name>syntaxe.

Cela peut être utile par exemple après un changement de nom de machine.


2

Il semble que la réponse que vous recherchez 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 de nom n'est pas collant après avoir été défini. Si vous l'avez fait fonctionner, merci d'accepter un commentaire dont la réponse a fait l'affaire pour vous. 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 /etc/mdadm.conf, vous utilisez déjà l'UUID qui est le nom du tableau canonique. L'ajout d'une autre variable, que vous jugez bon de changer, est juste une maintenance inutile et demander des problèmes, par exemple, le tableau ne démarre pas.

Au-delà de ces observations, le meilleur endroit où aller pour comprendre pourquoi vous ne pouvez tout simplement pas mettre à jour le nom à l'exécution est de faire un ping sur la liste de diffusion linux-raid.


1

après avoir changé le nom, avez-vous essayé de mettre à jour votre mdadm.conf?

 mdadm --examine --scan --config=mdadm.conf >> /etc/mdadm.conf

0

mdadm a un bug lorsque des volumes de raid ont été créés en interne avec un espace à leur nom. Ces volumes ne se monteront pas 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 il n'est pas pris en charge sur 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 un tel bug et monte parfaitement les volumes RAID contenant des espaces dans leurs noms)!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.