首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ZFS ::bitrot (校验和)

ZFS ::bitrot (校验和)
EN

Server Fault用户
提问于 2016-07-29 12:36:06
回答 2查看 1K关注 0票数 0

据我所知,zfs使用校验和来防止比特造成的数据丢失。

但是,如果一个位数影响校验和的数据会发生什么。那么,zfs是否认为数据已损坏,还是认为校验和已损坏?

任何答案,

泰波

EN

回答 2

Server Fault用户

回答已采纳

发布于 2016-07-29 12:59:40

我找到了正确的解释:

ZFS存储池实际上只是一棵块树。ZFS通过将每个块的校验和存储在其父块指针中--而不是在块本身中,从而在数据和校验和之间提供故障隔离。树中的每个块都包含其所有子块的校验和,因此整个池是自验证的。uberblock (树的根)是一个特例,因为它没有父块;更多关于我们如何在另一篇文章中处理它.当数据和校验和不一致时,ZFS知道校验和是可以信任的,因为校验和本身是树中更高级别的其他块的一部分,并且该块已经过验证。

只有一个故障点:如果树中的根节点被清理,但是应该有一个解决方案

读@ https://blogs.oracle.com/bonwick/entry/zfs_结束_至_结束_数据

票数 1
EN

Server Fault用户

发布于 2016-07-29 12:44:28

ZFS通过将每个块的校验和存储在其父块指针中--而不是在块本身中,从而在数据和校验和之间提供故障隔离。树中的每个块都包含其所有子块的校验和,因此整个池是自验证的。

端到端数据完整性

编辑:因为您询问了父母的情况:

观察1: ZFS检测由于使用校验和而导致的所有盘上损坏。在我们对所有元数据和数据进行的错误注入实验中,我们发现坏数据从未返回给用户,因为ZFS能够检测由于在块指针中使用校验和而导致的所有损坏。在ZFS中使用父母校验和来验证所访问的所有磁盘上块的完整性。唯一的例外是uberblock,它没有父块指针。通过在uberblock内部使用校验和来检测对uberblock的损坏。

文件系统端到端数据完整性: ZFS案例研究

你可以自己测试一下。在ZFS设备中间插入一个随机块,看看它是否保持完整性。

注意,在这篇论文的下一节中,他们表明在内存中没有发现腐败现象。

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/792700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档