硬盘阵列

靠硬件raid卡,将多个硬盘连接到一起,对外呈现一块盘。

raid0(很少用raid0,用的爽,维护火葬场)

至少一块hdd,但突出不出优势,实际使用至少两块盘。

特点:一份数据,左边hdd放一半,右边hdd放一半,只追求速度不考虑安全。

优势:发挥两块盘的读写优势,读写压力分散;空间上有n块盘容量。

   读写速度是n块盘合在一起的速度,但只是理论上,实际上终究达不到2快盘读写速度,还是要到raid卡那里进行数据处理。

冗余性:一旦一块盘坏了,整份数据就没有意义,冗余性为0,无法保证数据安全。

使用场景:对数据安全没有要求,只追求读写速度!
    集群服务器的应用服务器上,只负责存放开发的应用程序,类似qq、暴风影音,没了就没了再下载安装就完了

    至于运行期间产生的数据,不能放到raid0.

应用服务器集群对数据安全没有很高的要求,运行期间产生的数据,从内存保存到其他服务器上。

raid1

只能2块盘,还是想象成左右各一块盘。

左边存完整数据,右边做备份---镜像。

特点:追求安全,不考虑读写速度。

容量:只有一块盘容量。

性能:一块盘读写速度。

冗余性:一块盘坏了,另一块盘顶上。

应用场景:服务器系统盘通常做raid1,用来赚钱的是跑的应用程序,要保证他们的稳定,他们都运行在os之上

      一旦os崩了,可以重新下载,但是会耗费大量的时间,公司业务一分钟几百上千万流水,能让你花几小时重新装os?

    网络要稳定、硬件要稳定、os要稳定、最后才是真正赚钱的应用程序的稳定。

    os也是装在hdd中,os代码本身不宝贵,是时间宝贵,不能让app没有运行平台。

有了raid1,一旦os崩了,另一块盘还能够读出来,os还能稳定运行。

问题来了,应用集群服务器为什么不做raid1呢?

因为app有集群服务器,一个坏了其他的服务器可以顶着,甚至还可以docker直接扩容,而os不行,一个机器上就只有一个os,os坏了机器就不能工作了。

raid1是为了保证至少机器是可以运行的。

实际使用:服务器装很多硬盘,找出两块固态盘做raid1(兼顾速度和安全),其他盘可以当单块使用,也可以做其他raid。

若此机器是集群中的一个节点,那么其他盘可以做成raid0,里面安装各种应用程序,追求速度不追求数据安全,但其实raid0很少使用。

raid5

至少3块hdd,合到一起,存数据有奇偶校验,两两之间做奇偶校验(本质异或运算)

第一hdd存1,第二hdd存0,第三块盘存前两者异或运算结果,相同为0,不同为1,不是真正的数据

好处:任意两块盘的结果可以推导出第三块盘的结果,无论坏哪个盘,另外两个盘都都可以推算另一个盘的数据

容量:废掉一个盘的容量

性能:读写速度比raid0慢,因为要做就校验,高于raid1,是一种折中方案,还比较节省成本。

实际使用:系统盘做raid1,其他盘做raid5

冗余性:可以坏一块盘,奇偶校验推到另一块盘

兼顾安全性与速度。

raid10

至少4块,raid1+raid0,土豪玩法,不计较那点成本。

先分别两块盘做raid1,两个raid1在做raid0,成本高了,兼顾raid1的安全,和raid0的速度,不像raid5还需要做运算。

场景:数据库服务器

总结:假设做数据库服务器,买来硬件后,两块固态做raid1装os(换固态比raid10性价比高),剩下的盘做raid10做数据库存储盘;其他硬件做应用服务器,os同上,剩余盘做raid5。

优化的最终都是落到IO,cpu的工作能力是固定的,尽量不要让他闲着等待磁盘IO、或者网络IO;能在内存搞定的别去hdd中。


 

看十遍不如自己写一遍!巩固基础,纵横开拓!