Plusieurs permanent errors
ont été signalés sur mon zpool aujourd'hui.
pool: seagate3tb
state: ONLINE
status: One or more devices has experienced an error resulting in data
corruption. Applications may be affected.
action: Restore the file in question if possible. Otherwise restore the
entire pool from backup.
see: http://zfsonlinux.org/msg/ZFS-8000-8A
scan: none requested
config:
NAME STATE READ WRITE CKSUM
seagate3tb ONLINE 0 0 28
sda ONLINE 0 0 56
errors: Permanent errors have been detected in the following files:
/mnt/seagate3tb/Install.iso
/mnt/seagate3tb/some-other-file1.txt
/mnt/seagate3tb/some-other-file2.txt
Edit: je suis sûr que ces CKSUM
valeurs sont exactes. J'étais en train de biffer des données et je les ai peut-être faussées par erreur. Ils peuvent avoir été 0. Malheureusement, je ne trouve pas de réponse concluante dans mes notes et les erreurs sont résolues maintenant, donc je ne suis pas sûr, mais tout le reste est précis / reflète ce que zpool rapportait.
/mnt/seagate3tb/Install.iso
est un exemple de fichier signalé comme ayant une erreur permanente.
Voici où je me sens confus. Si je compare mon "erreur permanente" Install.iso
avec une sauvegarde de ce même fichier exact sur un autre système de fichiers, ils semblent identiques.
shasum "/mnt/seagate3tb/Install.iso"
1ade72fe65902b2a978e5504aaebf9a3a08bc328 /mnt/seagate3tb/Install.iso
shasum "/mnt/backup/Install.iso"
1ade72fe65902b2a978e5504aaebf9a3a08bc328 /mnt/backup/Install.iso
cmp /mnt/seagate3tb/Install.iso /mnt/backup/Install.iso
diff /mnt/seagate3tb/Install.iso /mnt/backup/Install.iso
Les fichiers semblent identiques. De plus, le fichier fonctionne parfaitement bien. Si je l'utilise dans une application, il se comporte comme je m'y attendais.
Comme le disent les documents :
Les erreurs de corruption de données sont toujours fatales.
Mais sur la base de mes vérifications rudimentaires de fichiers, je ne suis pas sûr de comprendre la définition de fatal
.
état: un ou plusieurs appareils ont rencontré une erreur entraînant une corruption des données. Les applications peuvent être affectées.
action: restaurez le fichier en question si possible. Sinon, restaurez l'intégralité du pool à partir de la sauvegarde.
Peut-être que je manque quelque chose, mais le fichier semble parfaitement bien pour autant que je sache, et n'a besoin d'aucune restauration ni ne montre aucune corruption, malgré les recommandations de ZFS.
J'ai vu d' autres articles avec la même erreur , mais je n'ai pas encore trouvé de réponse à ma question.
Quelle est l'erreur permanente avec le fichier? Y a-t-il un problème de niveau inférieur avec le fichier qui n'est tout simplement pas évident pour moi? Dans l'affirmative, pourquoi cela ne serait-il pas détecté par shasum
une différence dans le fichier?
Du point de vue d'un profane, je ne vois rien pour indiquer une erreur avec ce fichier.
Réponses:
Le libellé de
zpool status
est un peu trompeur. Une erreur permanente (dans ce contexte) indique qu'une erreur d'E / S s'est produite et a été enregistrée dans le journal des erreurs SPA (Storage Pool Allocator) pour ce pool. Cela ne signifie pas nécessairement qu'il existe une corruption irrémédiable des données.Ce que vous devez faire, c'est exécuter un
zpool scrub
sur la piscine. Une fois le nettoyage terminé, le journal d'erreurs du SPA pivote et n'affiche plus les erreurs antérieures au nettoyage. Si le gommage ne détecte aucune erreur, ilzpool status
n'affichera plus aucune erreur "permanente".En ce qui concerne la documentation, cela signifie que seules les "erreurs fatales" sont enregistrées de cette manière. Une erreur fatale est une erreur d'E / S qui n'a pas pu être corrigée automatiquement par ZFS et a donc été exposée à une application en tant qu'E / S défaillante. En revanche, si les E / S étaient immédiatement réessayées avec succès ou si les E / S logiques étaient satisfaites à partir d'un périphérique redondant, cela ne serait pas considéré comme une erreur fatale et ne serait donc pas enregistré comme une erreur de corruption de données.
Une erreur fatale ne signifie pas nécessairement une perte de données permanente, cela signifie simplement qu'au moment où elle ne pouvait pas être corrigée avant de se propager jusqu'à l'application. Par exemple, un câble lâche ou un mauvais contrôleur peut provoquer des erreurs fatales temporaires que ZFS qualifierait de «permanentes». La question de savoir s'il s'agit réellement d'un problème dépend de la nature des E / S et de la capacité de l'application à se remettre des erreurs d'E / S.
EDIT: entièrement d'accord avec @bahamat que vous devez investir dans la redondance dès que possible.
la source
zpool scrub
fait exactement ce que vous avez suggéré @ tom-shaw, et votre explication est parfaitement logique. Je ne vois plus aucune "erreur permanente" sur ce tableau après le gommage. Je n'ai pas pensé aux erreurs fatales dans le contexte d'une lecture ratée. Je pense que cela doit être juste une erreur d'E / S temporaire sur une lecture comme vous le suggérez. Je suis également totalement d'accord sur la nécessité de la redondance.Une erreur permanente signifie qu'il y a eu une erreur de somme de contrôle dans le fichier et qu'il n'y avait pas suffisamment de réplicas pour réparer. Cela signifie qu'au moins une lecture a renvoyé des données corrompues en raison d'une erreur d'E / S. Si quelque chose a reçu la lecture, puis l'a écrit dans le même fichier disque, vous aurez maintenant une corruption de données irrécupérable.
En regardant la configuration de votre pool, il semble que vous n'ayez aucune redondance. C'est très dangereux. Vous ne recevez pas des avantages d'auto-guérison de ZFS, mais il sera en mesure de vous dire quand il y a eu la corruption de données. Normalement, ZFS corrige automatiquement et silencieusement les lectures corrompues, mais dans votre cas, il ne le peut pas. Il semble également que vous ayez déjà exécuté,
zpool clear
car leCKSUM
nombre est0
pour les deux disques.Malheureusement, sans répliques, il n'y a vraiment aucun moyen de le savoir.
la source
zpool clear
également le message d'erreur lui-même, pas seulement le nombre d'erreurs? Il est étrange que le message persiste, mais aucune erreur ne s'affiche.CKSUM counts
qu'il peut s'agir du contrôleur, du câble ou de tout matériel partagé entre les deux disques. Il est également possible que les deux disques échouent. En tout état de cause, cela souligne la nécessité d'ajouter une redondance dès que possible et d'inspecter les fichiers indiqués pour détecter la corruption.