web-dev-qa-db-fra.com

Ubuntu Server 12.04, le numéro de périphérique MDADM change soudainement?

Je fais face à un bug vraiment ennuyeux, j'ai configuré un logiciel RAID1 avec mdadm, et la configuration s'est bien déroulée avec ces résultats

/dev/md/lucas.mgscreativa.com.ar:0

J'ai aussi configuré mdadm.conf comme ceci

DEVICE /dev/sda /dev/sdb

# auto-create devices with Debian standard permissions CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts MAILADDR root

# definitions of existing MD arrays ARRAY /dev/md/lucas.mgscreativa.com.ar:0 metadata=1.2
name=lucas.mgscreativa.com.ar:0
UUID=c913486a:e62c7ea1:cfb98b6b:253d1f62

Et fstab configuré comme ça

/dev/md/lucas.mgscreativa.com.ar:0 /media/data     ext4
defaults,noatime      0       0

Mais, un jour, le nom de mon tableau est soudainement passé de /dev/md/lucas.mgscreativa.com.ar:0 à/dev/md0. J’ai donc fait quelques changements dans fstab et mdadm.conf (bien sûr, après des heures et des heures d’essai et d’erreur) et tout s’est bien passé, mais aujourd’hui, le numéro de MD est passé de/dev/md0 à/dev/md127 !!!

Que se passe t-il ici? est-ce un bug je suppose.

Existe-t-il un moyen de corriger le numéro MD afin que mon serveur puisse fonctionner comme il se doit, sans aucun défaut?

Merci!

4
razor7

Premièrement: vous avez probablement des erreurs dans votre tableau. Vous devez vérifier son statut, immédiatement.

Exemple:

root@locutus:~# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Fri Jun  1 15:30:31 2012
     Raid Level : raid10
     Array Size : 1953119232 (1862.64 GiB 1999.99 GB)
  Used Dev Size : 976559616 (931.32 GiB 1000.00 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Sun Nov 25 21:39:44 2012
          State : clean 
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : locutus:0  (local to Host locutus)
           UUID : b81ac63a:51a9b01c:c01812ec:86c534c4
         Events : 182

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       49        1      active sync   /dev/sdd1
       2       8       17        2      active sync   /dev/sdb1
       3       8       33        3      active sync   /dev/sdc1

Vous constaterez très probablement que vous avez des erreurs… celles-ci devront être corrigées.

Pour continuer, vous devriez changer la manière dont votre fstab est configuré, utiliser UUID plutôt que devicename. Utilisez la commande blkid sur votre tableau (ou une partition sous votre tableau) pour obtenir son UUID, puis utilisez cet UUID pour le monter dans/etc/fstab.

Exemple:

root@locutus:~# blkid /dev/mapper/vg0-root
/dev/mapper/vg0-root: UUID="61998221-7b39-49cd-83f7-62fda973218c" TYPE="ext4" 

Avec ces informations, je définirais mon entrée/etc/fstab pour que root ressemble à ceci:

UUID=61998221-7b39-49cd-83f7-62fda973218c    /    ext4    defaults,errors=remount-ro    0    1

Une fois cette opération effectuée, votre système trouvera vos partitions, que leur nom de périphérique soit modifié ou non (par exemple, si les câbles de lecteur sont intervertis).

Vous devez également configurer votre /etc/mdadm/mdadm.conf pour rechercher automatiquement les éléments sans qu'il soit nécessaire de placer un lecteur dans un emplacement particulier:

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

# by default (built-in), scan all partitions (/proc/partitions) and all
# containers for MD superblocks. alternatively, specify devices to scan, using
# wildcards if desired.
#DEVICE partitions containers

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
ARRAY /dev/md/0 metadata=1.2 UUID=c913486a:e62c7ea1:cfb98b6b:253d1f62 name=lucas.mgscreativa.com.ar:0

NOTE QU'IL N'Y A AUCUN DISPOSITIF DÉCRIT DANS CE FICHIER DE CONF. Ceci est une fonctionnalité, pas un bogue. Avec mdadm.conf configuré de cette manière, votre système analysera automatiquement tous les lecteurs attachés à la recherche de tout ce qui appartient à votre tableau et les assemblera tous sous le nom/dev/md0.

5
Jim Salter

Pour cette réponse, je suppose que la matrice est intacte - pas de disques en panne, pas d'autres conditions d'erreur, juste le "numéro de périphérique" changeant.

Ce qui devrait normalement fonctionner est d’arrêter le tableau:

# mdadm --verbose --misc --stop /dev/md127

... corrige la ligne se rapportant à la matrice dans /etc/mdadm/mdadm.conf (c'est-à-dire ajuste le nom du périphérique). Puis assemblez-le comme suit:

# mdadm --verbose --assemble --update=super-minor --run /dev/md0 /dev/sdaX /dev/sdbX

(ajustez les références aux périphériques physiques à votre cas).

Vous devriez voir une sortie comme celle-ci:

mdadm: looking for devices for /dev/md0
mdadm: updating superblock of /dev/sdaX with minor number 0
mdadm: /dev/sdaX is identified as a member of /dev/md0, slot 0.
mdadm: updating superblock of /dev/sdbX with minor number 0
mdadm: /dev/sdbX is identified as a member of /dev/md0, slot 1.
mdadm: added /dev/sdbX to /dev/md0 as 1
mdadm: added /dev/sdaX to /dev/md0 as 0
mdadm: /dev/md0 has been started with 2 drives.

Et si vous interrogez les détails, vous devriez voir un champ "Preferred Minor" mis à jour. Vérifier avec:

# mdadm -Q -D /dev/md0|grep "Preferred"
Preferred Minor : 0

Mises en garde: veillez également à monter le périphérique et à y écrire. Sinon, le changement pourrait ne pas prendre effet. De plus, super-minor semble être spécifique à l'ancien format de métadonnées.

NB: Je ne sais pas si cela peut affecter le "nom" dans le sens original. Je sais que vous pouvez toutefois affecter la X dans les noms /dev/mdX créés.

4
0xC0000022L