delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

20 Feb 2009

为什么是RAID-Z[2]而不是RAID-5

注意:如果您熟悉RAID请不必浪费时间阅读这篇文章。

为什么用RAID-Z/RAID-Z2而不是RAID-5呢?

答案是:RAID-5有一个不可避免的问题,即它必须使用后备电源才能保证写入的正确性。这也是为什么我一直极力反对使用低档RAID卡和软件实现的RAID-5的原因。

简单地说,RAID-5在写入数据时会需要覆写整个stripe(通常需要读,然后计算parity,然后再写),由于条件限制,尽管写入操作可能只涉及两块磁盘,但整个stripe很可能在不同的磁盘上并不是同时、原子地写入。这样的结果是,磁盘上可能出现不一致、并且无法检测的数据。如果RAID-5的cache很大,这很可能会是多个stripe的数据。因此,想要确保数据的可靠性,就必须为RAID-5的写入缓冲配备后备电源,或保存在非掉电丢失的存储中。

RAID-Z和Z2是解决这个问题的一种方法。RAID-Z采用写时复制的方法,即,不覆写数据;另一方面,由于文件系统元数据中记录了checksum,使得数据的正确性能够被检测出来;最后,RAID-Z使用动态的stripe尺寸,这个优化使得RAID-Z能够获得更好的性能。在RAID-Z配置中,带后备电源的缓冲的作用是在断电时留住更多的数据,而不再是确保数据的完整性,因此,也就不再是必需的了。