当前位置:首页>技术交流>RAID及磁盘阵列技术分析
RAID及磁盘阵列技术分析

RAID及磁盘阵列技术分析

1、JBOD

JBOD(Just a Bunch Of Disk) 按字面的意思翻译,就是一堆裸磁盘的意思,操作系统直接通过存储控制卡识别到这些磁盘,每个物理磁盘在操作系统中只对应一个磁盘设备。可以通过操作系统实现RAID0,1。这是磁盘最简单也是最原始的使用方法,JBOD方式因为没有任何控制器,因此成本低廉,通常用与安装操作系统。

2、RAID磁盘阵列

外置存储大部分以磁盘阵列的形式出现,磁盘阵列是指将JBOD与RAID控制设备集成在一起,把磁盘用冗余(至少两个)的RAID控制器管理起来,再连接小型机。由于RAID控制器可以完成磁盘的管理(添加、删除、更换硬盘)、RAID的计算和读写、数据缓存等操作,小型机只需考虑数据读写,而不用考虑数据冗余校验、数据在磁盘上的分布,以及故障盘处理等操作,因此存储子系统性能大幅度提高,从操作系统层面来看,管理更简单(而存储层面更复杂了)。RAID磁盘阵列也可以提供附加的功能,例如LUN分割,LUN Masking等

LUN分割的含义是将一个RAID Group(做成一个RAID的一组磁盘),再进行切分,分为几个能独立的逻辑磁盘,分别指派给不同的小型机使用。如果没有LUN分割技术,一个RAID组合只能对应操作系统中的一个磁盘,由于RAID组可能有十几个磁盘,存储空间作为一个磁盘分给一台小型机使用非常不便。

LUN Masking的含义是在进行LUN分割和逻辑盘指派的时候,可以根据需要设定安全策略,允许或禁止一台小型机访问这个LUN逻辑磁盘。存储不会响应被屏蔽掉的的请求。

3、RAID技术

目前有许多种RAID(Redundant Array of Independent Disk,冗余的独立磁盘阵列)技术,就是通过管理器将一组磁盘组织起来使用的技术。

RAID 0条块化数据,将条块分布于RAID组中的各个磁盘中,以达到最高的读写速度。但是此技术没有数据冗余,不能提供数据保护。假设条块化大小为64KB,共计有8块磁盘组成的RAID0阵列,则512KB的数据可以分为8份,每份64KB,同时开始写入8块磁盘。这样尽管完成全部写操作的时间比8块中最短的稍长,但应当远远小于8倍的单块数据写入时间,因此读写性能大大提高。由于数据分布于每块磁盘中,任何一块磁盘发生故障,都会导致全部数据的一致性丧失而不可用。

RAID1也被称为镜像技术(mirroring)。需要偶数块磁盘,(至少两块),将写入的数据保存为相同的两份,分别存放在两个磁盘上,没有条块化,只有部分提高性能,因为可以同时从两块硬盘中读数据,写性能与单块磁盘相同,实际上稍有下降。此技术提供数据冗余度较高的保护,性能也可以接受,但在磁盘单盘容量很大的时候,不建议采用。另外RAID1几乎不需要进行任何数据计算,对处理器的压力,也比较小。

RAID2使用条块化技术,另外有单独的一块或多块磁盘来进行错误校验(ECC)

RAID3也使用条块化技术,单独使用一块硬盘做为校验盘,将数据先做XOR运算,产生Parity后,再将数据和Parity Data并行写入到RAID组中的磁盘驱动器中。因此具有并行存取模式的优点和缺点。具体来说,RAID3每进行一笔数据传输,都要更新整个Stripe,即每一个成员磁盘驱动器相对位置的数据都一起更新,因此不会发生需要把部分磁盘驱动器现有的数据读出来,与新数据做XOR运算,再写入的情况。这种情况在Raid4和Raid5中会发生,称之为Read、Modify、Write Process即读、改、写过程。因此Raid3的顺序写入性能是最好的。

但是由于传输每笔数据都要更新整个Stripe,因此,Raid3的Parity Disk并不会如Raid4的Parity Disk,会造成存取的瓶颈。Raid3的并行存取模式,需要Raid控制器的特别功能支持,才能达到与磁盘驱动器的同步控制,而且由于目前的磁盘阵列都采用Cache的Write Back回写方式,上术写入性能的优势已经不明显,因此RAID3的应用,也越来越少,逐渐淡出市场。

RAID4采取独立存取方式,同时一单一专属的Parity Disk来存放Parity Data,在写入数据时,容易造成瓶颈,没有广泛使用。

Raid5采取独立存取的方式 ,但是其Parity Data分散写入到各个成员磁盘驱动器中。因此Raid5除了具备Overlapped I/O(同时并行处理多个I/O请求)多任务能力之外,避免产生类似Raid4单一专属Parity Disk的写入瓶颈。一般来说,任何一次单块数据的写操作只涉及两块磁盘,读写操作可以在多块磁盘上同时进行,因此提高了读写操作的并行能力。Raid5通过校验数据可以反向生成原数据。Raid5至少需要3块磁盘,通常使用5到8块磁盘。比较适合于多用户系统,不需要太高的写操作性能,并且对数据的保护也要求不太高的情况下。一个Raid组合中只能允许一个磁盘发生故障而不丢失数据。一个单一的写更新在Raid 5 保护方式下需要6个步骤,包括4个独立的I/O操作(2个写,2个读)。具体步骤如下:

1)Read old data,读老数据

2)Read corresponding parity,读校验位数据

3)XOR old and new data to determine the difference,比较老数据

4)XOR parity with difference to generate new parity,计算出新的校验位数据

5)Write new data to disk,写新数据到磁盘

6)Write new parity to disk,写校验位到磁盘

这就是读写算过程,写性能较低,为了提高Raid5的写入性能,Raid5都要配备足够多的Cache,用于写缓存数据,等磁盘空闲的时候,在将数据回写到磁盘。另外,如果Raid5中的某块磁盘发生故障,则任何写操作都需要将所有磁盘上的对应条块读出,计算故障盘上的数据,再继续算写过程,每次I/O操作需要等所有磁盘上的数据读出都读出后才能继续。Raid组中的磁盘越多,时间越长,这就是Raid5的写惩罚现象。

Raid5的成员磁盘驱动器越多,其性能就越高。这是因为一个磁盘驱动器在同一时间内,只能执行一条命令。但反过来,Raid组中的磁盘驱动器越多,发生故障的概率就越高。因此Raid5通常配合另一个技术-Hot Spare热备盘技术使用,当Raid组中出现故障盘时,系统立刻由其他平时闲置的磁盘进行接管,重新生成数据,把写惩罚的时间限制在单块盘完成全盘复制的时间之内。由于单盘复制的时间和磁盘容量、系统当时负载情况有关,单盘容量越大,负载越重,完成接管的时间越长,通常一块146的磁盘需要两个小时左右才能完成接管替换。

RAID6与RAID5很类似,但是提供了第二份校验数据,也交错分布在每块磁盘时间行,适合于对保护要求更高的环境中。

RAID7使用额外的一个操作系统内核做为控制器,通过缓存和高速总线提高系统性能,也称智能存储。

RAID10使用RAID 1同样的镜像方式,不同的数据会以条块的方式分布于盘组上,即RAID10可以看做是RAID0和RAID1的组合,这样同时具有他们的优点和缺点。先做RAID0后做RAID1或者相反,结果都没多大差别,这两种情况都叫做Raid10

 

代理产品
本月热销产品