web-dev-qa-db-fra.com

Comment renommer un tableau RAID mdadm?

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?

23
Zaz

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.

19
pille

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.

Cette discussion était utile .

10
Swoogan

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.

8
Khassad

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.

2
ppetraki

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

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

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)!

0
verdy_p