硬盘阵列RAID家族的兄弟们,到底怎么分清谁是谁?

in #cn6 years ago (edited)

这项技术叫做 RAID,全称是 “ Redundant Array of Independent Disks ” ,翻译成中文就是独立硬盘冗余阵列。

考虑到全称和中文名都太长了,咱们还是喊它 RAID 吧。

RAID 当中最能体现思路的应该是 “ Redundant ” ,意思是冗余。
本来存东西一块大硬盘管够, RAID 非得整好几块,冗余就冗余在这儿。

RAID 分好几个等级,我们先说 RAID 0 。

RAID 0 就是把本来存一块硬盘的数据,分别存在了几块硬盘里。
01.gif
事实上,RAID 0 比较特殊。。。它不光不提供容错机会,还会提升出错的风险。
因为单块硬盘没有完整数据,坏一块全部完蛋,假设同样硬盘出问题概率是一样的,那增加一块会直接导致出错概率翻倍。


这种东西为啥还会有人想得出来???
因为,这提升了读写效率。
你想想,本来数据读写要从一块硬盘里读写,每个比特都得 “ 排队 ” 。
现在数据分散了,就好比多了条队同时排,效率提升了不少,因此 RAID 0 作为提升效率还是很实用的 ~

说说第一个真正意义上的 RAID -- RAID 1。

RAID 1 提升容错的方法是。。。复制一遍数据到镜像盘里。
02.gif
有几块硬盘,就拿一半来做镜像备份。
这样一来,哪怕你炸了其中一块,也能马上拿镜像盘顶上,非常可靠。
但是。。。炸硬盘很危险,而且这么做很浪费空间,假设你买了总共 4TB 的硬盘,只有 2TB 会真的拿来存储。这简直烧钱,但是安全性也最大化了。

RAID 2 很少被实用,差评君直接说 RAID 3 。

但在那之前得引入一个概念,叫做校验。差评君还得讲个计算机逻辑上的操作,叫 XOR ,中文是异或。
计算机数据无外乎 0 和 1 ,这些比特执行 XOR 操作以后,可以得到下面的结果↓

这套结果有啥用呢?

只要有 A xor B 的结果,知道 A 是 0 或者 1 ,就能反推 B 是啥,反之亦然。
而且这一套结果可以涉及更多的比特,比如 A xor B xor C xor D 。。。
如果有奇数个 1 ,那结果就是 1 ;有偶数个 1,那结果就是 0 。
因此在 A xor B xor C xor D 中,只要知道结果,丢失任何一个都能反推出来!

RAID 3 的原理就是,特意拿一块盘出来当作校验盘,把其他盘的数据拿出来做个 xor 操作,并且把结果存在校验盘中。

这个阵列需要至少 3 块硬盘,不过好处是,只要校验盘没坏,坏了一块数据盘可以反推恢复数据。
同样也是靠浪费空间来提升容错,RAID 3 比 RAID 1 要节约不少。
不过,你可能要问,那校验盘的坏了咋办?
嗯。。。那就完了。

想到这一点的不止读文章的你,工程师也想到了,因此有了在这个基础上提升了的 RAID 5 。( RAID 4 也很少被实用 )

03.gif
在 RAID 5 规则下,校验码会均匀存储在每一块硬盘里:在上图中,第 1 块硬盘会存第 2,3,4 块硬盘的校验码。
这样一来,任意一块盘坏了都能被恢复。
04.gif
RAID 5 相比 RAID 3,它没有一块盘是绝对不能坏的,因此容错率高不少,不过和 RAID 3 一样,只能坏一块。

如果说为了安全,RAID 1 是牺牲了成本( 浪费大量空间 )成就极高的安全性的话。。。
那 RAID 5 就是权衡成本和安全的选择,就像差评君以前常说的,工程是研究各种妥协的学问。

而 RAID 6 就是相对 RAID 5 ,在成本和安全性上的一次微调:分散存两份校验码。

05.gif
这么做很显然会浪费更多的空间,而且最少需要 4 块硬盘才能执行,但是可以接受两块坏盘,容错率提升不少。

还有一种 RAID ,叫 RAID 10 。

这中间并没有 7 、8 、9 ,RAID 10 其实是 RAID 1 + 0 。

数据被分散存储后,再分别存两份。
06.gif
这么做吸收了 RAID 0 的效率优势,和 RAID 1 的安全优势。
起码要 4 块硬盘才能执行的同时,有个很明显的缺点,和 RAID 1 一样这么干会浪费一半的存储空间,

依然,这么好的优点让有的大公司会考虑烧个钱搞 RAID 10 。
以上大概就是常见的几种 RAID 了 ~
也许你的硬盘里就存个游戏,放个小姐姐什么的,怕丢的数据扔云盘,想法多的搞个 RAID 0 提个速 ~
但是对于云服务商来说,客户的数据是绝对不能出错的,因此需要费一些代价来提升安全性。

这个成本在 RAID 中,就是额外的硬盘。
想来想去,差评君不得不佩服现代工程师们的脑洞。
RAID 从被发明,到各种等级 RAID 的演变。。。
这些安全,成本,效率来回拉扯,做出各种妥协而得出来的方案,展示了人类工程之美。

Sort:  

Congratulations @meks! You have completed the following achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes received

Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Do you like SteemitBoard's project? Then Vote for its witness and get one more award!