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.
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.
Vous devez désactiver HPA sur votre disque.
$ hdparm -N /dev/sdc
/dev/sdc:
max sectors = 586070255/586072368, HPA is enabled
$ 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