X

ZFS

ZFS

RAID-Z

RAID(廉价磁盘冗余阵列)最初的承诺是它将使用廉价磁盘提供快速、可靠的存储。重点在于廉价,但不知为何我们最终却得到这种结果。为什么呢?RAID-5(以及其他数据/奇偶校验方案,比如 RAID-4、RAID-6、奇偶和行对角奇偶校验)从未完全履行过 RAID 的承诺,并且也无法履行,这是因为存在一种称为...

RAID(廉价磁盘冗余阵列)最初的承诺是它将使用廉价磁盘提供快速、可靠的存储。重点在于廉价,但不知为何我们最终却得到这种结果。为什么呢?RAID-5(以及其他数据/奇偶校验方案,比如 RAID-4、RAID-6、奇偶和行对角奇偶校验)从未完全履行过 RAID 的承诺,并且也无法履行,这是因为存在一种称为 RAID-5 写漏洞的致命缺陷。不管何时更新 RAID 存储条,还必须更新校验,以便所有磁盘异或为 0,正是这个等式使您能在磁盘故障时重构数据。问题在于无法以原子方式更新两个或多个磁盘,所以 RAID 存储条可能在崩溃或电源断电时被损坏。为了认清这个问题,假设您在写入数据块之后、但在写入相应校验块之前断电。现在,此存储条的数据和奇偶校验就不一致,而且它们将永远保持不一致(除非在某个时候使用一个全存储条写操作覆盖了旧数据)。因此,如果磁盘故障,RAID 重构过程将在您下一次读取此存储条上的任何块时生成垃圾。更糟的是,它这样做使没有任何提示,它根...

ZFS

泛滥的分层违规?

众所周知,Andrew Morton 将 ZFS 称为“泛滥的分层违规(rampant layering violation)”,因为它组合了文件系统、卷管理器和 RAID 控制器的功能。我假设它的表意重点在于词违规。在设计 ZFS 时,我们观察到,存储堆栈的标...

众所周知,Andrew Morton 将 ZFS 称为“泛滥的分层违规(rampant layering violation)”,因为它组合了文件系统、卷管理器和 RAID 控制器的功能。我假设它的表意重点在于词违规。在设计 ZFS 时,我们观察到,存储堆栈的标准分层引入了大量不必要的复杂性和重复逻辑。我们发现对这个问题进行一些重构,也就说,更改层之间的边界,我们可以让整个事情变得非常简单。我们首先使用数学(我的实际专业)中的一个例子作为开场白。假设您必须计算 1/n(n+1) 的和(其中 n=1 到无穷大)。逐项展开,我们得到:        1/(1\*2) + 1/(2\*3) + 1/(3\*4) + 1/(4\*5) + ...也就是        1/2 + 1/6 + 1/12 + 1/20 + ...这个无穷序列总和是多少呢?看起来好像是很困难的问题,但这只是因为我们没有找到正确的方法。如果您比较聪明,可能会注意到可以用另一种方式表示每项:        1/n(n+1) = 1/n - 1/(n+1)例如,       ...