Linux RAID廉价磁盘冗余阵列

磁盘接口的性能决定着磁盘数据传输的速率,一般磁盘设备接口的读写标准如下:


  •  IDE: 133Mbps
  • SATA: 300Mbps, 600Mbps, 6Gbps
  • USB 3.0: 480Mbps
  • SCSI: UltraSCSI, 320Mbps

正如我们所知道的,不同的硬盘数据存储的性能和内部机制存在着大大小小的差异:

IDE

l  指把控制器与盘体集成在一起的硬盘驱动器,我们常说的IDE 接口,也叫ATA接口(并行);

l  并行双通道;

SATA

u  SATA是Serial ATA的缩写,即串行ATA。它是一种电脑总线,主要功能是用作主板和大量存储设备(如硬盘及光盘驱动器)之间的数据传输之用。

u  串行高传输速率;

u  支持热插拔;

u  采用了点对点传输协议,每一个硬盘与主机通信时都独占一个通道,系统中所有的硬盘都是对等的,因此,在串行ATA中将不存在“主/ 从”盘的区别,用户也不用再费事去设置硬盘的相关跳线了。

SCSI

  一种总线型的系统接口,每个SCSI总线上可以连接包括SCSI控制卡在内的8/16个SCSI设备;

  支持冗余磁盘阵列(RAID)等多种设备

  SCSI磁盘自身携带有类似与CPU的小型控制设备,可以解放CPU,结合独立总线使得SCSI设备的CPU占用率很低,大大的提高传输速率;

  每个SCSI ID上最多有32个LUN,一个LUN对应一个逻辑设备;

窄SCSI接口(8 target)

Linux RAID廉价磁盘冗余阵列_第1张图片

控制器端也占用一个target


CPUSCSI设备发送指令/存储数据时,SCSI设备怎么知道目标磁盘是哪一个?

CPU发来的数据的首部包含了目标设备的targetID和LUN ID等控制信息,通过控制器的解释后,控制器会一步步将该指令/数据定向到目标设备。


在小型计算机/服务器中,它们可以妥妥的满足用户/系统的需求;但是对于大型公司的数据存储,IO存取的速率会远远超过单个磁盘提供的的标准性能,这就这就形成了一个IO瓶颈。那么,这种瓶颈该如何打破呢?

RAID应运而生,它是指将多个独立的物理硬盘按照不同的方式组合起来,形成一个虚拟的硬盘;

 Linux RAID廉价磁盘冗余阵列_第2张图片

如上所示,系统内部中的IDE磁盘性能较低,在无法满足系统正常运行所需需求的情况下,就需要对磁盘性能进行提升。特别是对于一些公司内部重要的服务器,正在运行中,但是又不可能停下来,换一块更大的硬盘,然后继续运行,这样的话,公司的损失是巨大的;那么只有在系统运行的情况下进行冗余技术和热备、热换

我们可以在计算机的外部提供一个控制器,该控制器支持SCSI接口,通过SCSI接口的总线,我们可以接上更多的硬盘,这些硬盘是并行的,所以会大大提高传输速率;

但在与CPU来看,外部磁盘设备相当于一个整体,数据存储是通过控制器2来实现分发和镜像的。

 

根据RAID组织的不同方式可以将RAID分成不同的级别:

RAID 0:条带

l RAID0是以条带的形式将数据均匀分布在阵列的各个磁盘上

Linux RAID廉价磁盘冗余阵列_第3张图片 

 

RAID 1:镜像

RAID1以镜像为冗余方式,对虚拟磁盘上的数据做多份拷贝,放在成员磁盘上

Linux RAID廉价磁盘冗余阵列_第4张图片


RAID2:

采用校验冗余

à  把数据分散为位或块,加入汉明码,间隔写入到磁盘阵列的每个磁盘中

à  在成员磁盘上的地址都一样

采用了并行存取方式

花费大,成本昂贵

 

RAID 3:

数据块被分为更小的块并行传输到各个成员磁盘上,同时计算XOR校验数据存放到专用的校验磁盘上

Linux RAID廉价磁盘冗余阵列_第5张图片 


RAID 4:校验码

数据被分为更大的块并行传输到各个成员磁盘上,同时计算XOR校验数据存放到专用的校验磁盘上

Linux RAID廉价磁盘冗余阵列_第6张图片

修复:假如其中一块磁盘坏掉了,可以使用一块新的磁盘代替坏掉的磁盘,并根据校验磁盘计算出坏掉磁盘的数据,并将数据写入新的磁盘,这个过程就叫磁盘修复

如果在磁盘修复过程中出现了差错,导致磁盘修复失败,那么磁盘中的数据将彻底丢失,永远无法找回

冗余能力:坏掉一块磁盘,可以修复;同时坏掉2+块磁盘,将无法修复

 

RAID 5:轮流校验码

采用独立存取的阵列方式,校验信息被均匀的分散到阵列的各个磁盘上

Linux RAID廉价磁盘冗余阵列_第7张图片

冗余能力:坏掉一块磁盘,可以修复;同时坏掉2+块磁盘,将无法修复

 

RAID 6:

带有两种分布存储的检验信息的磁盘阵列,它是对RAID5的扩展,主要是用于要求数据绝对不能出错的场合,使用了二种奇偶校验方法,需要N+2个磁盘

  常用的RAID6技术:

l  RAID6 P+Q

l  RAID6 DP

Linux RAID廉价磁盘冗余阵列_第8张图片

Linux RAID廉价磁盘冗余阵列_第9张图片

RAID 7:Jbod

将多个小型磁盘叠加,组合成一个更大的磁盘

不提供数据校验和镜像备份

对数据存储速率没有提升,对数据的可用性也没有保障

Linux RAID廉价磁盘冗余阵列_第10张图片
冗余能力:坏掉一块磁盘,所有的数据都将丢失

 

RAID 10:
先镜像,再条带化

冗余能力:左右两边同时各坏掉至少一个编号不一致的磁盘,数据完全丢失

                     若左边/右边的磁盘全部坏掉了,可以通过相应磁盘的镜像恢复

Linux RAID廉价磁盘冗余阵列_第11张图片

Linux RAID廉价磁盘冗余阵列_第12张图片

RAID 01:

先条带化,再镜像

Linux RAID廉价磁盘冗余阵列_第13张图片

冗余能力:每组镜像磁盘各坏掉一个,数据可以恢复

                     假如其中一组中的所有磁盘都坏掉了,数据将完全丢失

 

RAID 50:

RAID5和RAID0的结合,先实现RAID5,再条带化

Linux RAID廉价磁盘冗余阵列_第14张图片

冗余能力:
最强

 

常用RAID级别比较:

RAID 0

RAID 1

RAID 5

RAID JBOD

性能提升: 读,写

               冗余能力(容错能力): 无

               空间利用率:n

               至少2块盘

 

性能表现:写性能下降,读性能提升

               冗余能力:有

               空间利用率:1/2

               至少2块盘

性能表现:读,写提升

               冗余能力:有

               空间利用率:(n-1)/n        

               至少需要3块

 

性能表现:无提升

               冗余能力:无

               空间利用率:100%             

               至少需要2块

RAID 01

RAID 10

RAID 50

 

性能表现:读、写提升

               冗余能力:有

               空间利用率:1/2

               至少需要4块

 

性能表现:读、写提升

               冗余能力:有

               空间利用率:1/2

               至少需要4块

性能表现:读、写提升

               冗余能力:有

               空间利用率:(n-2)/n

至少需要6块

 

 


硬件RAID和软件RAID:

通常情况下所说的RAID指的是硬件RAID,软件RAID是指模拟RAID创建的软件设备;

硬件RAID:

SATA+SAS/SCSI

Linux RAID廉价磁盘冗余阵列_第15张图片

可以提高读写速率,并保证数据的冗余

硬件RAID一般独立于计算机/服务器,属于外部独立设备,它是通过两个控制器之间的总线和计算机/服务器进行数据传输和通信的。

 

硬件RAID需要在BIOS进行配置,对于已经组合的RAID阵列磁盘,操作系统识别到的只是一个普通的磁盘设备,即/dev/sdaN;假如在BIOS已经配置好了RAID,操作系统却无法识别,很可能是RAID驱动的问题,这就需要联系硬件厂商获取RAID驱动了。

 

某些RAID芯片上带有缓存,可以提高数据读写的速率,但是遇到突然断电的情况,数据可能会丢失,所以还有一些更高级的RAID芯片,在内部嵌入电池,在突然断电情况下,依然可以保证数据全部都写入硬盘才关机,从而保证了数据的安全性。

 

软件RAID(逻辑RAID):

假设计算机内部存在多个磁盘,操作系统装载OS盘上,在其他磁盘格式化成文件系统之前,内核可以识别当前系统中的其他磁盘;

内核中又一个模块MD(multi disks),它可以读取磁盘的配置信息,并识别哪些磁盘可以用来组合成为RAID磁盘,然后将指定磁盘组合起来,形成RAID

Linux RAID廉价磁盘冗余阵列_第16张图片

逻辑RAID就是通过MD来实现的,Md模拟一个假的RAID设备,并创建对应的设备文件/dev/mdN;

存储数据时,内核读取配置文件识别该设备后,在内核内部由MD模块负责将数据以RAID设备的格式分别发送到各个磁盘上去。

 

逻辑RAID的实质

在用户空间和内核空间之间创建一个假的RAID设备,这个RAID设备可以模拟RAID设备工作;这个RAID设备对于用户看来,是一个RAID设备,但对于内核看来,还是N个独立的磁盘。

 

逻辑RAID性能取决于CPU

假设操作系统崩溃,内核也就没有了,此前配置的RAID信息也会消失,以RAID形式存储在磁盘上的数据也就不能访问了。

 

逻辑RAID数据安全性防范

逻辑RAID磁盘设备必须标识为fd类型,这样存储数据的时候,会在数据之外存储一些元数据(黄色小方块表示元数据),重装操作系统时,内核中的md模块可以通过重新扫描该fd设备,将该fd设备组合成原先的RAID设备。

 

逻辑RAID管理命令

madam命令:RAID管理工具

模式化的命令:

         创建模式

                   -C

                   专用选项:

                            -l:级别

                            -n#: 设备个数

                            -a{yes|no}: 是否自动为其创建设备文件

                            -c:CHUNK大小, 2^n,默认为64K

                            -x#: 指定空闲盘个数

         管理模式

                   --add,--remove, --fail,--stop

                   -a,-r, -f,-S

                   mdadm/dev/md# --fail /dev/sda7

         监控模式

                   -F

         增长模式

                   -G

         装配模式

                   -A

查看RAID阵列的详细信息

mdadm -D/dev/md#

     --detail

将当前RAID信息保存至配置文件,以便以后进行直接装配:

mdamd -D --scan > /etc/mdadm.conf

查看当前系统当前状态下所有启用的RAID设备信息:

cat /proc/mdstat

提高RAID阵列磁盘性能

Mke2fs –j –E stride=16 –b 4096 /dev/mdN

其中stride=CHUNK/block size

你可能感兴趣的:(Linux)