网络存储技术——独立冗余磁盘阵列(RAID)

RAID(redundant array of independent disks)开始于20世纪80年代美国加州大学伯克利分校的一个研究项目。不过,那时RAID是廉价冗余磁盘阵列的简称。近年来,由于大部分磁盘驱动器都可谓是“廉价”的,RAID咨询委员会决定用“独立”替代“廉价”一词,但这只是名字改变,实质内容并没有改变。

RAID由RAID控制器和多个独立的磁盘驱动器组成,简称为磁盘阵列。其外部接口为FC、iSCSI、SAS、SATA。从外部看来,就像单个大容量的虚拟磁盘。

##RAID的内部I/O结构

分为下列三种:

  • 单控制器/单磁盘接口
  • 双控制器/单磁盘接口
  • 双控制器/双磁盘接口

##RAID的基本特性

  • 容量可扩展:可用容量是成员磁盘容量的50%~90%
  • 可管理:对用户而言,只是单个虚拟磁盘。
  • 高性能:通过分块访问成员磁盘提高了读写性能。分块访问又分为并行访问和独立访问两种方式。
  • 并行访问:成员磁盘在同一时间执行相同的、短时间的操作。
  • 独立访问:成员磁盘在同一时间可以执行独立的I/O操作。
  • 可靠性:通过数据冗余可以承受成员磁盘的失效。数据冗余又分为镜像冗余和校验冗余。

##RAID的数据组织

###分区和阵列

一组地址连续的成员磁盘存储块就可以是一个分区。单个成员磁盘可以被划分成多个分区。不同成员磁盘上的多个分区可被组织成阵列。一个阵列中的分区的大小应相等。

###分块和分条

一个分区可被划分为多个大小相等、地址相邻的分块。同一阵列中分块的大小相同。

分条是磁盘阵列中多个分区上的一组位置相关的分块。即,每个分区上的第一个分块属于第一个分条,每个分区上的第二个分块属于第二个分条,以此类推。

阵列中的分条被映射为虚拟磁盘中连续的块。

##RAID级别

###RAID 0

无数据校验的数据分条化技术。将所有硬盘条带化后组成大容量的存储空间,将数据分散存储在所有硬盘上,以独立访问方式实现多块硬盘的并发读写。

具有低成本、极高读写性能、高存储空间利用率的特性。

适用于对速度要求高、对可靠性要求不高的应用。例如Video/Audio信号等。

###RAID 1

是两块硬盘数据呈完全镜像的技术。有以下特点:

  • 任何一个磁盘都有一个对应的镜像盘。一对镜像盘的写操作同步。读操作可以针对一对镜像盘中任何一个。
  • 磁盘容量是成员磁盘容量总和的一半。
  • 只要任何一对镜像盘中至少一块硬盘可以使用,系统就可以正常工作。

一块硬盘出现故障的概率为P。含有4块硬盘的RAID 1出现故障的概率是多少?

###RAID 3

  • 使用一个专门的校验盘存放所有的校验值,把数据分散到其余的磁盘上,采用并行访问分块方式。
  • 某个数据磁盘失效更换后,其上的数据信息必须借助校验信息和其它数据磁盘上的信息建立。
  • 校验磁盘失效更换后,其上的数据信息必须借助所有数据磁盘上的信息建立。

###RAID 5

  • 校验数据被分布在所有磁盘上,采用独立访问分块方式。
  • 对于外部不同的写操作,其数据和校验数据可能同时发生在完全不同的磁盘上,消除了单个校验盘带来的瓶颈。
  • 可以支持很大的磁盘数,是市场上最常见的产品。

###RAID 6

保证即使阵列中出现两个磁盘故障,阵列仍然能够工作。

###RAID组合级别

  • RAID 0+1:先用物理硬盘建立多个镜像对(RAID1),在此基础上做条带化(RAID0)。

  • RAID10:先用多个物理磁盘做条带化(RAID0),产生多个虚拟磁盘。用虚拟磁盘建立镜像对(RAID1)。

关于RAID组合级别,我会在另外的一篇文章中详细说明。