五千年(敝帚自珍)

主题:【原创】家用硬盘阵列RAID实例-壹 -- 梦回唐朝

共:💬83 🌺127
全看树展主题 · 分页首页 上页
/ 6
下页 末页
家园 【整理】RAID 0, 1, 5, 1+0 简介

最常见的桌面电脑支持的硬盘阵列模式包括以下几种:0, 1, 5, 1+0。下面是一些简单介绍。

此节主要编译自Storage, Raid, and intel’s ICHxR, 英文和图片版权为原作者所有。

RAID 0 - striped

点看全图

外链图片需谨慎,可能会被源头改

由4个或更多硬盘组成,数据被分块(striped)写到不同硬盘,大容量,高速度,低可靠性。

- 读写速度n倍于单盘,也就是说近于线性提高。

- 读写延迟因为每一个硬盘都需要到位,所以决定于最慢的那个硬盘。

- 容量是多个硬盘的总和。如果硬盘容量不等,则是最小硬盘的容量*n.

- 可靠性大幅降低。如果单个硬盘的年平均失败率为f,那么n-disc raid0阵列失败率为 100*(1-(1-f/100)^n)%。例如单个硬盘失败率为5.0%, 那么两个盘组成的RAID0失败率为9.75%.

RAID 1 纯镜像(Mirroring)

点看全图

外链图片需谨慎,可能会被源头改

由2个或更多硬盘组成,高可靠性,无速度优势。

- 数据一模一样地被写入所有硬盘,也就是说一式两份(或多份)。所以只要有一个还是好的,数据就没问题。

- 同样的原因,容量仅为单个硬盘的容量,所以成本最高。

- 读延迟(latency)可能稍快,取决于阵列控制器的智能程度,控制器可能会选择较快的那个硬盘。

- 读速度(speed throughput)可能稍快或较快,取决于阵列控制器的智能程度,控制器可能可以从两个硬盘各读一半数据。

- 写速度及延迟可能稍慢,取决于最慢的那个硬盘。

- 如果单个硬盘的年平均失败率为f%,那么阵列失败率为 100*( (f/100)^2 ) %. 例如单个硬盘失败率为5.0%, 那么两个盘组成的阵列失败率为0.25%.

RAID1+0 or RAID 10

点看全图

外链图片需谨慎,可能会被源头改

4-disc raid 10 :

RAID 0

.-----------------.

| |

RAID 1 RAID 1

.--------. .--------.

| | | |

120 GB 120 GB 120 GB 120 GB

A1 A1 A2 A2

A3 A3 A4 A4

A5 A5 A6 A6

A7 A7 A8 A8

由4个或更多硬盘组成,先镜像,再分块。

假设有n个硬盘组成:

- 读速度快,接近n/2倍于单盘

- 读延迟接近单盘,因为它决定于成员RAID 1, 而成员RAID 1的读延迟决定于最快的那个成员硬盘。

- 写速度接近n/2倍于单盘

- 写延迟也接近单盘,但可能稍慢,取决于最慢的那个硬盘。

- 阵列容量也是n/2倍于单盘

- 如果单个硬盘的年平均失败率为f%,那么阵列失败率为 100*(1 - (1-(f/100)^2)^(n/2)) %. 例如单个硬盘失败率为5.0%, 那么4个盘组成的RAID10阵列失败率为0.499%.

RAID5 奇偶校验阵列

点看全图

外链图片需谨慎,可能会被源头改

由3个或更多硬盘组成,数据被分块写入单个硬盘,同时也有奇偶校验数据写入,以保证任何n-1个硬盘上的数据可以恢复完整数据。

高速,容错,可扩展性好,大容量,但实现复杂。

- 读速度为n-1倍于单盘

- 读延迟因为每一个硬盘都需要到位,所以决定于最慢的那个硬盘。

- 写速度接近于n-1倍于单盘。但应为每一块数据都需要附加写入奇偶校验位,所以有额外的计算和写操作。

- 写延迟比较严重,同样的因为要计算校验位。

- 容量为(n-1)倍于单盘。

- RAID5可以容忍单盘失败。只有两个成员硬盘同时故障时,阵列才无法恢复。所以如果单个硬盘的年平均失败率为f%,那么阵列失败率为100*[1- ((1-f/100)^n * (f/100)^0 + nC1*(1-f/100)^(n-1) * (f/100)^1)] %. 例如单个硬盘失败率为5.0%, 那么4个盘组成的RAID5阵列失败率为1.40%.

其他阵列组合包括 RAID 5+x 等等对于家用而言过于高端,略过不计,有兴趣的朋友可以参看Wiki.

家园 主要还是RAID5本身的问题

现代主流PC的CPU和内存处理RAID5那点运算是没有任何负担的。

RAID5理论上就是小写性能极低,比单盘还低得多。但现代文件系统却需要很多小写操作管理元数据。很多这样的小写是不能被cache缓存的,一些是为保证数据安全不允许缓存,一些是因为非局部反复/连续写所以缓存无意义也无法提高性能。这就导致RAID5性能难以提高。即使是高端的产品也不行。我正用的机器是4盘RAID5主板集成芯片的,我们的工作组服务器是12盘中档128MB缓存硬件RAID5,这两者性能差别不大。我们的数据中心是133光纤盘的企业级最高端盘阵(HP EVA 8100),其性能也并不突出。

对某些工作组级别的服务器,如果需要10TB以上的容量,可能RAID5是不得不用的,因为目前的硬件要做到10TB的RAID1+0还价格太贵。但自用和小型服务器,不超过4TB的容量需求的话,RAID1+0或RAID1都比RAID5更好。

家园 不怕浪费空间又RAID1+0吧
家园 我们这里用raid 5也主要考虑的是大容量

大容量虽然还可以用JBOD(Just a Bunch Of Disks)

不过JBOD就谈不上什么灾后恢复了

raid 5如果真出问题了

rebuild一次也蛮费时的

我个人倾向是家用文件服务器的硬盘一个个往上加就是了

一般家里也不太可能一次采购就把空位塞满

下次买,又是不一样的盘了

对可靠性有要求又要数据在线的可以部分硬盘raid 1

毕竟单硬盘速度就足够把一条Gigabit Ethernet线撑满了

在工作机上可以用ssd装系统

追求持续写入的可以数据盘raid 0

但是工作机一般没必要挂太多的硬盘

工作机-文件服务器之间可以定时sync

特别重要的数据(一般不会很多)还要用其他手段备份

回过头来,还是要看实际的需求

脱离具体的应用谈何种raid好没什么意义

家园 【讨论】觉得你所提的性能问题应该是正常的。

“读写峰值持续几秒” - 应该是array controller的cache的作用。

“然后迅速下降到比单个盘稍快的地步” - 实际上你的controller是相当不错的。要知道RAID 5的写操作的overhead是很严重的。最近刚升级完文件服务器,用的是3GB SAS 12HDD RAID5,峰值也就是7-8Mbyte/s.

我认为RAID5主要优势是性能和费用平衡的比较好。如果对读写性能要求较高,可能RAID1或RAID1+0更合适一些。

下面引用一段:

# Striping With Parity: As with mirroring, write performance when striping with parity (RAID levels 3 through 6) is worse than read performance, but unlike mirroring, the "hit" taken on a write when doing striping with parity is much more significant. Here's how the different accesses fare:

* For reads, striping with parity can actually be faster than striping without parity. The parity information is not needed on reads, and this makes the array behave during reads in a way similar to a RAID 0 array, except that the data is spread across one extra drive, slightly improving parallelism.

* For sequential writes, there is the dual overhead of parity calculations as well as having to write to an additional disk to store the parity information. This makes sequential writes slower than striping without parity.

* The biggest discrepancy under this technique is between random reads and random writes. Random reads that only require parts of a stripe from one or two disks can be processed in parallel with other random reads that only need parts of stripes on different disks. In theory, random writes would be the same, except for one problem: every time you change any block in a stripe, you have to recalculate the parity for that stripe, which requires two writes plus reading back all the other pieces of the stripe! Consider a RAID 5 array made from five disks, and a particular stripe across those disks that happens to have data on drives #3, #4, #5 and #1, and its parity block on drive #2. You want to do a small "random write" that changes just the block in this stripe on drive #3. Without the parity, the controller could just write to drive #3 and it would be done. With parity though, the change to drive #3 affects the parity information for the entire stripe. So this single write turns into a read of drives #4, #5 and #1, a parity calculation, and then a write to drive #3 (the data) and drive #2 (the newly-recalculated parity information). This is why striping with parity stinks for random write performance. (This is also why RAID 5 implementations in software are not recommended if you are interested in performance.)

* Another hit to write performance comes from the dedicated parity drive used in certain striping with parity implementations (in particular, RAID levels 3 and 4). Since only one drive contains parity information, every write must write to this drive, turning it into a performance bottleneck. Under implementations with distributed parity, like RAID 5, all drives contain data and parity information, so there is no single bottleneck drive; the overheads mentioned just above still apply though.

家园 raid5确实比较折中

家用还是可以的。

家园 看来好多IT硬件架构高手

看完各位企业级的回帖,心里直打鼓:还要不要继续在这儿班门弄斧了?我可不是这方面的专家,只不过是自己在家里倒弄而已。

家园 RAID1+0的可靠性公式似乎有误
家园 您说的对

原帖就错了。已改为 100*(1 - (1-(f/100)^2)^(n/2)) %。 谢谢。

家园 其实这是个很值得讨论的话题啊

相对于其他消费品价格不断上涨

硬盘还是在不断“降价”的

下载勤快些或者拍照拍DV多点或者在家干活的

自家塞满几块>1T的硬盘是很容易的事

看看企业级/专业的存储和备份系统

可以给家用作参考--性能上能做到多高

但是家用有家用的特点

比如一般不会上万转SAS盘和阵列卡

一般不会有专门的机房放设备

一般也不会同时有n>2台机器一起向服务器要求同一份数据

...

何况各家的具体需求也大不一样

有一些基本的共同需求:

低成本/低噪音/多平台数据共享/可扩展/...

但是没有one for all的解决方案

上不上RAID上什么样的RAID都可以结合具体情况来讨论

比如楼主的“文件服务器”是否还兼职工作/娱乐用机?

家里网络是什么结构?

机器放在书房还是储藏室还是...?

除了电影/电视节目,有没有什么数据是重要的而且经常更新的?

家园 RAID4

楼主怎么没写raid4哪? 还有raid4的衍生raid_dp.

Raid4的缺点是校验盘只有1块,写的时候性能比较差。但是读的时候就比较好。

家园 瓶颈不在硬盘

硬盘读写速度再快也没用,因为盘柜的光纤传输速度决定了瓶颈。

并且,就算做多路径,业界的标准也很复杂,兼容不兼容很难说。

家园 光纤应当不是瓶颈

如果HP设计有这样的问题的话就太不像话了。

我们的设备,133个硬盘分9个盘柜,都是双路光纤连接到两个冗余控制器。每个控制器和服务器是4路(还是8路?记不清楚了)4G光纤连接。多径肯定是成功的,设备都是HP一家的。任何一个地方的带宽都比达到的峰值高至少1个数量级。

家园 确实是很正常的

RAID5的设计本来就是以性能换成本。不过,我感觉文件系统的设计如果做一些精细的调整的话,RAID5的性能应当有较大提高。只是现在没有谁在做这方面的开发。SSD文件系统做的人倒是不少。

家园 家用我倒建议开始就上RAID1

上RAID1+0没有太大必要,且功耗、噪声太大。不做RAID可靠性确实差,现在硬盘容量这么大,坏一次就大杯具了。后面如果需要的话,用RAID1+JBOD扩展即可。事实上家用扩展的可能性应当不大,更多的是随机器一起全面升级了。买的时候就多准备一点容量,现在1.5TB的RAID1成本都是不用考虑的。

SSD同样是可靠性的问题比较麻烦。系统盘坏了虽然数据可以不丢,但严重影响工作。我希望有机器有这样的配置:2个CF或SD槽可以做RAID1,4个SATA口可以做RAID1+0和RAID1+JBOD。但似乎还没有这样的机器。

另外,根据我们实际使用的经验,网络文件访问的性能是比较差的,无论物理硬盘多快(甚至用内存盘也无法提高多少),即便是使用GbE甚至是10GbE。要文件访问性能的话,还得把数据放本地。放服务器上就不要指望性能了。服务器的目的是大容量、可靠性和多人共享。

全看树展主题 · 分页首页 上页
/ 6
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河