上接20楼
X-Code从理论上看,的确是个负载均衡、计算简单(只有XOR,没有类似GF一样的变换)、磁盘对称度很高的算法。但是实际应用还是有问题。
20楼的例子是5颗磁盘的X-Code编码方式,例子中的5个条带是一个整体,一起处理。如果写入的数据不多,没有写满前3个条带,就需要在写入的同时,把未更新的数据读出来,凑齐3x5个数据,再一起计算校验码。
如果是6颗磁盘,那就要6个条带作为一个整体。
7颗磁盘一个RAID组,就需要7个条带一个整体。
8颗磁盘一个RAID组,就需要8个条带一个整体。
9颗磁盘一个RAID组,就需要9个条带一个整体。
10颗磁盘一个RAID组,就需要10个条带一个整体……
(打住!在这发帖子又没稿费,不用拼命凑字!)
总之这个算法的“重复单元”有点大。在实际应用中,这么大的“重复单元”使X-Code的应用面临两个问题:计算量大和空间浪费。(可能还有其他问题,比如名字太难听,总让人联想到黄色的东东。)
ZZS也叫俄罗斯编码,bingo!猜对了,真聪明。这就是三个俄罗斯人在1983年提出的一种编码方式,ZZS就是三个人名字首字母缩写,跟S.H.E.演唱组的命名规则一样。
与X-Code相比,ZZS的“重复单元”就小很多——7颗磁盘的时候,3个条带是一个整体。
人家ZZS论文里给出的是数学公式:n颗磁盘的时候,(n-1)/2个条带是一个整体。
从这个公式你应该能发现ZZS编码的一个要求……(我知道,只支持单数颗磁盘。)
嘿嘿!你错了!实际上,ZZS算法只支持磁盘的个数为素数:……5、7、11、13、17……
不过人家ZZS组合(暂时就这么称呼吧)也指出,ZZS算法允许其中一颗磁盘上面全写0。这样就可以在应用中支持4、6、10、12、16……(素数-1)颗盘了。
什么?还没明白?在计算的时候,内存里虚拟一个全0的影子盘不就行啦!
[ 本帖最后由 pekics 于 2006-7-26 17:36 编辑 ]
附件
-
ZZS.JPG
(20.77 KB)
-
2006-7-26 17:35