Linux-RAID

  RAID全称为Redundant Arrays of Inexpensive(Independent) Disks,意为廉价冗余磁盘阵列,后来不廉价的磁盘也采用这一技术来提高性能,所以Inexpensive就用Independent替代了。RAID是将多块磁盘按照某种格式组织起来当做一块磁盘来使用的技术,可以用来提高I/O性能,提高耐用性。

  RAID实现的方式有三种:

    1.外接式磁盘阵列:通过扩展卡提供适配能力

    2.内接式RAID:主板集成RAID控制器

    3.Software RAID:通过软件方式实现

  常见的RAID级别有RAID-0、RAID-1、RAID-5、RAID-6、RAID-10、RAID-01等

            

    1、RAID-0:也叫条带卷,它是将多块磁盘平行组织起来当做一块磁盘来实现I/O的组织结构。

          它的读、写性能有提升,可用空间为N*min(S1,S2,...),没有容错能力,至少需要两块磁盘。

    2、RAID-1:  也叫镜像卷,它是将两块磁盘存储相同的数据,其中一块磁盘用来做镜像。

          它的读性能有提升,写性能略有下降,可用空间为1*min(S1,S2,...),有冗余能力,至少需要两块磁盘。

    3、RAID-4:  它是将前两块磁盘用来存储数据,第三块磁盘用来存储前两块盘异或得出的值,用来做校验盘。

          它的读写性能有提升,可用空间为(N-1)*min(S1,S2,...),容错能力为一块磁盘,最少需要三块磁盘。

         它用一个专门的磁盘作为校验盘,访问任何一个磁盘时都要访问校验盘,所以校验盘的访问压力比其他磁盘都大,很容易成为性能瓶颈。

      4、RAID-5:  组织结构和RAID-4类似,它是将磁盘轮流记录校验数据。

          它的读写性能有提升,可用空间为(N-1)*min(S1,S2,...),容错能力为一块磁盘,最少需要三块磁盘。

    5、RAID-6:它是用两块磁盘作为校验盘

          它的读写性能有提升,可用空间(N-2)*(S1,S2,...),容错能力为两块磁盘,最少需要四块磁盘。

      6、RAID-10:它是先两两一组做成RAID-1,再做成RAID-0。

          它的读写性能有提升,可用空间为N*(S1,S2,...)/2,容错能力为每组镜像最多只能坏一块,至少磁盘数需要四块。

    7、JBOD:全称为Just a Bunch Of Disks,它是将多块磁盘的空间合并成一个大的连续空间使用。它的可用空间为sum(S1,S2,...)。

  CentOS 6上的Software RAID的实现:结合内核中的md(multi devices)模块

    常用命令:        
        mdadm [mode] <raiddevice> [options] <component-devices>             [mode]:               创建:-C               装配:-A               监控:-F               管理:-f、-r、-a             <raiddevice>: /dev/md#             <componenent-devices>: 任意块设备
            -C: 创建模式 
                -l #: 指明要创建的RAID的级别
                -a {yes|no}: 自动创建目标RAID设备的设备文件
                -c CHUNK_SIZE: 指明块大小
                  -n #: 使用#个磁盘来创建此RAID
                 -x #: 指明空闲磁盘的个数 
            -D: 显示RAID的详细信息,比如:mdadm -D /dev/md#          
            管理模式:
               -f: 标记指定磁盘为损坏,例如: 指明sda5损坏语句为 mdadm /dev/md# -f /dev/sda5
               -a: 添加磁盘
               -r: 移除磁盘,例如:移除sda5语句为 mdadm /dev/md# -r /dev/sda5  
            查看md的状态: cat /proc/mdstat
            停止md设备: mdadm -S /dev/md# 
        其他命令:
            watch命令
              -n #: 刷新间隔,单位是秒

  练习1:创建一个可用空间为10G的RAID1设备,要求CHUNK大小为128k,文件系统为ext4,有一个空闲盘,开机可自动挂在至/backup目录   

      a.创建两个各为10G的分区,调整分区id为fd,比如磁盘分区为/dev/sda1、/dev/sda2
      b.mdadm -C /dev/md0 -c 128k -l 1 -n 3 -x 1 -a yes /dev/sda{1,2}
      c.mke2fs -t ext4 -L MYRAID0 /dev/md0
      d.修改/etc/fstab,增加一行: LABEL='MYRAID0' /backup ext4 defaults 0 0  

  练习2:创建一个可用空间为10G的RAID10设备,要求chunk大小为256k,文件系统为ext4,开机可自动挂载至/mydata目录     

      a.创建四个各位5G的分区,比如/dev/sda5,/dev/sda6,/dev/sda7,/dev/sda8
      b.mdadm -C /dev/md10 -l 10 -a yes -n 4 -c 256k /dev/sda{5,6,7,8}
      c.mke2fs -t ext4 -L 'MYRAID10' /dev/md10
      d.修改配置文件/etc/fstab:LABEL='MYRAID10' /mydata ext4 defaults 0 0 
原文地址:https://www.cnblogs.com/ckh2014/p/9536134.html