清除运行状况良好的池中的永久ZFS错误


20

我今天擦洗了泳池,擦洗完成后,我发现有一个错误损坏了文件。我不在乎该文件,因此删除了它。不幸的是,错误仍然存​​在(现在由十六进制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

切换到根目录并删除文件-我不需要

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

再次检查状态

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>

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

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>

看起来不太好!


文件是快照的一部分(zfs list -t all),因此保留在快照中吗?
lundman

Answers:


14

再次清理您的游泳池(如果尚未清理):

zpool清理zstorage

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

要清除错误(如果无法进行清理),则需要使用zdb来解决问题,而zdb尚未由oracle公开记录(并且在其他地方记录很少)-不管怎么说,这可能表明更根本的错误。


7

我知道我参加晚会太晚了,但是我想补充一下,如果额外的擦洗不能解决这样的问题,zdb那么您可以直接进行一次擦洗,而不是看着您就可以开始擦洗,让它运行几分钟,然后然后使用停止它zpool scrub -s zstorage。当所有读/写/校验和错误均为零时,这将为我清除文件的永久错误。

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

编辑:不得不这样做几次后,我还意识到让磨砂运行多长时间的时间会影响它是否工作(取决于它首先看起来是什么块)。因此,如果一开始不起作用,请尝试几次并调整停止它的时间。


对我来说,这是行不通的-永久性错误仍然存​​在,如果我进行彻底的清理,我会再次看到它们。
威廉·斯坦

3
对我来说就做到了。我已经进行了彻底的清理,并且没有清除错误,但是后来我执行了start-> stop,它很干净。谢谢。
斯图

现在它似乎确实对我有用(我现在在Linux上使用最新版本的ZFS)。
威廉·斯坦
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.