J'ai nettoyé ma piscine aujourd'hui, et une fois le nettoyage terminé, j'ai remarqué qu'une erreur avait corrompu un fichier. Je ne me souciais pas du fichier, alors je l'ai supprimé. Malheureusement, l'erreur persiste (désormais référencée par un ID hexadécimal et non par un nom de fichier), et je ne sais pas comment l'effacer.
Pour référence, voici les commandes que j'ai émises et la sortie, avec des annotations:
Vérification de l'état
kevin@atlas:~$ Sudo zpool status -v
pool: zstorage
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: zfsonlinux.org/msg/ZFS-8000-8A
scan: scrub repaired 1.81M in 7h19m with 1 errors on Wed Feb 19 10:04:44 2014
config:
NAME STATE READ WRITE CKSUM
zstorage ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
ata-WDC_WD30EZRX-00DC0B0_WD-WCC1T1735698 ONLINE 0 0 0
ata-WDC_WD30EZRX-00DC0B0_WD-WMC1T0506289 ONLINE 0 0 0
ata-WDC_WD30EZRX-00MMMB0_WD-WCAWZ2711600 ONLINE 0 0 0
errors: Permanent errors have been detected in the following files:
/zstorage/owncloud/kevin/files/Archives/Music/Kev Rev 7/graveyard/Old/Four Tet/Pause/03 Harmony One.mp3
Passer à root et supprimer le fichier - je n'en ai pas besoin
kevin@atlas:~$ Sudo -i
root@atlas:~# cd /zstorage/owncloud/kevin/files/Archives/Music/Kev\ Rev\ 7/graveyard/Old/Four\ Tet/Pause/
root@atlas:/zstorage/owncloud/kevin/files/Archives/Music/Kev Rev 7/graveyard/Old/Four Tet/Pause# rm 03\ Harmony\ One.mp3
Vérification de l'état à nouvea
root@atlas:/zstorage/owncloud/kevin/files/Archives/Music/Kev Rev 7/graveyard/Old/Four Tet/Pause# zpool status -v
pool: zstorage
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: zfsonlinux.org/msg/ZFS-8000-8A
scan: scrub repaired 1.81M in 7h19m with 1 errors on Wed Feb 19 10:04:44 2014
config:
NAME STATE READ WRITE CKSUM
zstorage ONLINE 0 0 1
raidz1-0 ONLINE 0 0 2
ata-WDC_WD30EZRX-00DC0B0_WD-WCC1T1735698 ONLINE 0 0 0
ata-WDC_WD30EZRX-00DC0B0_WD-WMC1T0506289 ONLINE 0 0 0
ata-WDC_WD30EZRX-00MMMB0_WD-WCAWZ2711600 ONLINE 0 0 0
errors: Permanent errors have been detected in the following files:
zstorage:<0x9f115>
h oh. Peut-être que je peux effacer l'erreur?
root@atlas:/zstorage/owncloud/kevin/files/Archives/Music/Kev Rev 7/graveyard/Old/Four Tet/Pause# zpool clear zstorage
root@atlas:/zstorage/owncloud/kevin/files/Archives/Music/Kev Rev 7/graveyard/Old/Four Tet/Pause# zpool status -v
pool: zstorage
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: zfsonlinux.org/msg/ZFS-8000-8A
scan: scrub repaired 1.81M in 7h19m with 1 errors on Wed Feb 19 10:04:44 2014
config:
NAME STATE READ WRITE CKSUM
zstorage ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
ata-WDC_WD30EZRX-00DC0B0_WD-WCC1T1735698 ONLINE 0 0 0
ata-WDC_WD30EZRX-00DC0B0_WD-WMC1T0506289 ONLINE 0 0 0
ata-WDC_WD30EZRX-00MMMB0_WD-WCAWZ2711600 ONLINE 0 0 0
errors: Permanent errors have been detected in the following files:
zstorage:<0x9f115>
Cela n'a pas l'air bien!
Frottez à nouveau votre piscine (si vous ne l'avez pas déjà fait):
zpool scrub zstorage
Cette erreur vous indique que l'inode <0x9f115> est corrompu (la suppression du fichier a brisé le mappage du nom de fichier-> inode, donc il ne fait que signaler l'inode maintenant). Soit quelque chose a toujours le fichier ouvert, soit les métadonnées doivent juste être nettoyées (ce qu'un scrub devrait faire).
Pour effacer l'erreur si un scrub n'est pas nécessaire, vous devez vous familiariser avec zdb, qui n'est pas publiquement documenté par Oracle (et mal documenté ailleurs) - et en tout cas indique probablement quelque chose de plus fondamentalement erroné.
Je sais que je suis super en retard à la fête, mais je voulais juste ajouter que si les gommages supplémentaires ne résolvent pas des problèmes comme celui-ci, au lieu de regarder zdb
, vous pouvez simplement démarrer un gommage, laissez-le s'exécuter pendant quelques minutes, puis arrêtez-le avec zpool scrub -s zstorage
. Cela m'a aidé à effacer les erreurs permanentes pour les fichiers lorsque toutes les erreurs de lecture/écriture/somme de contrôle étaient à zéro.
http://unixetc.co.uk/2012/01/22/zfs-corruption-persists-in-unlinked-files/
EDIT: Après avoir fait cela plusieurs fois, je me suis également rendu compte que le temps pendant lequel vous laissez le scrub fonctionner affectera son fonctionnement (selon quels blocs il fait regarde en premier). Donc, si cela ne fonctionne pas au début, essayez à plusieurs reprises et ajustez le moment où vous l'arrêtez.