什么是RAIDZ?
为什么用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配置中,带后备电源的缓冲的作用是在断电时留住更多的数据,而不再是确保数据的完整性,因此,也就不再是必需的了。