我今天擦洗了我的游泳池,擦洗完成后,我注意到有一个错误损坏了文件。我不在乎这个文件,所以我删除了它。不幸的是,错误仍然存在(现在由十六进制 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/
编辑:在不得不这样做几次之后,我也意识到让擦洗运行多长时间的时间会影响它是否有效(取决于它首先查看哪些块)。因此,如果一开始不起作用,请多尝试几次并调整停止的时间。
| 归档时间: |
|
| 查看次数: |
34001 次 |
| 最近记录: |