1 votes

Comment enquêter sur des événements de perte de données fréquents mais dissemblables ?

J'ai un domU Xen fourni par un tiers, fonctionnant sous Ubuntu (10.04, édition serveur, noyau stock -server). Ce serveur exécute Dovecot et Exim4, avec le courrier stocké dans Maildirs, et exécute une pile LAMP assez typique avec la plupart des applications en Perl, et toutes les données stockées soit dans une arborescence de répertoires pleine de fichiers TIFF, soit dans une DB MySQL. Ce serveur fonctionne depuis environ 3 mois pour les applications LAMP, et un mois pour le courrier. Tous les systèmes de fichiers (sauf le swap) sont des Ext3.

Il y a quelques semaines, nous avons soudainement trouvé tout un tas de fichiers TIFF qui n'étaient plus accessibles, comme l'avait noté notre script de sauvegarde (en utilisant rsync). rsync sur l'hôte distant a signalé les erreurs suivantes :

rsync: readlink_stat("/srv/data/documents/archive/pdf/2007/Aug/06/085717/00000002.TIF") failed: Input/output error (5)
rsync: readlink_stat("/srv/data/documents/archive/pdf/2007/Aug/06/085717/00000001.TIF") failed: Input/output error (5)
rsync: readlink_stat("/srv/data/documents/archive/pdf/2011/Jan/04/125227/XSMDESC.DAT") failed: Input/output error (5)
rsync: readlink_stat("/srv/data/documents/archive/pdf/2011/Jan/04/125227/DOC010.XST") failed: Input/output error (5)
rsync: readlink_stat("/srv/data/documents/archive/pdf/2011/Jan/04/125227/00000001.TIF") failed: Input/output error (5)

...et ainsi de suite. Les fichiers auront été créés soit fin décembre, soit à la date indiquée dans le chemin d'accès, selon la dernière éventualité, car nous avons migré nos données sur cette machine à la fin de l'année dernière. À ma connaissance, aucun processus n'aura écrit dans les fichiers puisque -- seulement lu à partir de ceux-ci.

Tout au long de la journée, nous avons constaté que la liste des fichiers affectés augmentait. Cette nuit-là, nous avons démonté ce système de fichiers (un dispositif de bloc virtuel Xen) et exécuté une commande fsck qui a trouvé et corrigé de très nombreuses erreurs. Les fichiers affectés avaient maintenant disparu. Cependant, la corruption a cessé de se propager une fois le fsck terminé et le système de fichiers remonté.

(Soit dit en passant, pour illustrer le genre de chance que nous avons eu ici, le seul disque contenant notre seule sauvegarde de ces données est mort de façon catastrophique l'après-midi même. Oui, vraiment. Notre seule autre La sauvegarde date du 10 décembre 2010...)

Le fait que la grande majorité des fichiers concernés aient été créés le 4 ou le 5 janvier de cette année n'a peut-être pas d'importance, mais certains étaient des documents de 2006-2007 et d'autres étaient plus récents.

Le fsck étant terminé et la machine apparemment stable, nous étions inquiets - le fournisseur d'hébergement n'a pu trouver la cause première, et nous non plus - et nous avions perdu des données, mais au moins la corruption avait cessé.

Avancez de quelques jours, et une routine mysqldump refuse de vider 3 tables parce qu'elles sont marquées comme écrasées. mysqlcheck confirme cela, et REPAIR TABLE [foo] corrige les 3, en signalant dans 2 cas moins de lignes trouvées après l'événement qu'avant. Encore une fois, le fournisseur ne voit pas de cause profonde, il n'y a pas eu d'interruption de l'alimentation, de l'accès au disque ou de l'accès aux données. mysqld . Le problème ne semble pas lié mais -- en 3 mois d'hébergement sur ce serveur, nous avons déjà perdu plus de données qu'en plusieurs années d'utilisation de ces applications sur une variété de plateformes différentes (mais jamais virtuelles !).

Enfin, cette semaine, nous avons trouvé 3 fichiers sur le FS qui semblent s'être transformés en gunk binaire -- plus précisément, tous les 1 (ou tous les \0xFF si vous préférez). Les 3 fichiers (2 petits fichiers de configuration texte, 1 script de 100 lignes perl) faisaient partie de notre application web, et étaient fréquemment lus mais écrits uniquement lorsque nous déployions une nouvelle version, ce qui fonctionne en mettant à jour une copie de travail locale, en exportant cette copie de travail pour obtenir une nouvelle installation propre, et en pointant un lien symbolique vers cette nouvelle installation. Les fichiers ont été cassés dans la copie de travail et se sont propagés à partir de là, et les temps de modification de tous les fichiers étaient cohérents avec le fait qu'ils n'avaient pas été modifiés depuis de nombreuses semaines (au cours desquelles il y a eu plusieurs déploiements, qui se sont tous déroulés sans problème !

Pour n'importe lequel de ces événements, j'aurais restauré les sauvegardes, je me serais gratté la tête et j'aurais continué ma vie, mais trois en quinze jours me font attendre la suite des événements.

Ma question est simple : est-il possible que ces trois événements soient liés, et si c'est le cas, où dois-je chercher la cause profonde ?

(Les réponses concernant les solutions sont également les bienvenues, mais nous sommes déjà en train de mettre en place une plateforme parallèle exécutant CentOS, sur VMware, avec le même fournisseur, pour essayer d'exclure les problèmes liés à la distribution, au noyau, à l'hyperviseur et au dispositif de bloc virtuel. Ce serait formidable de savoir lequel d'entre eux est à l'origine du problème, mais si nous n'avons pas de diagnostic, et si nous remplaçons toute cette pile qui fonctionne, cela m'aidera à dormir la nuit ... éventuellement).

Comme toujours, si des informations supplémentaires peuvent vous aider, n'hésitez pas à les commenter et je les mettrai à jour !

1voto

Nils Points 7622

On dirait que le logiciel de sauvegarde du vendeur a corrompu le système de fichiers.

Nous avons eu un cas similaire où un DomU a commencé à se comporter de manière incorrecte après avoir été sauvegardé par une version non corrigée de notre client de sauvegarde standard.

Après avoir essayé de réparer le fs deux fois, il a continué à se comporter de manière incorrecte (les fichiers n'ont pas pu être lus...).

La solution consistait à réinstaller complètement les systèmes de fichiers (mkfs), à installer la dernière version corrigée du client de sauvegarde standard, puis à restaurer les dernières bonnes données.

Nous avons eu de la chance ici : La partition de données (/opt) était toujours intacte et n'a rien perdu. Les partitions corrompues ne contenaient que / et /var.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X