Bonjour,
j'ai un problème sur un serveur.
La partition /home est en raid 1.
Les deux partitions qui composent le raid sont /dev/sda3 et /dev/sdb3.
Le raid est actuellement dégradé et ne peux pas se reconstruire en raison de secteurs défectueux sur /dev/sdb3.
La partition /home ne se monte pas si je retire le disque /dev/sdb3 et je ne peux pas déclarer la partition /dev/sdb3 comme "fail" du fait que le raid est en cours de vérification.
La reconstruction échoue a 28% et répare ensuite à zero.
Il n'est pas trop possible de démonter la partition pour faire un fsck avec une recherche de badblocks.
Je pensais faire une recherche de bad block "a chaud" avec
badblock -o /root/BADBLOCK_sdb3 -v -s /dev/sdb3
puis démonter la partition et marqué les badblocks a partir ce fichier en disant que le temps d'interruption sera plus court.
Est-ce que d'après vous c'est possible ?
La partition etant en raid, faut-il faire le badblock sur /dev/md1 puis marquer les blocks sur /dev/md1 ?
Comment va se comporter le raid si un de disque à des blocks marqué et l'autre non ?
Le but est que le système puisse repartir au plus vite avec un disque. Ensuite je reconstruirai le raid en ajoutant un disque vierge. Les eventuelles fichiers manquants pourront être restauré depuis une sauvegarde.
Je peux vous apporter plus de précision si nécessaire.
Merci pour vos lumières car la je suis tout perdu (et en panique).
# Fail ne fonctionne pas ?
Posté par Kerro . Évalué à 2.
Cette commande devrait fonctionner:
mdadm --manage /dev/mdx --fail /dev/sdb3
mais cela retourne une erreur ?
En retirant le disque problématique, si /home ne se monte pas c'est qu'il y a autre chose. Ou alors des options inhabituelles ont été utilisées (par exemple --no-degraded).
Sinon il faut utiliser la méthode musclée. Un truc du genre:
mdadm --zero-superblock /dev/sdb3
Eventuellement redémarrer pour stopper la reconstruction.
[^] # Re: Fail ne fonctionne pas ?
Posté par mymybib . Évalué à 1.
mdadm --manage /dev/md1 --fail /dev/sdb3
mdadm: set /dev/sdb3 faulty in /dev/md1
mdadm --misc -D /dev/md1
/dev/md1:
Version : 00.90.03
Creation Time : Fri Jun 6 12:41:28 2008
Raid Level : raid1
Array Size : 717422656 (684.19 GiB 734.64 GB)
Used Dev Size : 717422656 (684.19 GiB 734.64 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 1
Persistence : Superblock is persistent
Update Time : Mon Dec 21 13:56:33 2009
State : clean, degraded, recovering
Active Devices : 1
Working Devices : 2
Failed Devices : 0
Spare Devices : 1
Rebuild Status : 0% complete
UUID : 381e34ff:d21b7724:257ae011:7dec2a98
Events : 0.87680
Number Major Minor RaidDevice State
2 8 3 0 spare rebuilding /dev/sda3
1 8 19 1 active sync /dev/sdb3
Et lorsque que je reboot sans le disque /dev/sdb, le demarrage echoue sur un super bloc manquant sur /dev/sda3.
le zero-superbloc sur /dev/sdb3 ne va pas peter à la tete ?
je vais retrouver mon raid dans quel etat ?
[^] # Re: Fail ne fonctionne pas ?
Posté par Christophe --- . Évalué à 1.
Cela fait un moment que je n'ai pas pratiqué (mon raid tourne trop bien?), mais voici mes hypothèses:
- le déclarer en fail ne retire pas le disque du raid, tu ne peux donc pas le retirer de la machine. Cela sert à lui dire de ne plus reconstruire sur ce disque, et si tu a des spares (des disques déclarés de secours) à en utiliser un à la place.
- ce que tu veux, c'est le retirer du raid:
mdadm --manage /dev/mdX --remove
à partir de ce moment, tu peux le débrancher, remplacer par le nouveau disque, et lorsque celui-ci est partitionné et prêt, l'ajouter dans le raid avec mdadm ... --add.
[^] # Re: Fail ne fonctionne pas ?
Posté par Kerro . Évalué à 2.
La réponse est dans cette phrase.
Regardes la page de manuel de mdadm pour créer le superblock. Tu as dû créer ton RAID à l'arrache :-)
[^] # Re: Fail ne fonctionne pas ?
Posté par maxix . Évalué à 2.
# Quelques remarques sur le badblock
Posté par Christophe --- . Évalué à 2.
Voici quelques remarques par rapport à ta tentative d'utilisation de badblock dans ton cas, et pourquoi ce n'est pas la peine de tenter de creuser plus cette voie:
- cette commande lis la partition entière à la recherche de secteurs retournant une erreur. ok, mais... cette liste est juste affichée à l'écran (ou renvoyée dans un fichier) mais le disque dur n'est pas "mis au courant", l'OS non plus, le système de fichier non plus
- là, ça se corse: il n'y a pas de standard pour gérer la liste des secteurs défectueux. donc on ne peut pas enregistrer cette liste dans la partition
- c'est donc logiquement le système de fichier (e2fs, e3fs, xfs...) qui prend cela en compte (mke2fs: options -c, -l, ou mise à jour à la volée par fsck ou par le pilote?)
Pourquoi je dis tout cela? Parce que dans le cas de ton raid, cela veut dire:
- ça ne sert donc à rien de faire le check sur /dev/sdb3, car il n'y a pas de système de fichier dessus capable de le gérer;
- si tu utilise cette liste sur le fs qui est sur /dev/md1, tu vas en même temps désactiver ces secteurs sur l'autre disque, ce que tu ne veux probablement pas. De plus, il y a fort à parier que les numéro des secteurs de sdb3 ne correspondent pas à md1, donc... pire!
- si tu utilise badblocks sur /dev/md1, tu n'aura évidemment rien, car le raid vas toujours retourner le secteur sur le disque qu'il à réussi à lire... Au mieux, cela aura permis au md de se rendre compte que tu as un disque défectueux, mais ça, tu le sait déjà :-(
Voila, j'espère t'avoir éclairé un peu,
Christophe.
[^] # Merci a tous
Posté par mymybib . Évalué à 2.
Merci pour vos pistes. Grâce à vous j'ai pu trouver une solution.
Maintenant je vais devoir construire des statues à votre gloire. :)
mymybib qui à un serveur qui marche et qui va passer une bonne nuit.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.