RAID介绍
RAID技术
RAID,全称为Redundant Arrays of Independent Drives,即磁盘冗余阵列。
这是由多块独立磁盘(多为硬盘)组合的一个超大容量磁盘组。
计算机一直是在飞速的发展,更新,整体计算机硬件也得到极大的提升,由于磁盘的特性,需要持续、频繁、大量的读写操作,相比较于其他硬件设备,很容易损坏,导致数据丢失。
Raid历史
1988年,在美国加州大学伯克利分校提出且定义了RAID技术。RAID技术意为将多个硬盘设备组成一个容量更大、安全性更好的磁盘阵列组,将数据切割为多个区段后分别存放在不同的物理硬盘上,利用分散读写技术提升磁盘阵列组的整体性能,并且数据同步在不同的多个物理硬盘,也起到了数据冗余备份的作用。
Raid特性
Raid磁盘阵列组能够提升数据冗余性,当然也增加了硬盘的价格成本,只不过数据本身的价值是超过硬盘购买的价格的,Raid除了能够保障数据丢失造成的严重损失,还能提升硬盘读写效率,被应用在广泛的企业中。
先不谈磁盘,饮水机各位应该都了解
- standalone
独立模式,最常见的模式,一台饮水机,一桶水
(一块磁盘读写数据)
- Hot swap
热备份模式,一桶水可能会喝完,水桶可能会坏,旁边放一个预备水桶,随时替代
(防止单独一块硬盘突然损坏,故障,另一块硬盘随时等待接替)
- Cluster
集群模式,一堆饮水机一起提供服务,提高用户接水效率
(一堆硬盘共同提供工作,提高读写效率)
不同的Raid级别
由于技术角度因素、成本控制因素等,不同的企业在数据的可靠性以及性能上做了权衡,制定出不同的Raid方案
Raid 0
将两个或两个
以上相同型号
、容量
的硬盘组合
,磁盘阵列的总容量便是多个硬盘的总和。
数据依次
写入物理硬盘,理想状态下,硬盘读写性能会翻倍
但是raid 0 任意一块硬盘故障都会导致整个系统数据被破坏,数据分别写入两个硬盘设备,没有数据备份的功能。
Raid 0 适用于对于数据安全性不太关注,追求性能的场景。
好比你有一些小秘密,不想放云盘,数据量又比较大,可以快速写入raid 0。
本来读写都是一块硬盘,数据都得排队,效率肯定低
raid 0 把数据打散,好比多了条队同时排,效率一下子就提升了
raid 1
由于raid 0的特性,数据依次写入到各个物理硬盘中,数据是分开放的,因此损坏任意一个硬盘,都会对完整的数据破坏,对于企业数据来说,肯定是不允许。
Raid 1技术,是将两块以上
硬盘绑定,数据写入时,同时写入多个硬盘,因此即使有硬盘故障,也有数据备份。
但是这种方式,无疑极大降低磁盘利用率,假设两块硬盘一共4T,真实数据只有2TB,利用率50%,如果是三块硬盘组成raid 1,利用率只有33%,也是不可取的。
那有没有一种方案,能够控制成本、保证数据安全性、以及读写速度呢?
raid 3
计算机的异或:数字相同则为0,数字不同则为1
计算机的数据只有0和1对于异或处理,如下
[root@chaogelinux testdu]# python
Python 2.7.5 (default, Aug 7 2019, 00:51:29)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>
>>> 1^0
1
>>> 1^1
0
>>> 0^0
0
>>> 0^1
1
异或:AxorBxorCxorD
A异或B异或C异或D
结论:1的个数是奇数,结果为1;1的个数是偶数,结果是0
>>> 0^0^1^1
0
>>> 1^0^1^1
1
>>> 1^0^1
0
>>> 1^0^1^1^1
0
异或的作用是,只要知道异或的结果,任何一个值都能够反推出来
因此raid 3 至少需要3块硬盘,只要校验盘没坏,坏了一块数据盘可以反推数据来恢复。
但是你会发现同样也浪费了一块磁盘,但是要比raid 1 节约不少。
如果校验盘坏了呢?(你咋这么多事呢。。)
raid 5
Raid 5规则下,校验码会均匀放在每一块硬盘,磁盘1存放磁盘2、3、4的校验码
这样任意一块挂了都能够恢复,提升了容错率,但是也仅仅是只能挂掉一块
Raid 10
Raid 5技术是在读写速度和数据安全性上做了一定的妥协,对于企业来说,最核心的就是数据,成本不是问题。
Raid 10 其实是raid 0 加上raid 1,吸收了raid 0的效率,raid 1的安全性,因此至少需要四块硬盘搭建raid 10。
1.通过raid 1两两镜像复制,保障数据安全性
2.针对两个raid 1部署raid 0,进一步提升磁盘读写速度
3.只要坏的不是同一组中所有硬盘,那么就算坏掉一半硬盘都不会丢失数据
硬RAID、软RAID
由CPU去控制硬盘驱动器进行数据转换、计算的过程就是软件RAID
由专门的RAID卡上的主控芯片操控,就是硬件RAID
软件RAID和硬件RAID的差异如下
- 软件RAID额外消耗CPU资源,性能弱
- 硬件RAID更加稳定,软件RAID可能造成磁盘发热过量,造成威胁
- 兼容性问题,软件RAID依赖于操作系统,硬件RAID胜出