清除健康池中的永久 ZFS 错误

Kev*_*ood 27 zfs zfsonlinux

我今天擦洗了我的游泳池,擦洗完成后,我注意到有一个错误损坏了文件。我不在乎这个文件,所以我删除了它。不幸的是,错误仍然存​​在(现在由十六进制 ID 而不是文件名引用),我不知道如何清除它。

  • 我应该担心吗?我还没有真正摆脱这个错误吗?
  • 我可以清除错误吗?如果文件不见了,我真的不想在以后看到这个错误。

作为参考,这里是我发出的命令和输出,带有注释:

检查状态

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
Run Code Online (Sandbox Code Playgroud)

切换到 root 并删除文件 - 我不需要它

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
Run Code Online (Sandbox Code Playgroud)

再次检查状态

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>
Run Code Online (Sandbox Code Playgroud)

哦哦。也许我可以清除错误?

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>
Run Code Online (Sandbox Code Playgroud)

这看起来不太好!

qua*_*cky 21

再次擦洗您的游泳池(如果您还没有):

zpool 擦洗 zstorage

该错误告诉您 inode <0x9f115> 已损坏(删除文件破坏了 filename->inode 映射,因此它现在只报告 inode)。文件仍然打开,或者元数据只需要清理(擦洗应该这样做)。

如果不需要擦洗,要清除错误,您需要使用 zdb 进行清理和弄脏,这在 oracle 中没有公开记录(并且在其他地方记录不佳)-无论如何可能表明存在更根本的错误。


4oo*_*oo4 12

我知道我参加派对已经很晚了,但我只想补充一点,如果额外的磨砂不能解决这样的问题zdb,与其看着你,不如直接开始磨砂,让它运行几分钟,然后然后用 停止它zpool scrub -s zstorage。当所有读/写/校验和错误为零时,这对我清除文件的永久错误有用。

http://unixetc.co.uk/2012/01/22/zfs-corruption-persists-in-unlinked-files/

编辑:在不得不这样做几次之后,我也意识到让擦洗运行多长时间的时间会影响它是否有效(取决于它首先查看哪些块)。因此,如果一开始不起作用,请多尝试几次并调整停止的时间。

  • 那是为我做的。我已经进行了全面清理,但错误并未清除,但随后我进行了 start-&gt;stop 操作,结果很干净。谢谢。 (4认同)