在单机时代, 采用单块磁盘进行数据存储和读写的方式, 由于寻址和读写的时间消耗, 导致 I/O 性能非常低, 且存储容量还会受到限制. 另外, 单块磁盘极其容易出现物理故障, 经常导致数据的丢失. 因此大家就在想, 有没有一种办法将多块独立的磁盘结合在一起组成一个技术方案, 来提高数据的可靠性和 I/O 性能呢.
在这种情况下, RAID 技术就应运而生了.
一, RAID 是什么?
RAID ( Redundant Array of Independent Disks ) 即独立磁盘冗余阵列, 简称为「磁盘阵列」, 其实就是用多个独立的磁盘组成在一起形成一个大的磁盘系统, 从而实现比单块磁盘更好的存储性能和更高的可靠性.
二, RAID 有哪些?
RAID 方案常见的可以分为:
- RAID0
- RAID1
- RAID5
- RAID6
- RAID10
下面来分别介绍一下.
RAID0
RAID0 是一种非常简单的的方式, 它将多块磁盘组合在一起形成一个大容量的存储. 当我们要写数据的时候, 会将数据分为 N 份, 以独立的方式实现 N 块磁盘的读写, 那么这 N 份数据会同时并发的写到磁盘中, 因此执行性能非常的高.
RAID0 的读写性能理论上是单块磁盘的 N 倍 (仅限理论, 因为实际中磁盘的寻址时间也是性能占用的大头)
但 RAID0 的问题是, 它并不提供数据校验或冗余备份, 因此一旦某块磁盘损坏了, 数据就直接丢失, 无法恢复了. 因此 RAID0 就不可能用于高要求的业务中, 但可以用在对可靠性要求不高, 对读写性能要求高的场景中.
那有没有可以让存储可靠性变高的方案呢?
有的, 下面的 RAID1 就是.
RAID1
如图,
RAID1 是磁盘阵列中单位成本最高的一种方式. 因为它的原理是在往磁盘写数据的时候, 将同一份数据无差别的写两份到磁盘, 分别写到工作磁盘和镜像磁盘, 那么它的实际空间使用率只有 50% 了, 两块磁盘当做一块用, 这是一种比较昂贵的方案.
RAID1 其实与 RAID0 效果刚好相反. RAID1 这种写双份的做法, 就给数据做了一个冗余备份. 这样的话, 任何一块磁盘损坏了, 都可以再基于另外一块磁盘去恢复数据, 数据的可靠性非常强, 但性能就没那么好了.
了解了 RAID0 和 RAID1 之后, 我们发现这两个方案都不完美啊.
这时候就该 性能又好, 可靠性也高 的方案 RAID5 登场了.
RAID5
这是目前用的最多的一种方式.
因为 RAID5 是一种将 存储性能, 数据安全, 存储成本 兼顾的一种方案.
在了解 RAID5 之前, 我们可以先简单看一下 RAID3, 虽然 RAID3 用的很少, 但弄清楚了 RAID3 就很容易明白 RAID5 的思路.
RAID3 的方式是: 将数据按照 RAID0 的形式, 分成多份同时写入多块磁盘, 但是还会另外再留出一块磁盘用于写「奇偶校验码」. 例如总共有 N 块磁盘, 那么就会让其中额度 N-1 块用来并发的写数据, 第 N 块磁盘用记录校验码数据. 一旦某一块磁盘坏掉了, 就可以利用其它的 N-1 块磁盘去恢复数据.
但是由于第 N 块磁盘是校验码磁盘, 因此有任何数据的写入都会要去更新这块磁盘, 导致这块磁盘的读写是最频繁的, 也就非常的容易损坏.
RAID5 的方式可以说是对 RAID3 进行了改进.
RAID5 模式中, 不再需要用单独的磁盘写校验码了. 它把校验码信息分布到各个磁盘上. 例如, 总共有 N 块磁盘, 那么会将要写入的数据分成 N 份, 并发的写入到 N 块磁盘中, 同时还将数据的校验码信息也写入到这 N 块磁盘中 (数据与对应的校验码信息必须得分开存储在不同的磁盘上). 一旦某一块磁盘损坏了, 就可以用剩下的数据和对应的奇偶校验码信息去恢复损坏的数据.
RAID5 校验位算法原理: P = D1 xor D2 xor D3 ... xor Dn (D1,D2,D3 ... Dn 为数据块, P 为校验, xor 为异或运算)
RAID5 的方式, 最少需要三块磁盘来组建磁盘阵列, 允许最多同时坏一块磁盘. 如果有两块磁盘同时损坏了, 那数据就无法恢复了.
RAID6
为了进一步提高存储的高可用, 聪明的人们又提出了 RAID6 方案, 可以在有两块磁盘同时损坏的情况下, 也能保障数据可恢复.
为什么 RAID6 这么牛呢, 因为 RAID6 在 RAID5 的基础上再次改进, 引入了双重校验的概念.
RAID6 除了每块磁盘上都有同级数据 XOR 校验区以外, 还有针对每个数据块的 XOR 校验区, 这样的话, 相当于每个数据块有两个校验保护措施, 因此数据的冗余性更高了.
但是 RAID6 的这种设计也带来了很高的复杂度, 虽然数据冗余性好, 读取的效率也比较高, 但是写数据的性能就很差. 因此 RAID6 在实际环境中应用的比较少.
RAID10
RAID10 其实就是 RAID1 与 RAID0 的一个合体.
我们看图就明白了:
RAID10 兼备了 RAID1 和 RAID0 的有优点. 首先基于 RAID1 模式将磁盘分为 2 份, 当要写入数据的时候, 将所有的数据在两份磁盘上同时写入, 相当于写了双份数据, 起到了数据保障的作用. 且在每一份磁盘上又会基于 RAID0 技术讲数据分为 N 份并发的读写, 这样也保障了数据的效率.
但也可以看出 RAID10 模式是有一半的磁盘空间用于存储冗余数据的, 浪费的很严重, 因此用的也不是很多.
整体对比一下 RAID0,RAID1,RAID5,RAID6,RAID10 的几个特征:
本文发布于微信公众号「 不止思考 」, 欢迎关注, 交流 互联网认知, 工作管理, 大数据, web, 区块链技术.
来源: https://www.cnblogs.com/jsjwk/p/10036839.html