RIAD工作原理

来源:互联网 发布:三角木马淘宝 编辑:程序博客网 时间:2024/06/06 04:55

Raid旧称Redundant Array of Inexpensive Disks,即廉价磁盘冗余阵列;现称Redundant Array of Independent Disks,即独立磁盘冗余阵列,简称为磁盘阵列。其基本的思想是把多个相对廉价的磁盘进行组合成为一个磁盘阵列组,以达到甚至超越一个价格相对昂贵,容量相对大的磁盘。根据Raid版本的不同,Raid相对于散列的磁盘可以提供多方面的优势:更强的容错功能、更快的读写速度、更高的资料整合度等等……

简单来说,Raid的效果是把多个磁盘组成一个逻辑区域,因此系统只会将其视作一块磁盘。以往,Raid主要出现在服务器领域,而随着技术的不断发展,Raid也逐渐进入了玩家的世界。

Raid实现

  • 纯软件Raid :指程序运行在操作系统中且没有其他额外硬件参与的Raid模式。在这种模式下磁盘通常直接连接至计算机的I/O接口或是没有经过处理器的HBA。这样只有在操作系统加载了Raid驱动软件之后,整个阵列才会变成活动对象。这样的Raid模式通常被当作操作系统的一项额外附加值赠送给用户,其最大的特色就是低廉的成本。

  • 半软件半硬件Raid:指通过一些硬件帮助Raid软件完成其薄弱环节的模式。在这种模式下通常会有一些额外的硬件参与其中(比如带有Raid BIOS的HBA或直接在主板上加入Raid BIOS芯片等)。这颗额外的BIOS可以使得系统通电后阵列就能成为活动对象,在启动的过程中提供冗余。除此以外,大多数的类似方案还提供一个BIOS软件使得维护阵列可以不用启动操作系统。而且,这种硬件辅助的Raid通常都拥有跨平台的驱动,因此其相比于纯软件Raid更不依赖于操作系统。
    .

  • 纯硬件Raid:指一张独立的Raid卡或者基于RoC(Raid on Chip)技术的硬件方案。Raid卡通常内置了Raid处理器(I/O)处理器并且拥有自己的驱动接口(I/O控制器)。比较常见的是通过主板上的PCI或者PCI-e接口与系统进行连接。Raid卡通常是非常昂贵的,但也是最灵活和高效的解决方案。在这种情况下Raid的运行是完全独立于操作系统的。这样Raid处理器将可以提供最好的磁盘性能并且完全释放计算机硬件的负担。在RoC方案中,Raid控制器,缓存控制器,I/O面板甚至缓存都被聚集在一块芯片上。这样的芯片可以是整体安装在主板上或者安装在一块独立的PCB上,其中最常见于服务器主板上。

Raid版本

Raid 0

Raid 0是将多个磁盘直接合并成一个大的磁盘,并行I/O,没有冗余。在存放数据的时候,控制器将数据按照磁盘个数进行分段,并同时将这些分段写入相对应的磁盘之中。这样做的好处是Raid 0在所有的阵列之中拥有最快的读写速率,然而由于Raid 0并不具有冗余功能,只要有任意一块磁盘发生损坏,那么所有磁盘上的数据都会丢失。理论上Raid 0的效能就是单磁盘效能与磁盘数的乘积,但受制于I/O瓶颈以及环境影响,其实际效能也会遵从边际效应。也就是说,随着磁盘数的增加,带来的效能提升会逐渐减小。其工作原理如下:

enter description here

Raid 1

Raid 1是将多个磁盘进行互相镜像。在数据写入的时候,控制器将数据同时写入所有磁盘,因此只有在所有的磁盘都发生损坏的情况下才会丢失数据。另外,由于所有的磁盘中都写有相同的数据,因此在读取数据的时候可以通过多线程达到很好的读取速度。当主磁盘发生损坏时,镜像磁盘可以直接代替主磁盘继续工作,故Raid 1拥有所有Raid中最好的安全性。但是无论用多少磁盘组建Raid 1,都只有一块磁盘的容量,且实际可用空间是所有磁盘中容量最小的尺寸,因此Raid 1也是所有Raid中磁盘利用率最低的一个级别。其工作原理如下:

enter description here
### Raid 2
Raid 2是Raid 0的改良版,在Raid 0的基础上增加了基于Hamming Code的错误修正码(ECC,Error Correction Code)。磁盘组中序号为2的幂的磁盘(第1个、第2个、第4个、第8个……)为校验盘,用于存储校验信息。从这个特征中我们很容易就可以得到一个结论:阵列中的磁盘总数越多,校验磁盘所占的比例越低,磁盘空间利用率越高。组建Raid 2需要至少3个磁盘,其工作原理如下:

enter description here

Raid 3

Raid 3与Raid 2非常类似,其区别在于完全使用一个磁盘存储校验信息,实际可用容量是所有磁盘容量的总和减去一块磁盘。这样做的好处是,当某块数据磁盘发生损坏时,可以通过其他数据磁盘和校验磁盘算出损失的数据;而当校验磁盘发生损坏时,数据磁盘也依旧可以进行工作并可以重新生成校验数据。而Raid 3的性能主要由容错算法和分块大小所决定。组建Raid 3至少需要3块磁盘,其工作原理如下:

enter description here

Raid 4

Raid 4是一种思路与Raid 3非常相似的方案。其与Raid 3的不同就在于,Raid 4是将数据按区块为单位进行分割的,每次的数据读写过程中都必须从校验磁盘中取出相应的校验进行核对,这样可能带来的隐患是,校验磁盘会由于过度频繁的使用导致损耗率提高。Raid 4的工作原理如下:

enter description here

Raid 5

Raid 5是一种兼顾存储效能、安全性以及利用率的存储方案,主要是建立在Disk Striping技术上实现的。Raid 5在存储时把数据和相应的奇偶校验信息存储到Raid 5的各个磁盘上,并且把奇偶校验信息和数据分别存于不同的磁盘上。这样当Raid 5中发生一个磁盘损坏的时候,可以利用剩下的磁盘和奇偶校验数据计算恢复损坏的数据。Raid 5可以理解成Raid 0和Raid 1的折中方案,Raid 5提供了接近Raid 0的磁盘读取性能且比Raid 0更高的安全保障。然而由于Raid 5中数据都拥有校验信息,当更改数据时校验会严重影响磁盘的写入性能。Raid 5的写入过程非常繁杂:当新数据进入时,控制器会先读取需要更新扇区上的数据,读出校验数据,写入新数据,写入新校验数据。也就是说,写入新数据这一步需要通过4个动作完成。这个问题通过Raid控制器的缓存可以得到有效改善。其工作原理如下:

enter description here

Raid 6

Raid 6是一种与Raid 5思路非常相似的方案。其与Raid 5的不同点在于,Raid 6增加了第二个独立的效验盘,两个独立的奇偶校验使用不同的算法,相比Raid 5而言进一步提高了数据安全性,允许最多两块磁盘同时发生损坏。然而相比于Raid 5,其缺点也是非常明显的:由于多了一个独立的奇偶校验,磁盘利用率相比Raid 5更低;且两种不同的校验算法同时存在导致磁盘的写入性能进一步降低,这也是其极少被实际应用的原因。建立Raid 6需要至少4个磁盘,Raid 6的工作原理如下:

enter description here

Raid 10

Raid 10,亦称Raid 1+0,是将所有的磁盘分成两组,每组先进行Raid 1阵列,然后将两个Raid 1阵列再进行Raid 0阵列。其工作原理如下:

enter description here

Raid 01

Raid 01,亦称Raid 0+1,与Raid 10恰恰相反,是将每组磁盘先进行Raid 0阵列再进行Raid 1阵列。由于Raid 10相较于其有更好的安全性和适用性,通常主板只会支持Raid 10而不支持Raid 01。Raid 01的工作原理如下:

enter description here

Raid 50

Raid 50,亦称Raid 5+0,类似于Raid 10和Raid 01,是将磁盘分为几组,每组磁盘先进行Raid 5阵列,再进行Raid 0阵列。这样做的目的在于提高Raid 5的写入性能。Raid 50的工作原理如下:

enter description here

常见Raid的一些主要信息对比:

enter description here
RAID的选择

enter description here