大话磁盘阵列

1. 概述:

磁盘阵列与当今很火的分布式系统有异曲同工之妙,它的目的是将多个廉价的小磁盘组成一个集合,用来替代昂贵的单个大磁盘存储。那么我们将多个小磁盘顺序进行存储不就好了吗,为什么还需要做磁盘阵列冗余之类的事情呢?这是为了提供容错功能来提升磁盘的安全性,因为廉价小磁盘有可能会发生故障,磁盘阵列在保证小磁盘部分发生故障时仍然能够提供正常的I/O服务,这也符合当今分布式系统高可用性的理念。一个磁盘阵列被主机识别为一块磁盘,由于每一个小磁盘拥有一个磁头,磁盘阵列可以在内部实现并行I/O以提升性能。




2. raid可以通过软件,硬件以及ide raid实现。软件实现消耗cpu资源比较多,硬件实现经济成本高,ide则是折中的方式。




3. 比较典型的raid包括raid0,raid1,raid5,raid10:

3.1 raid0:

raid0可以简单的认为是把多个小磁盘简单地堆在一起组成的磁盘阵列,不提供数据冗余的功能,因此可以认为是牺牲了高可用性来追求性能的最优。raid0将写操作分成几份,分别写入每块小磁盘。因此raid0一般要采用同型号同容量的硬盘组合起来。

3.2 raid1:

raid1指的是另外一块相同容量的磁盘作为第一块磁盘的镜像,牺牲了存储容量和性能来追求高可用性以及对数据安全和保护的追求。

3.3 raid5:

raid5是raid0和raid1的折中,它主要采用奇偶校验的方式保护数据。当数据发生损坏时,利用其他数据和奇偶校验去恢复数据。

奇偶校验恢复数据的原理是什么样的呢?其实就是按位做异或运算。这个奇偶校验不同于串行通信中所代表的奇偶校验。串行通信中的奇偶校验代表的是最后加1位使得1的个数为奇数或者偶数。串行通信为了提高正确性的其它校验方式包括加和校验,crc校验等,其中crc校验是一种多项式计算的算法。

raid5读性能接近于raid0,写性能比写入单个磁盘稍低。

3.4 raid10:

raid10是raid0和raid1的结合。每一个单元都是一个raid1,多个raid1单元按照raid0的逻辑组成最终的raid10。

raid10能够兼顾高可用性和性能,但是缺点是成本更高。




4. 一般的raid都做了cache,可以大大提高读写性能。


你可能感兴趣的:(学习笔记)