存储方案目前选择性也比较少,基本上被几大厂商垄断,所谓的方案比较实际上也只是停留在价格上,区别其实不是非常明显,并且各大厂商也都提供从高端到低端的全套产品。了解这些组合方案通常是一种平衡艺术。这里我们考虑另一个问题,就是如何将数据保存在我们前面说到存储介质如硬盘或磁带上。我们知道单个硬盘容量毕竟有限,那么要想获得大容量服务,就必须安装多个硬盘。那么对一个文件来说,如果将数据保存在不同硬盘上,也就是跨盘存储。显然我们还需要一种技术能够将数据保存到多个磁盘上,并且还能确保从服务器文件视角看过去不需要关注它放在哪一个硬盘上。这就是目前在磁盘的三个关键技术:

1)Disk spanning 也就是数据跨盘技术,使多个硬盘像一个硬盘一样工作,可以最大限度的利用磁盘空间,但是没有改善磁盘的可靠性和读写速度,常用应用是JBOD(JUST A BUNCH OF DISKS),只是逻辑上把几个物理磁盘一个一个串联在一起,实现了数据跨盘保存,但并不提供数据安全保障,也就是盘面之间不存在关联。

存储基本概念(2)_存储 

2)Disk stripping 磁盘条带化,就是将数据按一定大小分成多个数据块,这些数据块可以被分别存放在不同的物理盘上。系统在从特定硬盘读取数据时可以通知道下个目标盘准备数据,觉见应用是RAID(Redundant array of independent disks),独立冗余磁盘阵列,最早它实际上叫廉价磁盘阵列(Redundant array of inexpensive disks)。这是目前适用服务器存储数据领域采用最多的技术。RAID 是一种把多个独立硬盘按不同方式组合起来形成一个磁盘组,从而提供比单个硬盘更高的存储性能和提供数控安全保障技术。它是由美国加州伯克利大学D.A.Patterson教授于1987年提出。

存储基本概念(2)_休闲_02 

基于上面磁盘条带化的技术又发展出很多其它技术,它包括磁盘数据镜像、磁盘数据CRC检验及磁盘热插拨等。这些技术形成了RAID的明确标准级别。这些级别要求对磁盘带状数据进行特定行为划分管理。目前分为0、1、2、3、4、5、6、7、10(1和0组合)、01(0和1的组合)、30(3和0组合)、50(0和5组合)等12种级别。但常见应用也就几种几级别。实现RAID级别通常分为两种,一种是软件实现如LINUX中mdadm,另一种是硬件实现(一般比较高端)。以下就几种常见的RAID级别简介如下:

a)RAID0 没有容错设计的条带硬盘阵列(Striped Disk Array without Fault Tolerance),以条带形式将RAID组的数据均匀分布在各个硬盘中。如下图所示:

存储基本概念(2)_职场_03

其优点就是数据在被分块后并行磁盘读写,提高了读写效率,但缺少冗余,没有CRC检验,不适用于关键数据,最少需要两块硬盘。通常与其它级别进行组合使用。

b)RAID1 又称磁盘镜像,数据同时一致写到主硬盘与镜像硬盘。优点是提供了很高的数据安全性达到100%冗余。缺点就是利用率低,只能50%利用,性能上因为重复写相对单个来说没有提高。也最少需要2块硬盘。如下图所示:

存储基本概念(2)_职场_04

c)RAID2 采用早期的海明码检验,这样第1个、第2个、第4个。。。第2的N次幂个硬盘都是校验盘。这种阵列方式导致利用率奇低,目前已不再使用。如下图所示:

存储基本概念(2)_存储_05

d)RAID3 带有校验的并行数据传输阵列。数据条带化分布在数据盘中,同时使用专用校验硬盘存放校验数据。优点是数据盘与校验盘独立,读写性能高,但校验盘只有一个,是瓶颈。一旦有错,校验计算量上升导致性能下降。最少需要3块硬盘。如下图所示:

存储基本概念(2)_存储_06

e)RAID4 是带有共享校验硬盘的独立数据盘,与RAID3类似,但数据写入顺序是按盘,不是按带。目前较少使用。因为读写性能奇差。如下图所示:

存储基本概念(2)_存储_07

f)RAID 5 与RAID3类似,只是检验数据均匀分布在各数据硬盘上,也就是说每块盘都有数据与校验信息,这些信息按条块存储,但是同一块的数据与校验是分在不同盘上的。这种方式是目前比较常用的方式,它优点是读速度高,写速度中等,同时也能提供一定的数据安全。缺点是只要有坏盘,就会导致性能下降。最少需要3块硬盘。如下图所示:

存储基本概念(2)_职场_08

g)RAID6 是带有两个独立分布式奇偶检验方案的独立数据硬盘,提出这个方案是为实现前面RAID3如果校验盘失效那就无法保证数据可靠。所以RAID6提供两级冗余,对每个条带上的数据实行两次检校计算。目前还未标准化。如下图所示:

存储基本概念(2)_休闲_09

h)RAID10是两级存储方案,第一组是RAID1镜像对,第二级是RAID0。这种组合方案目前应用比较广,它是将镜像与条带组合,达到较高的读写速度,可以允许一半硬盘坏。缺点也就是RAID1缺点,利用率低。如下图所示:

存储基本概念(2)_存储_10

i)RAID0+1是前一个反过来。也是两级,只是第一级是RAID0,第二级是RAID1。这两者有什么区别呢?主要就是想利用RAID1的读写速度。通常RAID0+1在无故障硬盘前提下比RAID10快。如下图所示:

存储基本概念(2)_存储_11

j)RAID50也是两级存储,不过采用的是RAID5和RAID0进行两级组合。第一级RAID5第二级RAID0,这个实现起来比较麻烦。最少需要6个磁盘。如下图所示:

存储基本概念(2)_职场_12

综上所述,每一种RAID级别所适用的要求是不一样的,不过目前也就几种常见,如RAID10和RAID5及RAID1等。如下图所示是一些比较表:

存储基本概念(2)_休闲_13

从上表中可以看出目前以RAID5作为基本方案的比较多,因为在RAID5前提下可以进行磁盘阵列的热插拨来替换一些坏盘,也只有这种方式下能实现热备盘替换。存储领域目前绝大部分存储设备都是磁盘阵列,磁盘阵列包括两个主要部件:控制器和磁盘柜。如图所示:

存储基本概念(2)_存储_14

如上图所示控制器上一般都有缓存设备,通过这些缓存可以实际读写I/O性能的提升,为什么呢,因为它采用了回写和透写机制加速了I/O功能。

存储基本概念(2)_休闲_15

那么磁盘阵列怎么样与主机相边呢?这就是采用阵列卡。目前阵列卡是一种适配卡,有IDE RAID卡和SCSI RAID、FC RAID、ISCSI卡,有些地方称之为HDA卡。IDE阵列卡主要是用在PC机上,而SCSI RAID卡一般是服务器上。有了卡(或者光纤交换机)和磁盘阵列那么怎么配置呢?这个不同的服务器配置方式不一样,并且很多厂家也提供了可视化的配置工具。在LINUX下也提供了一个工具mdadm进行配置。使用mdadm是一种什么方式的阵列呢?它是软件阵列就是假如你没有阵列卡,你有多个硬盘,你想让它成为阵列,那就使用这个软件,它是LINUX自带的内核模块。