磁盘阵列简介

磁盘阵列(Redundant Array of independent Disks, RAID)是由美国加州大学柏克莱分校于1987年提出的,其概念是将多个硬盘组成一个逻辑虚拟的硬盘。操作上和操作单一的一块硬盘没有差别。不过实际上,数据是存储在不同硬盘上的。
磁盘阵列的好处
整合多个硬盘:能将多个小的硬盘整合为一个大的硬盘。
数据具有较高的安全性:磁盘阵列具有修改错误的能力。他将校验码(parity)放在不同的硬盘上,当数据发生问题,即会用到校验码来恢复原始数据。
提高存取效率:当数据写入的时候,会切割成多个小块,同时写在不同的硬盘中,这样读数据的时候,能从不同的物理硬盘中读取,加快了磁盘的I/O速度。
磁盘阵列的分类
Linux磁盘阵列根据文件的存储位置分为七种。
Linear:数据会先放在第一块硬盘,当此用盘空间使用完是,再依次存储至第2,3……..个硬盘,当数据或硬盘发生故障,此模式不具有容错的能力。
RAID-0:当写入数据时,会将数据切割为非常多小块,并将这些块的数据分别存储到每一块硬盘上。和Linear方式不同,RAID会把数据平均分配到不同的硬盘。因此不具有容错能力。
RAID-1:此模式会把数据在每一个硬盘上存储一份,每一个硬盘的数据都一摸相同。
RAID-2:数据会以bit为单位分割,并分别存储到各个硬盘中,但存储时此方式会额外保留若干数量的硬盘。,写入数据时,磁盘阵列会同步计算存储到各个硬盘的校验码,然后有将此校验码放在保留的硬盘上。当有硬盘损坏时,就可利用此校验码恢复正确地数据,达到容错的目的。
RAID-3:一份数据会以字节byte为单位分割,分别存储到各个硬盘中。此方式会特别保留一个固定的硬盘存储同位校验码。但由于是将同位校验码存储在同一个硬盘中,因此该硬盘应该有较快的传输速度。否则会影响系统性能。
RAID-4:一份数据会被切割成固定大小的区块,并且分别存储到每一个硬盘中。此方式和RAID-3比较,除了分割方式不同以外,其他相同,也具有容错功能。
RAID-5:一份数据会被分割成固定大小的区块,并分别存储到每个硬盘中。虽然此方式和RAID-4相同以区块为单位分割数据,不同的是,RAID-5并不特别保留固定的一个硬盘来存储校验码,而是将校验码分散存储在所有硬盘中。因此,此方式不会因为存储校验码在一块硬盘上,而影响系统的性能。
4 Linux支持的磁盘阵列
    目前Linux支持Linear、 RAID-0、RAID-1、RAID-4、RAID-5五种磁盘阵列模式。在五种模式中,RAID-4和RAID-5运行方式相近。接下来将周详介绍Linear、RAID-1、RAID-5磁盘阵列创建过程。
1、 创建linear磁盘阵列
硬件需求:两块或以上的硬盘。
创建linear磁盘阵列:
设置文件为/etc/raidtab
文件格式如下:
raiddev /dev/md0              指定磁盘阵列的设备名称
raid-level       Linear        指定采用的是Linear模式
nr-raid-disks     2           此磁盘阵列由2个硬盘所组成
chunk-size        32         当数据写入磁盘阵列时,每个写入区块的大小
(单位为KB,且必须为2的次方)。由于在Linear
模式中,写入数据并不分块,而是循序写入到同
一磁盘中。
persistent-superblock  1        设置是否要写入磁盘的superblock,设置成“1”
表示写入,设置“0”不写入。
device            /dev/sda2  按实际的情况,指定第一个硬盘分区的名称
raid-disk          0         设置上述的分区是次磁盘阵列所使用的第一个
硬盘。编号“0”开始。
device            /dev/sdb1  按实际情况,指定第二块硬盘分区的名称。
raid-disk         1          设置上述的分区是此磁盘阵列所使用的第二块
硬盘。
创建好设置文件后,执行下面命令,初始化刚刚创建的/dev/md0磁盘阵列。
#mkraid /dev/mdo
#mke2fs ?j /dev/md0 格式化磁盘阵列
#mount ?t ext3 /dev/md0  mnt/md0将md0装载到/mnt/md0下。
    检查磁盘阵列状态记录文件,停止和启动磁盘阵列。
    停止磁盘阵列:首先卸下装载的磁盘阵列
                  #umount  /dev/md0
                  #raidstop  /dev/md0
    启动磁盘阵列:
                  #raidstart  /dev/md0
    查看磁盘阵列使用状态:
                  #more /proc/mdstat
    personalities:[linear]
    read_head 1024 sectors
    md0:active linear sda2(1) sdb(0)
    20483524  blocks 32k  rounding
    unused devices:
    上述状态是磁盘阵列处于运行状态时的相关信息。当磁盘阵列没有处于启动状态的时候,显示的状态如下:
    personalities:[linear]
    read_ahead 1024 sectors
unused devices:
  删除磁盘阵列:首先停止磁盘阵列,然后删除/etc/raidtab文件即可。
2、 创建RAID-1磁盘阵列
RAID-1磁盘阵列存储方式,是将同一份数据同时写到每个硬盘中,那一个硬盘所存储的数据是一模相同的。
硬件需求:要创建RAID-1磁盘阵列,至少需要2块硬盘,每一块硬盘最佳大小一致。这是因为每一个硬盘存储相同的数据,因此有一个硬盘比其他的容量大时,磁盘着烈也无法使用多出来的硬盘空间。
创建磁盘阵列:本例采用2个硬盘的分区 sda1和sdb1创建磁盘阵列。以下是/etc/raidtab内容。
raiddev /dev/md0              指定磁盘阵列的设备名称
raid-level       1            指定采用的是RAID-1模式
nr-raid-disks     2           此磁盘阵列由2个硬盘所组成
nr-spare-disks    0           磁盘阵列备用磁盘数目
chunk-size        4         当数据写入磁盘阵列时,每个写入区块的大小
(单位为KB,且必须为2的次方)。由于在Linear
模式中,写入数据并不分块,而是循序写入到同
一磁盘中。
persistent-superblock  1        设置是否要写入磁盘的superblock,设置成“1”
表示写入,设置“0”不写入。
device            /dev/sda1  按实际的情况,指定第一个硬盘分区的名称
raid-disk          0         设置上述的分区是次磁盘阵列所使用的第一个
硬盘。编号“0”开始。
device            /dev/sdb1  按实际情况,指定第二块硬盘分区的名称。
raid-disk         1          设置
创建好设置文件后,创建文件系统、启动、查看运行状态等方法和Linear相同。
3、 创建RAID-5磁盘阵列
在此介绍RAID-5,是在RAID-0和RAID-1中取一个平衡点,同时具有容错能力,也不会浪费太多硬盘空间,并有助于提高磁盘的I/O性能。
硬件需求:
由于RAID-5需要存储同位校验码,因此要创建此模式的磁盘阵列,至少需要3块或以上的硬盘。
创建磁盘阵列:本例以sda1、sdb1、sdc1,3个分区组成RAID-5磁盘,下面是设置文件/etc/raidtab。
raiddev /dev/md0              指定磁盘阵列的设备名称
raid-level       5        指定采用的是Linear模式
nr-raid-disks     3          此磁盘阵列由2个硬盘所组成
nr-spare-disks    0          磁盘阵列备用磁盘数目
chunk-size        32         当数据写入磁盘阵列时,每个写入区块的大小
(单位为KB,且必须为2的次方)。由于在Linear
模式中,写入数据并不分块,而是循序写入到同
一磁盘中。
persistent-superblock  1        设置是否要写入磁盘的superblock,设置成“1”
表示写入,设置“0”不写入。
Parity-algorithm   left-symmetric 指定用哪一种算法计算同位校验码,可是用的算法有:left-symmetric,left-asymmetric,right-symmetric,right-asymmetric4种。一般采用left-symmetric有最佳的存储效率。
device            /dev/sda1  按实际的情况,指定第一个硬盘分区的名称
raid-disk          0         设置上述的分区是次磁盘阵列所使用的第一个
硬盘。编号“0”开始。
device            /dev/sdb1  按实际情况,指定第二块硬盘分区的名称。
raid-disk         1          设置
device            /dev/sdb1  按实际情况,指定第三块硬盘分区的名称。
raid-disk          2          设置
修改完毕设置文件后依次执行创建磁盘阵列、启动、停止、查看状态等操作。
在本章,我们只介绍RAID-Linear、RAID-1、RAID-5、最常用的磁盘阵列设置方法。
至于其他种类的磁盘阵列设置方法,和上面讲述的设置方法类似,请读者自行设置。
最后,我们比较一下上面三种磁盘阵列。
磁盘阵列比较:
磁盘空间:Linear模式最节省磁盘空间,磁盘阵列总空间是所有硬盘的和。
          RAID-1(磁盘映像)最浪费磁盘,因为每个硬盘存储的数据都相同。
          RAID-5将利用一个磁盘来存储同位校验码。因此磁盘容量为n-1个
          磁盘的容量。
读写性能:Linear模式中,由于数据是依次存到硬盘上,此方式和一块硬盘运行
          并没有什么不同。此模式也不会提高读写效率。如果有多个人把数据
          放在不同的硬盘上,并且同时访问,那么就能提高磁盘读写效率。
          RAID-1由于每个硬盘都存储相同的数据,需要耗费较多的CPU时间。
          就会影响写入的数度。读数据,由于能从不同硬盘读出数据,因此理论上会有较快的数度。在RAID-5模式中,由于读写数据时,是将数据分成区块,在以区块为单          位同步存储到硬盘中,明显能提高存取速度。理论速率为n-1不过实际不会达到那么高的传输效率。
容错能力:Linear磁盘阵列没有所有容错能力,如果其中一块硬盘出现故障,那么整个磁盘阵列的数据都会丢失。RAID-1有非常好的容错能力,因为每一块硬盘的数据都是相同的,所以当一块硬盘发生故障。系统仍然能继续工作。RAID-5磁盘阵列,当其中一块硬盘发生故障,此时能借助其他硬盘计算出正确地数据,只要不是2块或2块以上的硬盘同时发生故障,这是同位校验码也不足以恢复数据了,意味着数据无法挽救了。

你可能感兴趣的:(简介)