web-dev-qa-db-fra.com

Comment corriger "mdadm: / dev / sdc1 pas assez grand pour joindre un tableau" pour trois disques identiques?

Après avoir migré vers Ubuntu 12.04 LTS sur mon serveur, grub a commencé à se plaindre et à donner des erreurs à propos de mon tableau RAID, tout semble encore fonctionner mais il est un peu énervant d’avoir des erreurs de grub.

 Configuration de grub-pc (1.99-21ubuntu3.7) ... erreur 
: Trouvé deux disques avec l'index 2 pour RAID md0. Erreur:. Membre: RAID superflu (3 a trouvé).

Je reçois beaucoup de ces erreurs lorsque Grub est mis à jour.

Les faits sont les suivants: J'ai trois disques identiques dans une configuration raid5, sur deux des disques, une partition principale est ajoutée à la matrice, mais le troisième disque est ajouté sans partition principale. c'est à dire. mdam --manage /dev/md_d0 --add /dev/sdc

J'imagine que c'est la raison pour laquelle on se plaint.

Depuis la découverte de ce problème, j’ai désactivé le disque auquel il manque une partition principale, créé une partition principale et vérifié que le résultat est identique sous cfdisk /dev/xxx, puis Print Partition table. Et essayé d’ajouter la nouvelle partition au tableau RAID et c’est à ce moment-là que je reçois le message que la partition est trop petite pour être ajoutée au tableau RAID.

> Sudo mdadm /dev/md_d0 --add /dev/sdc1

mdadm: /dev/sdc1 not large enough to join array

Les tables de partition se ressemblent toutes,

 Table de partitionnement pour /dev/sdc

 Premier Dernier 
 # Type Secteur Secteur Longueur de décalage Type de système de fichiers (ID) Indicateur 
 - ------- ----------- ----------- ------ ----------- ----------- --------- ---- 
 Pri/Log 0 2047 * 0 # 2048 * Espace libre Aucun 
 1 Primary 2048 * 3907029167 * 0 3907027120 * Linux RAID auto (FD ) Néant 
 
 Table de partitionnement pour /dev/sdd[.____._rev
 Première Dernière 
 # Type Secteur Secteur Longueur de décalage Type de système de fichiers (ID) Indicateur 
 - ------- ----------- ----------- ------ ---------- - -------------------- ---- 
 Pri/Log 0 2047 * 0 # 2048 * Espace libre Aucun 
 1 Primaire 2048 * 3907029167 * 0 3907027120 * Linux raid auto (FD) Aucun 
 
 Table de partitionnement pour /dev/sde[.____._rev
 Première Dernière 
 # Type Secteur Secteur Offs et Longueur Type de système de fichiers (ID) Flag 
 - ------- ----------- ----------- ------ ----------- -------------------- ---- 
 Pri/Log 0 2047 * 0 # 2048 * Espace libre Aucun 
 1 Primary 2048 * 3907029167 * 0 3907027120 * Linux RAID auto (FD) Aucun 

Ou alors, si vous imprimez la table de partition en tant que données brutes dans cfdisk, il existe quelques différences, mais je ne peux pas déchiffrer ce que cela signifie.

 -> diff sde.raw sdc.raw 
 1c1 
 Lecteur de disque: /dev/sde
.-
 Lecteur de disque:/dev /sdc
30c30
 0x1B0: 00 00 00 00 00 00 00 00 B7 E9 70 74 74 00 00 20 
 --- 
 0x1B0: 00 00 00 00 00 00 00 00 4B 0C 58 1C 00 00 00 20 

J'ai réalisé que je pouvais essayer de copier le membre d'un des disques de travail en utilisant dd, mais j'obtiens toujours la même erreur même si la table de partition est identique dans la sortie brute de cfdisk.

 $ Sudo dd si =/dev/sdd de =/tmp/sdd-mbr.bin bs = 512 points = 1 
 $ Sudo dd si =/tmp/sdd-mbr.bin de =/dev/sdc bs = 512 points = 1 
 $ cat /proc/partitions
major minor #blocks name 
 8 48 1953514584 sdd 
 8 49 1953513560 sdd1 
 8 32 1953514584 sdc 
 8 33 1953513560 sdc1 
 8 64 1953514584 sde 
 8 65 1953513560 sde1 

Maintenant, la comparaison brute de la table de partition donne une sortie identique et les partitions semblent avoir la même taille, mais je reçois toujours la même erreur lorsque j'essaie d'ajouter /dev/sdc1 au tableau.

Je suppose que ma question est la suivante: existe-t-il un moyen de résoudre ce problème sans avoir à démonter tout le tableau et à le recréer à partir de zéro?

En sortie de mdadm -D /dev/md_d0 le tableau est toujours en cours de reconstruction depuis que j'ai ajouté à nouveau/dev/sdc.

/dev/md_d0: 
 Version: 0.90 
 Heure de création: sam 14 août 21:06:13 2010 
 niveau du raid: raid5 
 Array Taille: 3907028992 (3726.03 GiB 4000,80 Go) 
 Taille du développeur utilisé: 1953514496 (1863.02 GiB 2000.40 Go) 
 Périphériques RAID: 3 
 Périphériques totaux: 3 
 Préféré: 0 
 Persistance: Le superbloc est persistant 
 
 Heure de mise à jour: Ven 11 jan 18:36:06 2013 
 État: clean , dégradé, en cours de récupération 
 Périphériques actifs: 2 
 Périphériques de travail: 3 
 Périphériques en échec: 0 
 Périphériques en réserve: 1 
 
 Présentation: symétrique à gauche 
 Taille de bloc: 64K 
 
 Reconstruction État: terminé à 53% 
 
 UUID: 74998045: 22316376: 01f9e43d: ac30fbff ( local vers le serveur hôte) 
 Événements: 0,19988 
 
 Numéro Major Mineure RaidDevice Etat 
 3 8 32 0 spare de reconstruction /dev/sdc[.___ _.] 1 8 64 1 active sync /dev/sde
 2 8 48 2 active sync /dev/sdd

Je réalise maintenant qu'il semble que tout le tableau est constitué des périphériques réels plutôt que des partisions. La question qui se pose est donc de savoir pourquoi les partitios sdd1 et sde1 sont laissés sur les disques durs et écrits sur/dev/sdc dès que je les ajoute. au tableau.

2
jeeloo

Ok, ce qui se passe, c'est que vous avez initialement construit la matrice avec tous les disques, sans aucune partition. Il semble que vous ayez ajouté plus tard une table de partition, ce qui corrompt le tableau. Vous ne pouvez pas ajouter la partition maintenant, car elle est trop petite car mdadm attend l’ensemble du disque.

Les erreurs que vous voyez de grub sont dues au fait qu'avec le format de métadonnées 0.9, il ne peut pas dire si les métadonnées de raid sont supposées s’appliquer à tout le disque ou à la partition. Vous devez reconstruire la matrice en utilisant le format de métadonnées le plus récent et, de préférence, partitionner les disques individuels en premier cette fois.

0
psusi

Vous devez désactiver HPA sur votre disque.

vérifier si HPA activé

$ hdparm -N /dev/sdc

   /dev/sdc:

    max sectors   = 586070255/586072368, HPA is enabled

puis désactivez HPA

$ hdparm -N p586072368 /dev/sdc

'p' est nécessaire pour la persistance après le redémarrage. Alors vous devez redémarrer votre ordinateur et ajouter un disque à RAID

1
aleksandr