permanent errors
今天在我的 zpool 上报告了几个。
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
Run Code Online (Sandbox Code Playgroud)
编辑:我确定这些CKSUM
值是否准确。我正在编辑数据,并且可能错误地破坏了这些数据。它们可能是 0。不幸的是,我在我的笔记中找不到决定性的答案,现在错误已经解决,所以我不确定,但其他一切都是准确的/反映了 zpool 报告的内容。
/mnt/seagate3tb/Install.iso
是一个报告为具有永久性错误的示例文件。
这就是我感到困惑的地方。如果我将我的“永久错误”Install.iso
与另一个文件系统上完全相同的文件的备份进行比较,它们看起来相同。
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
Run Code Online (Sandbox Code Playgroud)
这些文件似乎是相同的。更重要的是,该文件运行良好。如果我在应用程序中使用它,它的行为就像我期望的那样。
正如文档所述:
数据损坏错误总是致命的。
但是根据我的基本文件验证,我不确定我是否理解fatal
.
状态:一台或多台设备出现错误,导致数据损坏。应用程序可能会受到影响。
行动:如果可能,恢复有问题的文件。否则从备份还原整个池。
也许我遗漏了一些东西,但据我所知,该文件似乎非常好,并且确实需要任何恢复,也没有显示任何损坏,尽管来自 ZFS 的推荐。
文件的永久错误是什么?该文件是否存在一些对我来说不太明显的较低级别的问题?如果是这样,为什么shasum
文件中的差异不会被 a 检测到?
从外行的角度来看,我看不出任何迹象表明此文件有任何错误。
Tom*_*haw 22
的措辞zpool status
有点误导。永久性错误(在此上下文中)表示发生了 I/O 错误并已记录到该池的 SPA(存储池分配器)错误日志中。但这并不一定意味着有不可恢复的数据损坏。
你应该做的是zpool scrub
在池上运行一个。清理完成后,SPA 错误日志将轮换,不再显示清理之前的错误。如果清理没有检测到错误,zpool status
则将不再显示任何“永久性”错误。
关于文档,据说只有“致命错误”以这种方式记录。致命错误是无法由 ZFS 自动更正的 I/O 错误,因此作为失败的 I/O 暴露给应用程序。相比之下,如果 I/O 立即成功重试,或者如果逻辑 I/O 由冗余设备满足,则不会将其视为致命错误,因此不会记录为数据损坏错误。
致命错误并不一定意味着永久性数据丢失,它只是意味着在它传播到应用程序之前无法修复它。例如,松动的电缆或损坏的控制器可能会导致暂时的致命错误,ZFS 将其描述为“永久性”。它是否真的是一个问题取决于 I/O 的性质以及应用程序是否能够从 I/O 错误中恢复。
编辑:完全同意@bahamat 你应该尽快投资冗余。
永久性错误意味着文件中存在校验和错误,并且没有足够的副本可供修复。这意味着由于 I/O 错误,至少有一次读取返回了损坏的数据。如果收到读取的任何内容,然后将其写回同一个磁盘文件,您现在将拥有不可恢复的数据损坏。
查看您的池配置,您似乎没有冗余。这是非常危险的。你没有得到任何的ZFS的自我修复的好处,但将能够告诉你什么时候出现了数据损坏。通常,ZFS 会自动且静默地纠正损坏的读取,但在您的情况下则不能。看起来您已经运行了,zpool clear
因为CKSUM
计数适用0
于两个驱动器。
不幸的是,没有复制品,真的没有办法知道。
归档时间: |
|
查看次数: |
4517 次 |
最近记录: |