假设我的程序尝试读取ZFS文件系统上文件中的字节。 ZFS可以找到必要块的副本,但是无法找到带有有效校验和的副本(它们都已损坏,或者仅存在的磁盘已损坏了副本)。就读取的返回值和它尝试读取的字节而言,我的程序看到什么?是否有办法(在Solaris或任何其他ZFS实现操作系统下)影响行为,即用可能损坏的数据强制失败或强制成功?

最佳答案

对于当前的ZFS实现,EIO确实是唯一的答案。

一个打开的ZFS“错误”要求某种方式来读取损坏的数据:
http://bugs.opensolaris.org/bugdatabase/printableBug.do?bug_id=6186106

我相信使用未记录但开放源代码的zdb实用程序已经可以做到这一点。
查看http://www.cuddletech.com/blog/pivot/entry.php?id=980,以获取有关如何使用zdb -R选项和“r”标志转储文件内容的说明。

08-05 02:04