RAID: 廉价冗余磁盘阵列,基于raid技术把多个硬盘从逻辑上进行组合,而内核仍然识别为一个磁盘来实现数的冗余和高写入。

     早期的IDE总线接口类型写入率低,而SCSI总线又因为其价格的昂贵所以人们迫切需要一种即廉价,又能高写入的接口类型,于是RAID技术就应运而生。

      RAID 技术有基于软件和硬件两种。基于软件的占用cpu的时钟周期,可靠性也不是很高。而基于硬件的RAID设备由于它由自己的内存,所以要自带电源。这样,就造成了它价格的昂贵。但对于一个企业无价的数据来说,这样的需求是必要的。

       下面我们就主要讨论基于软件实现的RAID来认识RAID技术;

  RAID按照其组合的方式的不同有主要有如下几种,它们根据需求而定,不分优劣。

  raid 0:最少两块磁盘,实行轮询的方式在两块磁盘上写入数据。每一个磁盘的I/O           操作相对于一个磁盘减少了一半。那么写入速度也就提高了一倍。所以它           提供了高性能,如果再多加几块磁盘,那么它的性能就更高了。但是这样           会造成冗余的降低,因为两块或多块磁盘出现一个损坏的概率远大小一个            磁盘,这也是raid 0的缺陷。所以有了raid 1的出现。

  raid 1:最少两块磁盘,数据在各磁盘上都存一份。这样可以保证当一块磁盘上的           数据发生丢失时可以找回数据,但是如果我们删除某一磁盘上的数据,那           么raid 1 是不能找回的,因为两块磁盘是同步的。所以,不是说建立了           raid 1 就不需要备份了。

  raid 4: 最少三块磁盘,两块磁盘用于轮询存放,第三块盘磁盘用于存放两块磁盘           上的数据进行与或后的校验码。当有一个磁盘发生故障时,不至于使整个           数据发生丢失。但是当一个磁盘发生损坏时要及时解决,不然由于另外两           个盘每一次读取数据都要进行与或操作,所以很容易也发生故障。

  raid 5:由于raid 4中的校验盘的压力过大,所以raid 5 采取了轮流作为校验盘的          机制

  raid 10:最少需要四个磁盘,用两两先做成raid 1 模式,然后再 把两个raid 1           模式的磁盘作为raid 0 模式就可以即实现高写入率,又能实现冗余。也           可以直接指定 raid 10。

 

下面就以raid 10 的配直方法来说明:

        配直raid 10 至少要四块磁盘:

     (1):根据你所要建立的raid 10 的大小,用fdisk命令把一个磁盘分出四个分区比如说我们分出的分区为:

        /dev/sda5, /dev/sda6, /dev/sda7, /dev/sda8

      并规定每一个分区的大小,不要格式化。

     另外要改变分区的的类型为fd  

linux上的 raid 技术_inux

    然后就可以来设置RAID了。

       raid命令格式如下:

   mdadm [mode] <raiddevice> [options] <component>

  mode:

    Assemble :装配模式,把一个装配好的raid模式移装到别的主机运用。

    Creat : 创建模式

          -n:表示用几块盘

          -x:几块空闲盘

          -c:表示块大小

          -l: level

          -p:layout

    Follow or Monitor : 监控模式

    Group:增长模式

     Manage:管理模式

         --add , --fail , --remove

     OPTIONS: 

 下面就以建立raid 10:

   mdadm -C /dev/md0 -a yes -l 10 -n  /dev/sda6 /dev/sda7 /dev/sda8          /dev/sda9

   然后执行: partprobe /dev/sda

    接着格式化md0: mke2fs /dev/md0

     然后挂载到某目录下就可以了。

    然后执行cat /proc/mdstat 就可以看到md0设备了。如下图

linux上的 raid 技术_inux_02

  如果分区上有数据的话,上图中会行进行数据的同步,然后才会显示后一行。

   这样一个raid 10 级别的组全就已经创建完成 ,我们可以用下面的命令来停止 md0设备不过先要卸载:

    mdadm -S md0

   当我们要重新要启用该raid 10时,需:

     mdadm -A /dev/md0 /dev/sda{5,6,7,8} 要指定组成raid的磁盘或分区。

    mdadm -D /dev/md0 :可以查看md0的状态。

  mdadm --examine --scan :可以查看当前系统上所有的raid设备,我们可以把些设备保存在/etc/mdadm.conf中,那么它下次就可以开机自动启动。并且在删除某个raid设备时可以用 mdadm -A /dev/md0 恢复,不需再指定组成md0的分区或磁盘。

      -x:指定空闲盘,我们可以用-x来指定空闲盘以使当组成有容错能力的raid其中一设备发生故障时,可以有另外一空闲盘来替补。以raid 10 为例,本身需要4个磁盘,当再加一个空白的容错盘时至少要五个盘。

      我们可以以5个分区来模拟:如

        mdadm -C /dev/md0 -a yes -l 10 -n 4 -x 1 /dve/sda{5,6,7,8,9}

    结果如下:

linux上的 raid 技术_inux_03

   我们可以用--fail来模拟一块磁盘发生故障用空闲盘来替代的情景:

linux上的 raid 技术_inux_04

 我们把md1挂载到某目录下,然后拷贝一文件进去。当sda8坏掉时不影响数据的读取 。

 这样就实现了raid冗余。

    当我们想新增一个磁盘或分区,但不想让他成为空闲盘的时候,我们也是用

    mdadm --add /dev/mda1 /dev/sda{10,11} (分区是指定任意的空闲分区)

   然后,用:

   mdadm -G -n 6 :就可以在以前的四块的基础上加上两块分区(磁盘),来加大      raid 的性能。

当我增加一个磁盘分区时,增加的只是物理边界的大小,而文件系统的大小 还没有改变到和物理边界一样大的大小 ,这时我样要做如下操作才能使他们变为一样大小,真正的扩展。

我们可以执行如下作来使文件系统的大小真下的和物理空间的大小一样:

    resize2fs /dev/md1 就可以把文件系统的空间真正的扩展到和物理空间一样大小 。

 

这才是真下的完成了raid的对磁盘空间的操作。实现冗余,提高速度。