小Q:如果学校不能在课堂中给予学生更多成功的体验,他们就会以既在学校内

      也在学校外都完全拒绝学习而告终。                    —— 林格伦


=======================================================================

RAID:独立磁盘冗余数组( Redundant Array of Independent Disks)

       旧称廉价磁盘冗余数组( Redundant Array of Inexpensive Disks),简称硬盘阵列。

       其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至

       超过一个价格昂贵、容量巨大的硬盘。

特点:一是速度、二是安全
       通过镜像或校验操作提供容错能力;

       多个磁盘组织在一起作为一个逻辑卷提供磁盘跨越功能;增强数据集成度

       把数据分成多个数据块并行写入/读出多个磁盘以提高访问磁盘的速度;增加处理量或容量

等级:NRAID,JBOD,RAID0,RAID1,RAID1+0,RAID3,RAID5等,常使用的是RAID5和RAID

       每种等级都有其理论上的优缺点,不同的等级在两个目标间取得平衡,分别是增加数据可靠性

       以及增加存储器(群)读写性能。

      

分类:硬件RAID,用RAId接口卡来实现;需要内核支持其驱动,设备显示为SCSI设备,代号/dev/sd*

       软件RAID,用内核中的MD(multiple devices)模块实现,该类设备在/etc/下表示为:md*;

       在现在的RH 5版本中使用mdadm工具管理软RAID;但始终比不上硬件。

存储:简单来说就是,磁盘阵列的第一个磁盘分段是校验值,第二个磁盘至后一个磁盘再折回第一个

       磁盘的分段是数据,然后第二个磁盘的分段是校验值,从第三个磁盘再折回第二个磁盘的分段是

       数据,以此类推,直到放完数据为止。这样数据与校验值的循环分离存储就可以达到一定的故障

       重建功能;但raid-5的控制较复杂,且计算大量的校验码,可能给系统造成额外计算的负担


查看:

有时想知道服务器上有几块磁盘,如果没有做raid,则可以简单使用fdisk -l  就可以看到。

但是做了raid呢,这样就看不出来了。那么如何查看服务器上做了raid?

软件raid:只能通过Linux系统本身来查看       cat /proc/mdstat

         可以看到raid级别,状态等信息。

硬件raid:最佳的办法是通过已安装的raid厂商的管理工具来查看,有cmdline,也有图形界面。

          如Adaptec公司的硬件卡就可以通过下面的命令进行查看:

         # /usr/dpt/raidutil -L all             可以看到非常详细的信息。

当然更多情况是没有安装相应的管理工具,只能依靠Linux本身的话一般我知道的是两种方式:

        # dmesg |grep -i raid

        # cat /proc/scsi/scsi

        显示的信息差不多,raid的厂商,型号,级别,但无法查看各块硬盘的信息。


举例说明:

# fdisk -l 

Disk /dev/sda: 145.9 GB, 145999527936 bytes
255 heads, 63 sectors/track, 17750 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
 Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14       17750   142472452+  8e  Linux LVM

# cat /proc/scsi/scsi

Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: SEAGATE  Model:  ST3146356SS      Rev: HS09
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi0 Channel: 00 Id: 01 Lun: 00
  Vendor: SEAGATE  Model: ST3146356SS      Rev: HS09
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi0 Channel: 01 Id: 00 Lun: 00
  Vendor: Dell     Model: VIRTUAL DISK     Rev: 1028
  Type:   Direct-Access                    ANSI SCSI revision: 05

通过以上信息可以看出,该服务器有两块磁盘。品牌是希捷的,磁盘代号为 ST3146356SS,

如果你熟悉细节磁盘的代号命名规则,你会轻易判定该磁盘大小为146G 。再根据fdisk 得

出的结果可以判定,该服务器是拿两块146G的硬盘做的raid1.



基本分类:

JBOD

(JBOD, Just a Bunch Of Disks)在某些分类上,JBOD并不算是RAID的等级。只是将多个硬盘空间合并成一个大的逻辑硬盘,没有错误备援机制。数据的存放机制是由第一颗硬盘开始依序往后存放,即操作系统看到的是一个大硬盘(由许多小硬盘组成的)。但如果硬盘损毁,则该颗硬盘上的所有数据将无法救回。若第一颗硬盘损坏,通常无法作救援(因为大部分文件系统将磁盘分区表(partition table)存在磁盘前端,即第一颗),失去磁盘分区表即失去一切数据,若遭遇磁盘阵列数据或硬盘出错的状况,危险程度与RAID 0相当。


RAID 0

将多个磁盘合并成一个大的磁盘,不具有冗余,并行I/O,速度最快。RAID 0亦称为带区集。它是将多个磁盘并列起来,成为一个大磁盘。在存放数据时,其将数据按磁盘的个数来进行分段,然后同时将这些数据写进这些盘中,所以在所有的级别中,RAID 0的速度是最快的。但是RAID 0没有冗余功能,如果一个磁盘(物理)损坏,则所有的数据都会丢失,危险程度与JBOD相当。

理论上越多的磁盘性能就等于“单一磁盘性能”ד磁盘数”,但实际上受限于总线I/O瓶颈及其它因素的影响,RAID性能会随边际递减,也就是说,假设一个磁盘的性能是50MB每秒,两个磁盘的RAID 0性能约96MB每秒,三个磁盘的RAID 0也许是130MB每秒而不是150MB每秒,所以两个磁盘的RAID 0最能明显感受到性能的提升。


但如果是以软件方式来实现RAID,则磁盘的空间则不见得受限于此(例如Linux Software RAID),通过软件实现可以经由不同的组合而善用所有的磁盘空间。


RAID 1

两组以上的N个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,另外写入速度有微小的降低。除非拥有相同数据的主磁盘与镜像同时损坏,否则只要一个磁盘正常即可维持运作,可靠性最高。RAID 1就是镜像。其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。因为有镜像硬盘做数据备份,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的。但无论用多少磁盘做RAID 1,仅算一个磁盘的容量,是所有RAID上磁盘利用率最低的一个级别。


RAID 2

这是RAID 0的改良版,以汉明码(Hamming Code)的方式将数据进行编码后分区为独立的比特,并将数据分别写入硬盘中。因为在数据中加入了错误修正码(ECC,Error Correction Code),所以数据整体的容量会比原始数据大一些,RAID2最少要三台磁盘驱动器方能运作。


RAID 3

采用Bit-interleaving(数据交错存储)技术,它需要通过编码再将数据比特分区后分别存在硬盘中,而将同比特检查后单独存在一个硬盘中,但由于数据内的比特分散在不同的硬盘上,因此就算要读取一小段数据资料都可能需要所有的硬盘进行工作,所以这种规格比较适于读取大量数据时使用。


RAID 4

它与RAID 3不同的是它在分区时是以区块为单位分别存在硬盘中,但每次的数据访问都必须从同比特检查的那个硬盘中取出对应的同比特数据进行核对,由于过于频繁的使用,所以对硬盘的损耗可能会提高。(Block interleaving)


RAID 5

RAID Level 5 是一种储存性能、数据安全和存储成本兼顾的存储解决方案。它使用的是Disk Striping(硬盘分区)技术。RAID 5 至少需要三颗硬盘, RAID 5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。 RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利用率要比镜像高。RAID 5具有和RAID 0相近似的数据读取速度,只是因为多了一个奇偶校验信息,写入数据的速度相当的慢,若使用“回写高速缓存”可以让性能改善不少。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较便宜。


RAID 6

与RAID 5相比,RAID 6增加了第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。但RAID 6需要分配给奇偶校验信息更大的磁盘空间,相对于RAID 5有更大的“写损失”,因此“写性能”非常差。较差的性能和复杂的实作方式使得RAID 6很少得到实际应用。

同一数组中最多容许两个磁盘损坏。更换新磁盘后,数据将会重新算出并写入新的磁盘中。依照设计理论,RAID 6必须具备四个以上的磁盘才能生效。

可使用的容量为硬盘总数减去2的差,乘以最小容量,公式为Size=(N-2)*min(S1,S2,S3...Sn),同理,数据保护区域容量则为最小容量乘以2。

RAID 6在硬件磁盘阵列卡的功能中,也是最常见的磁盘阵列等级。


RAID 7

RAID 7并非公开的RAID标准,而是Storage Computer Corporation的专利硬件产品名称,RAID 7是以RAID 3及RAID 4为基础所发展,但是经过强化以解决原来的一些限制。另外,在实现中使用大量的高速缓存以及用以实现异步数组管理的专用即时处理器,使得RAID 7可以同时处理大量的IO要求,所以性能甚至超越了许多其他RAID标准的实做产品。但也因为如此,在价格方面非常的高昂。


RAID 10/01

RAID 10/01细分为RAID 1+0或RAID 0+1。

RAID 1+0是先镜射再分区数据,再将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作。

RAID 0+1则是跟RAID 1+0的程序相反,是先分区再将数据镜射到两组硬盘。它将所有的硬盘分为两组,变成RAID 1的最低组合,而将两组硬盘各自视为RAID 0运作。

性能上,RAID 0+1比RAID 1+0有着更快的读写速度。

可靠性上,当RAID 1+0有一个硬盘受损,其余三个硬盘会继续运作。RAID 0+1 只要有一个硬盘受损,同组RAID 0的另一只硬盘亦会停止运作,只剩下两个硬盘运作,可靠性较低。

因此,RAID 10远较RAID 01常用,零售主板绝大部份支持RAID 0/1/5/10,但不支持RAID 01。


RAID 50

RAID50也被称为镜象阵列条带,由至少六块硬盘组成,像RAID0一样,数据被分区成条带,在同一时间内向多块磁盘写入;像RAID5一样,也是以数据的校验位来保证数据的安全,且校验条带均匀分布在各个磁盘上。其目的在于提高RAID5的读写性能。


RAID 53

它拥有一个镜射条带数组,硬盘里其中一个条带就是一个是由3组以上的RAID 5组成RAID 3硬盘阵列。


在上面介绍的众多RAID等级中,RAID2、3、4较少实际应用,因为RAID5已经涵盖了所需的功能,因此RAID2、3、4大多只在研究领域有实现,而实际应用上则以RAID5为主。RAID4有应用在某些商用机器上,像是NetApp公司设计的NAS系统就是使用RAID4的设计概念。




详细资料:http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=7134&highlight=RAID 


wKiom1YnjDaixWhbAAFED80gIqk355.jpg