Ce matin en arrivant au boulot, j’ai trouvé une de nos veilles machines, qui servait de serveur DNS et MX pour nos domaines, plantées. Les erreurs affichées sur la console semblaient être liées au disk. Ne pouvant plus se logguer, je la reboote brutalement. Elle redémarre sans problème, mais affiche des messages d’erreurs sur la console (ide: failed opcode was: unknown, end_request: I/O error, dev hda, sector 36684151, Buffer I/O error on device hda12, logical block 691607, hda: dma_intr: status=0×51 { DriveReady SeekComplete Error }, hda: dma_intr: error=0×40 { UncorrectableError }, LBAsect=36684154, sector=36684151) puis commence à ramer. Du coup, arrêt des services(postfix, amavis), démontage du file system et vérification par reiserfsck. Aucune erreur est trouvée. Je remonte le file system et relance les services.
Rebolotte. Les mêmes messages commencent à défilier. Je me décide, donc, à prendre les choses sérieusement: je lance une sauvegarde du file system par tar, après avoir arrêté postfix. Le tar dure plus de 2 heures pour une sauvegarde d’environ 1.5Go de données.
Une fois la sauvegarde terminée, je démonte le file system et le reformate en ext3 (je commence à croire que dans certaines conditions, la version 3 reiserfs par dans les choux, mais je n’arrive pas à déterminer précisément ces conditions) avec les options ‘-c -c‘, qui permettent tester le file system crée avec écriture puis une lecture, les blocs illisibles n’étant plus utilisés. Après cette opération, dont je ne sais plus la durée (de tête, environ 2 heures), un coup de tunefs pour définir les options de montages par défaut (errors=remount-ro et data=journal) et modification de /etc/fstab, le file system en question est remounté. La sauvegarde est restaurée et les services sont relancés.
Après plus d’une heure de fonctionnement, toujours aucun message d’erreur.
Cette expérience montre comment avec quelques outils de base (tunefs, mkfs.ext3, tar) utilisés correctement sur un OS stable (GNU/Linux Debian), on peut continuer à tirer parti d’un matériel éventulement défectueux.