代码编织梦想

一、RAID的相关概念及介绍:

什么是RAID?

——RAID是一种把多块独立的硬盘(物理硬盘)按不同方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据冗余的技术。

——1987年由加利福尼亚大学伯克利分校提出。

——组成磁盘阵列的不同方式成为RAID级别(RAID Levels)。

 

什么是数据冗余?

——数据冗余的功能是在用户数据一旦发生损坏后,利用冗余信息可以使损失数据得以恢复,从而保障了用户数据的安全性。

 

RAID的优点:

——成本低,功耗小,传输速率高。

  • 在RAID中,可以让很多磁盘驱动器同时传输数据,而这些磁盘驱动器在逻辑上又是一个磁盘驱动器,所以使用RAID可以达到单个的磁盘驱动器几倍、几十倍甚至上百倍的速率。这也是RAID最初想要解决的问题。因为当时CPU的速度增长很快,而磁盘驱动器的数据传输速率无法大幅提高,所以需要有一种方案解决二者之间的矛盾。

——可以提供容错功能。

  • 这是使用RAID的第二个原因,因为普通磁盘驱动器无法提供容错功能,如果不包括写在磁盘上的CRC(循环冗余校验)码的话。RAID和容错是建立在每个磁盘驱动器的硬件容错功能之上的,所以它提供更高的安全性。

——价格更低。

  • RAID比起传统的大直径磁盘驱动器来,在同样的容量下,价格要低许多。

 

为了提高对于磁盘的访问速度,把在大、中型机中应用的交叉存取技术应用到了磁盘存储系统中。

 

数据分段并行交叉存取:

——数据分段就是将把一个文件的数据写到多个硬盘,而不是只写到一个盘上。因为磁盘阵列是将同一阵列的多个磁盘视为单一的虚拟磁盘(virtual disk),所以其数据是以分段的方式顺序存放在磁盘阵列中,数据按需要分段,从第一个磁盘开始放,放到最后一个磁盘再回到第一个磁盘放起,直到数据分布完毕。在整个磁盘阵列中,数据被均匀等量的分成数据块分别放在几个硬盘中。这种数据被分割开交叉存储在几个硬盘中叫做分段(Striping),而区块(Stripe Block)的大小也是可以调整的。

 

RAID巳经发展了六个级别,其级别分别是0、1、2、3、4、5及后来还出现了RAID0+1(也称RAID10) 等等。

 

二、RAID级别:

RAID 0:多磁盘并行操作

——RAID 0其实就是所谓的数据分段  Disk Striping。

——RAID 0模式一般通过2个以上的硬盘组成一个磁盘阵列来实现。在磁盘阵列子系统中,几个硬盘并行处理,在存取数据时由几个硬盘分别同时进行操作,读写各自的部分。数据按系统规定的“段”为单位依次写入多个硬盘,例如数据段1写入硬盘0,段2写入硬盘1,段3写入硬盘2等等。当数据写完最后一个硬盘时,它就重新从盘0的下一可用段开始写入,写数据的全过程按此重复直至数据写完。所以这样整个系统的性能会得以大大的提高。

 

如果说RAID 0是追求性能而放弃安全性的话,那么RAID  1就正好相反。

 

RAID 1:利用磁盘镜像

——RAID1是追求安全性而放弃性能的一种解决方案。它的做法就是通过系统数据冗余将数据进行实时的备份来完成

——RAID 1又称为Mirror或Mirroring,意译为磁盘镜像每一个磁盘都具有一个对应的镜像盘。对任何一个磁盘的数据写入都会被复制镜像盘中;系统可以从一组镜像盘中的任何一个磁盘读取数据。由于需要空间存入镜像,因此我们所能使用的空间只是所有磁盘容量总和的一半,例如总容量为80GB的两个40GB的硬盘只拥有40GB的可用储存量

 

RAID 1和RAID 0都各有优点,但如果单独使用RAID 1或RAID 0都无法满足既追求性能又可确保系统资料安全性的用户的需要。为了解决这一问题,人们又推出RAID 0+1模式。

 

RAID 0+1:磁盘分段及镜像的结合

——RAID 0+1也称之为RAID 10,是磁盘分段及镜像的结合,结合了 RAID 0及 RAID 1最佳的优点。

——它采用就是2组RAID 0的磁盘阵列互为镜像,也就是它们之间又成为了一个RAID 1的阵列。

——在每次写入数据时,磁盘阵列控制器会将数据同时写入两组"大容量阵列硬盘组"(RAID 0)中。在资源的占用上这种方式同RAID 1一样,虽然其硬盘使用率只有50%,但它却是具有最高效率的划分方式。

除此之外还有RAID 1+0,他们彼此之间的区别就是:RAID 0+1 是先分段后镜像,但RAID 1+0先镜像后分段

RAID 0+1 和 RAID 1+0的结构示意图

 

RAID 2:带海明码校验磁盘阵列。

——RAID2是为大型机和超级计算机开发的。磁盘驱动器组中的第一个、第二个、第四个……第2的n次幂个磁盘驱动器是专门的校验盘,用于校验和纠错。

——例如七个磁盘驱动器的RAID2,第一、二、四个磁盘驱动器是纠错盘,其余的用于存放数据。

——使用的磁盘驱动器越多,校验盘在其中占的百分比越少。RAID2对大数据量的输入输出有很高的性能,但少量数据的输入输出时性能不好。RAID2很少实际使用。

——由于海明码的特点,它可以在数据发生错误的情况下将错误校正,从而保证输出的正确。它的数据传送速率相当高,如果希望达到比较理想的速度,那最好提高保存校验码ECC码的硬盘,对于控制器的设计来说,它又比RAID3,4或5要简单。但是利用海明码校验必须要付出数据冗余的代价

 

RAID 3:利用奇偶校验和提升可靠

——同RAID 0一样,RAID 3也采用数据分块并行传送的方法,但有所不同的是它在数据分块之后计算它们的奇偶校验和,然后把分块数据和奇偶校验信息一并写到硬盘阵列中

——采用这种方法对数据的存取速度和可靠性都有所改善,当阵列中任一硬盘损坏时,可以利用其它数据盘和奇偶校验盘上的信息重构原始数据。

——在硬盘利用率方面,RAID 3比RAID 1要高,例如由5个硬盘组成的阵列,冗余度只有20%。

——不过,RAID 3也有缺点,由于奇偶校验信息固定存储在一个硬盘上,使该硬盘负担较重,从而产生新的瓶颈。

 

RAID4:同一磁盘的扇区一级数据交叉存储、数据校验

——RAID4对每组硬磁盘仍然要一个ECC校验磁盘,与RAID3不同的是,RAID4是在同一磁盘的扇区一级上进行数据交叉存储,因此每组磁盘有并行完成多个I/0操作的能力,从而改善了数据读写的性能。

——但是,其专用的校验磁盘在写操作时,依然要进行数据校验位的计算,使得整体性能还是达不到理想的要求,所以RAID4很少被使用

 

RAID5:无独立校验盘的奇偶校验磁盘阵列

——同样采用奇偶校验来检查错误,也称为交错校验磁盘阵列,类似于RAID4,但没有独立的校验盘,校验信息分布在各个磁盘驱动器上。这样就消除了I/0“瓶颈”现象,使得I/0多通道同时读和写都具有很好的性能。从目前的实际应用情况来看,RAID5技术是RAID等级中被用户最常选用的方式之一。

 

RAID6:带有两种分布存储的奇偶校验码的独立磁盘结构

——几乎没有进行商用。它使用一种分配在不同的驱动器上的第二种奇偶方案,扩展了RAID 5。它能承受多个驱动器同时出现故障,但是,性能尤其是写操作却很差,而且,系统需要一个极为复杂的控制器。当然由于引入了第二种奇偶校验值,所以需要N+2个磁盘,同时由于对控制器的设计变得十分复杂,用于计算奇偶校验值和验证数据正确性所花费的时间比较多

... ...

小结:

——从RAID1到RAID5的几种方案中,不论何时有磁盘损坏,都可以随时拔出损坏的磁盘再插入好的磁盘(需要硬件上的热插拔支持),数据不会受损失效盘的内容可以很快地重建,重建的工作也由RAID硬件或RAID软件来完成。

——但RAID0不提供错误校验功能,所以说它不能算作是RAID,其实这也是RAID0为什么被称为0级RAID的原因——0本身就代表“没有”。

 

三、RAID的应用:

当前的PC机,整个系统的速度瓶颈主要是硬盘。虽然不断有Ultra DMA33、DMA66、DMA100等快速的标准推出,但收效不大。在PC中,磁盘速度慢一些并不是太严重的事情。但在企业服务器和高档图形工作站中,这是不允许的,企业服务器和高档图形工作站必须能响应来自四面八方的服务请求,这些请求大多与磁盘上的数据有关,所以企业服务器和高档图形工作站的磁盘子系统必须要有很高的输入输出速率。为了数据的安全,还要有一定的容错功能。RAID提供了这些功能,所以RAID被广泛地应用在企业服务器和高档图形工作站体系中。

RAID提供的容错功能是自动实现的(由RAID硬件或是RAID软件来做)。它对应用程序是透明的,即无需应用程序为容错做半点工作。要得到最高的安全性和最快的恢复速度,可以使用RAID1(镜像);要在容量、容错和性能上取折衷可以使用RAID5。在大多数数据库服务器中,操作系统和数据库管理系统所在的磁盘驱动器是RAID1,数据库的数据文件则是存放于RAID5的磁盘驱动器上。

 

End... ...

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/weixin_46013401/article/details/111089262

Stanford Pintos Project2源代码分析&实现思路-爱代码爱编程

0. 引言 本文是对以下仓库中Pintos Project2源代码的思路分析,截取了重要的核心函数,以方便读者理解整个的实现思路。仅供参考,完成作业记得自己深入理解噢~ https://github.com/NicoleMayer/pintos_project2 1. 打印进程终结信息 1.1 process_exit void pro

第四章-存储器管理 (地址变换必考!SWUST操作系统期末复习试题+历届真题)-爱代码爱编程

1.何谓装入时动态链接?装入时动态链接方式有何优点? 装入时动态链接是指用户将源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的一种链接方式,即在装入一个目标模块时,若发生一个外部的模块调用事件,将引入装入程序去相应的外部目标模块,把它装入内存中,并修改目标模块中的相对地址。 优点:①便于修改和更新②便于实现对目标模块的共享2.何谓运行时动

图文:console terminal tty shell 这些概念的历史渊源-爱代码爱编程

在很久以前,人们使用的电脑是可以通过一些按键直接控制比如寄存器等底层硬件设备的。这些按键所在的操作面板就是控制台(console)。 简单的说那时候没有操作系统帮助你控制输入输出,控制寄存器内存,所以全是手动操作。 后来为了不局限于距离(脑补的…),人们开始使用电缆去连接计算机,这时候电缆的开始端就是这台计算机,另一边当然就是终端(Terminal)。

第2章:操作系统介绍-爱代码爱编程

1. 虚拟化CPU #include <stdio.h> #include <stdlib.h> #include "common.h" int main(int argc, char *argv[]) { if (argc != 2) { fprintf(stderr, "usage: cpu <string&

Python网络编程之六:操作系统发展史及网络编程总结-爱代码爱编程

Python网络编程之六:操作系统发展史及网络编程总结 现代的计算机系统主要是由一个或者多个处理器,主存,硬盘,键盘,鼠标,显示器,打印机,网络接口及其他输入输出设备组成。 现代计算机系统是一个复杂的系统。 一、为什么要有操作系统 程序员无法把所有的硬件操作细节都了解到,管理这些硬件并且加以优化使用是非常繁琐的工作,这个繁琐的工作就是操作系统来干的

【自制操作系统】一、搭建开发环境-爱代码爱编程

开发环境 平台: Ubuntu 20.01.1 LTSC语言编译器GCC汇编语言编译器NASMBochs虚拟机1、GCC和NASM的安装 $ sudo apt install gcc $ sudo apt install g++ $ sudo apt install nasm 或者: $ sudo apt install build-essent