发新话题
打印

那位DX给说说DMX的Bin file是干什么用的?

既然这么长时间的帖又被顶上来了,我就大言不惭的说一句,但是我的观点我认为是正确的,事隔一年,经过风雨洗礼,现在我依然认为我的观点是正确的,而且确实也是正确的。楼下继续仍鸡蛋西红柿。
敝人博客
敝人专著:《大话存储》购买:当当,互动,淘宝,卓越。

TOP

...看了各位的文字,才发现自己原来从来不知道RAID3和RAID4是什么,赶紧去好好查了下。比较信服的结论如下,分享给大家。

RAID3: Striped set with dedicated parity/Bit interleaved parity. This mechanism provides an improved performance and fault tolerance similar to RAID 5, but with a dedicated parity disk rather than rotated parity stripes. The single parity disk is a bottle-neck for writing since every write requires updating the parity data. One minor benefit is the dedicated parity disk allows the parity drive to fail and operation will continue without parity or performance penalty.

RAID4: Block level parity. Identical to RAID 3, but does block-level striping instead of byte-level striping. In this setup, files can be distributed between multiple disks. Each disk operates independently which allows I/O requests to be performed in parallel, though data transfer speeds can suffer due to the type of parity. The error detection is achieved through dedicated parity and is stored in a separate, single disk unit.

总而言之,言而总之,就是RAID3用byte-level striping,IO中两个连续的字节会被写到2个不同的盘上;而RAID4用block-level striping。从这个发散出去,所谓RAID3适合单进程,没有热点,RAID4有热点就比较好理解了。

TOP

raid3的实现,只是一个大思想。具体算法具体实现。
至于byte level,感觉不可能有厂家这么干了,因为这样做得不偿失,一般就是按照文件系统块来做,一个块覆盖一个stripe。
当然byte level可能也实际被应用了,来作为raid2的一个升级版,但是很快也就又被淘汰了。
敝人博客
敝人专著:《大话存储》购买:当当,互动,淘宝,卓越。

TOP

引用:
原帖由 冬瓜头 于 2008-8-18 18:33 发表
raid3的实现,只是一个大思想。具体算法具体实现。
至于byte level,感觉不可能有厂家这么干了,因为这样做得不偿失,一般就是按照文件系统块来做,一个块覆盖一个stripe。
当然byte level可能也实际被应用了,来作 ...
嗯,我想,我可以确定的说,RAID3就是byte level的。其实,这个帖子让我去搞明白了一个一直以来忽略的问题,RAID3和RAID4到底有什么区别。一直有一种说法是,在特定条件下,RAID3拥有最佳的读和写性能(当然,在使用相同的硬盘数条件下)。仔细想下RAID3和RAID4/5的具体写的操作,当使用3,5,9块硬盘做RAID3时候,一个byte level strip的大小为2个,4个,8个字节,任何以文件块或者数据库块(一般为512byte的整数倍)的写操作,都是和RAID3的byte level stripe对齐的。也就是说,不需要进行任何类似RAID5或者RAID4的读数据并重新计算校验的操作,控制器只管拼命写就是了。

这样看来,RAID3对于单个IO,的确具有最高的性能,但为什么,现在基本没有使用RAID3的案例了呢?因为,RAID3使用byte level strip有效规避了写操作时需要读取其他盘上数据重新计算校验的问题,但是同时大大降低了读操作的并行性。使用byte level stripe,导致了基本上所有大于一个stripe(几个字节)的读操作都是不可并行的。这个,大家也知道,好像现在没有小于单个文件系统块或数据库块的IO操作了。而且,由于strip size太小了,导致每次读操作读取的数据量也太少,硬盘将太多的时间浪费在seek上。

另外,由于byte level stripe的数据过于分散,如果没有专门的硬件电路,我觉得拆分和组合数据块也要占去不少计算资源。

综合一下,无论RAID3,4,5,写性能最好的时候,是IO位置和stripe对齐,且大小为stripe size整数倍的时候;读并行性最高的时候,是IO于stripe element对齐,且大小不大于一个stripe element大小的时候。(考虑到prefetch,读操作对stripe element size的实际要求可能会更高)

写到这里,突然发现我写这么点文字收获不少,RAID3到RAID5的发展,其实正反映了我们优化存储时候需要解决的问题,怎么样使用RAID和合适的stripe size并结合优化的cache大小和算法,获得一个廉价的,符合应用需要的读写性能。

又1:你所说的 ”一般就是按照文件系统块来做,一个块覆盖一个stripe。“的做法,完完全全是RAID3的思想,和byte level也没有明显区别。任何读操作都不可能并发。就算按照4K大小的文件系统块,在一个5块盘的盘组中,单个硬盘的IO大小也只有1K。当然,写操作上的确也拥有最佳的性能。

又2:更正你一点,RAID3决对不会是RAID2优化后的产物,因为RAID2使用海明码,完全不同于RAID3以后使用的奇偶校验。

最后,作为一个不资深,不熟练的存储从业人员,我最近才开始关注这个论坛。以上文字只是在对RAID3和RAID4做了一些粗浅的研究后的结论。如果有错漏的地方,希望大家指出。

[ 本帖最后由 big_mammon 于 2008-8-19 01:58 编辑 ]

TOP

虽然没有时间仔细看楼上的大论,不过你的专研的精神很值得学习,赞一个
我自豪,因为我是中国人
实话实说,诚实是美....

TOP

264楼分析的很好.
不过,raid3是raid2的升级,这么说也可以吧,抛弃汉明码,不算是升级么?有得有失,汉明码可以纠错,xor不能纠错,这应该说还降级了呢
敝人博客
敝人专著:《大话存储》购买:当当,互动,淘宝,卓越。

TOP

DMX 的讨论变成了RAID3/4,被忽悠了啊。谁有DMX的学习体会,交流一下

TOP

发新话题