一、RAID简介

RAID是“Redundant Array of Independent Disk”的缩写,中文意思是独立冗余磁盘阵列,早期称为廉价磁盘阵列。简单地解释,就是将N台硬盘通过RAID Controller(分Hardware,Software)结合成虚拟单台大容量的硬盘使用。RAID技术大致分为两种:基于硬件的RAID技术和基于软件的RAID技术。

二、RAID术语

RAID0

wKiom1PGFMrwv8JaAADQVHm8T7Q027.png

raid0: 读、写性能提升,无容错能力,空间n*disk

RAID1

wKioL1PGFkHCJ9K_AADKjSsGZXE001.png

raid1: 写性能略有下降,读性能提升,容错,空间:1*disk

RAID4

wKioL1PGFp7QT3q-AAEMbroteGw785.png

raid4: 读、写性能提升,有容错能力(最多坏一块磁盘),空间:(n-1)*disk

RAID5

wKiom1PGFcOB3C9cAAEWbPaL6RU057.png

raid5: 读、写性能提升,有容错能力(最多坏一块磁盘),空间:(n-1)*disk

RAID10

wKioL1PGFyLgNE1qAADKjSsGZXE225.png

raid10: 读、写性能提升,有容错能力(每一组可坏一块盘),空间:n*disk/2

三、RAID的基本命令

mdadm工具:
md: 支持将任何块设备组织成RAID
mdadm: 模块式化命令
-A: 装配模式,重新识别此前实现的RAID
-C:创建模式,创建RAID
-F:监控模式
管理模式:-f, -r, -a
-C: 创建模式中专用选项
-n #: 用于创建RAID设备的磁盘个数;
-l #: 级别
-a yes: 自动为创建的RAID生成设备文件;
-c Chunk_Size: 
md设备的设备文件,一般在/dev目录下,以md开头,后跟一个数字来区别

[[email protected] tmp]# rpm -qa mdadm      查询是否安装了支持raid的软件

mdadm-3.2.6-7.el6.x86_64

五、实验

    实验是划分四个5g的硬盘,演示raid的创建、热备盘、停止、添加、重新装配

1、添加磁盘用虚拟机添加一个20g的硬盘,此处省略

2、创建分区

[[email protected] ~]# fdisk /dev/sdb
Command (m for help): n    创建主分区
Command action
   e   extended       逻辑分区
   p   primary partition (1-4)
p
Partition number (1-4): 1    第一个分区
First cylinder (1-2610, default 1):  开始块
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +5G  划分5G容量

Command (m for help): t     修改文件类型
Selected partition 1
Hex code (type L to list codes):    文件类型(Linux raid autodetect)
Changed system type of partition 1 to 8e ( Linux raid autodetect)

Command (m for help): p     查看分区

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xba762e8d
 Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         654     5253223+  fd  Linux raid autodetect
/dev/sdb2             655        1308     5253255   fd  Linux raid autodetect
/dev/sdb3            1309        1962     5253255   fd  Linux raid autodetect
Command (m for help): w     保存分区
The partition table has been altered!
创建分区此处不再演示,照着上面的重做分好实验要求的分区
3、查看所创建分区系统是否识别到、没有识别到要 partx -a /dev/sdbx直到识别到或者重启系统。
[[email protected] ~]# cat /proc/partitions    查看创建分区
  8        0   83886080 sda
   8        1     204800 sda1
   8        2   62914560 sda2
   8        3      39163 sda3
   8        4          1 sda4
   8        5      40131 sda5
   8       16   20971520 sdb
   8       17    5253223 sdb1
   8       18    5253255 sdb2
   8       19    5253255 sdb3
4、创建 RAID MD5
[[email protected] ~]# mdadm -C /dev/md5 -a yes -n 3 -l 5 /dev/sdb1 /dev/sdb2 /dev/sdb3
mdadm: Defaulting to version 1.2 metadata  创建一个名叫MD5的raid自动创建、三块磁盘、级别
mdadm: array /dev/md5 started.              为五 添加的磁盘是/dev/sdb1 /dev/sdb2 /dev/sdb3
mdadm: array /dev/md5 started.
[[email protected] ~]# cat /proc/mdstat         查看创建信息
Personalities : [raid6] [raid5] [raid4] 
md5 : active raid5 sdb3[3] sdb2[1] sdb1[0]
      10498048 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
      [=>...................]  recovery =  5.9% (311296/5249024) finish=3.6min speed=22235K/sec
      
unused devices: <none>
5、格式化挂载
[[email protected] ~]# mke2fs -t ext4 /dev/md5  格式化
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
657072 inodes, 2624512 blocks
131225 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2688548864
81 block groups
32768 blocks per group, 32768 fragments per group
8112 inodes per group
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 23 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[[email protected] ~]# mkdir /tmp/user1              创建目录
[[email protected] ~]# mount /dev/md5 //tmp/user1    挂载
[[email protected] ~]# mount                         查看挂载信息
/dev/mapper/vg0-root on / type ext4 (rw)    
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/md5 on /tmp/user1 type ext4 (rw)
[[email protected] ~]# df -lh                       查看 RAID md5 信息
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg0-root   20G  406M   19G   3% /
tmpfs                 935M     0  935M   0% /dev/shm
/dev/sda1             194M   35M  150M  19% /boot
/dev/mapper/vg0-usr   9.9G  2.0G  7.4G  21% /usr
/dev/mapper/vg0-var    20G  305M   19G   2% /var
/dev/md5              9.9G  151M  9.3G   2% /tmp/user1
[[email protected] ~]# df -lh /dev/md5
Filesystem      Size  Used Avail Use% Mounted on
/dev/md5        9.9G  151M  9.3G   2% /tmp/user1
[[email protected] ~]# mdadm --detail /dev/md5    查看 RAID md5 的详细信息
/dev/md5:
        Version : 1.2
  Creation Time : Sat Jul 12 06:53:18 2014
     Raid Level : raid5                            级别
     Array Size : 10498048 (10.01 GiB 10.75 GB)    容量
  Used Dev Size : 5249024 (5.01 GiB 5.38 GB)
   Raid Devices : 3                                几块
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Sat Jul 12 06:59:10 2014
          State : clean 
 Active Devices : 3                                活动三块
Working Devices : 3                                工作三块
 Failed Devices : 0                                停止工作0块
  Spare Devices : 0                                热备0块

         Layout : left-symmetric
     Chunk Size : 512K

           Name : dingchao.localdomain:5  (local to host dingchao.localdomain)
           UUID : 5e20abb1:5dddca66:b82c6498:32052563
         Events : 24

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       18        1      active sync   /dev/sdb2
       3       8       19        2      active sync   /dev/sdb3  那几块磁盘在工作
6、新增一块做热备及演示磁盘坏盘,添加,移除
重新添加一块磁盘分区此处不做演示、上面照做
[[email protected] ~]# kpartx -af /dev/sda6    添加sda6这块硬盘
[[email protected] ~]# mdadm /dev/md5 -f /dev/sdb1   模拟sdb1 坏掉
mdadm: set /dev/sdb1 faulty in /dev/md5         
[[email protected] ~]# mdadm --detail /dev/md5         查看 RAID md5 的详细信息
/dev/md5: 
        Version : 1.2
  Creation Time : Sat Jul 12 06:53:18 2014
     Raid Level : raid5
     Array Size : 10498048 (10.01 GiB 10.75 GB)
  Used Dev Size : 5249024 (5.01 GiB 5.38 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Sat Jul 12 07:23:03 2014
          State : clean, degraded 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 1      坏一块磁盘的表现
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : dingchao.localdomain:5  (local to host dingchao.localdomain)
           UUID : 5e20abb1:5dddca66:b82c6498:32052563
         Events : 26

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed    提示 removed  
       1       8       18        1      active sync   /dev/sdb2
       3       8       19        2      active sync   /dev/sdb3

       0       8       17        -      faulty   /dev/sdb1    提示sdb1坏掉
[[email protected] ~]# mdadm /dev/md5 -r /dev/sdb1    移除坏掉的sdb1
mdadm: hot removed /dev/sdb1 from /dev/md5
[[email protected] ~]# mdadm --detail /dev/md5         查看 RAID md5 的详细信息
/dev/md5:
        Version : 1.2
  Creation Time : Sat Jul 12 06:53:18 2014
     Raid Level : raid5
     Array Size : 10498048 (10.01 GiB 10.75 GB)
  Used Dev Size : 5249024 (5.01 GiB 5.38 GB)
   Raid Devices : 3
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Sat Jul 12 07:23:24 2014
          State : clean, degraded 
 Active Devices : 2
Working Devices : 2   状态信息
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : dingchao.localdomain:5  (local to host dingchao.localdomain)
           UUID : 5e20abb1:5dddca66:b82c6498:32052563
         Events : 29

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed    坏盘已被移除
       1       8       18        1      active sync   /dev/sdb2
       3       8       19        2      active sync   /dev/sdb3
[[email protected] ~]# mdadm /dev/md5 -a /dev/sda6 添加一块已经分好区的硬盘带RAID MD5中
mdadm: added /dev/sda6
[[email protected] ~]# mdadm --detail /dev/md5      查看 RAID md5 的详细信息
/dev/md5:
        Version : 1.2
  Creation Time : Sat Jul 12 06:53:18 2014
     Raid Level : raid5
     Array Size : 10498048 (10.01 GiB 10.75 GB)
  Used Dev Size : 5249024 (5.01 GiB 5.38 GB)
   Raid Devices : 3
  Total Devices : 3    总的信息
    Persistence : Superblock is persistent

    Update Time : Sat Jul 12 07:29:33 2014
          State : clean, degraded, recovering 
 Active Devices : 2
Working Devices : 3   现在的信息
 Failed Devices : 0
  Spare Devices : 1    热备信息

         Layout : left-symmetric
     Chunk Size : 512K

 Rebuild Status : 21% complete   重建信息

           Name : dingchao.localdomain:5  (local to host dingchao.localdomain)
           UUID : 5e20abb1:5dddca66:b82c6498:32052563
         Events : 38

    Number   Major   Minor   RaidDevice State
       4       8        6        0      spare rebuilding   /dev/sda6   热备重建
       1       8       18        1      active sync   /dev/sdb2
       3       8       19        2      active sync   /dev/sdb3
[[email protected] ~]# mdadm /dev/md5 -a /dev/sdb1     添加sdb1作为热备盘
mdadm: added /dev/sdb1
[[email protected] ~]# mdadm --detail /dev/md5     查看 RAID md5 的详细信息  
/dev/md5:
        Version : 1.2
  Creation Time : Sat Jul 12 06:53:18 2014
     Raid Level : raid5
     Array Size : 10498048 (10.01 GiB 10.75 GB)
  Used Dev Size : 5249024 (5.01 GiB 5.38 GB)
   Raid Devices : 3
  Total Devices : 4    总的信息
    Persistence : Superblock is persistent

    Update Time : Sat Jul 12 07:29:57 2014
          State : clean, degraded, recovering 
 Active Devices : 2
Working Devices : 4    现在的信息
 Failed Devices : 0
  Spare Devices : 2    热备信息

         Layout : left-symmetric
     Chunk Size : 512K

 Rebuild Status : 39% complete    重建信息

           Name : dingchao.localdomain:5  (local to host dingchao.localdomain)
           UUID : 5e20abb1:5dddca66:b82c6498:32052563
         Events : 44

    Number   Major   Minor   RaidDevice State
       4       8        6        0      spare rebuilding   /dev/sda6    热备重建
       1       8       18        1      active sync   /dev/sdb2
       3       8       19        2      active sync   /dev/sdb3

       5       8       17        -      spare   /dev/sdb1    空闲热备盘
7、多一块热备、盘坏了自动添加重建
[[email protected] ~]# mdadm /dev/md5 -f /dev/sda6    模拟磁盘sdb6坏掉
mdadm: set /dev/sda6 faulty in /dev/md5

[[email protected] ~]# mdadm /dev/md5 -r /dev/sda6    移除sdb6
mdadm: hot remove failed for /dev/sda6: Device or resource busy


[[email protected] ~]# mdadm --detail /dev/md5     查看 RAID md5 的详细信息  
/dev/md5:
        Version : 1.2
  Creation Time : Sat Jul 12 06:53:18 2014
     Raid Level : raid5
     Array Size : 10498048 (10.01 GiB 10.75 GB)
  Used Dev Size : 5249024 (5.01 GiB 5.38 GB)
   Raid Devices : 3
  Total Devices : 4   总盘的信息
    Persistence : Superblock is persistent

    Update Time : Sat Jul 12 07:42:30 2014
          State : clean, degraded, recovering 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 1
  Spare Devices : 1      工作信息

         Layout : left-symmetric
     Chunk Size : 512K

 Rebuild Status : 5% complete

           Name : dingchao.localdomain:5  (local to host dingchao.localdomain)
           UUID : 5e20abb1:5dddca66:b82c6498:32052563
         Events : 59

    Number   Major   Minor   RaidDevice State
       5       8       17        0      spare rebuilding   /dev/sdb1                                                 
                                                               sdb1热备自动顶上重建
       1       8       18        1      active sync   /dev/sdb2
       3       8       19        2      active sync   /dev/sdb3

       4       8        6        -      faulty   /dev/sda6  提示sdb6磁盘坏掉
8、模拟停电、机器坏掉之后、停盘、重新装载
[[email protected] ~]# umount /tmp/user1              卸载
[[email protected] ~]# mount                          挂载信息
/dev/mapper/vg0-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
[[email protected] ~]# mdadm -S /dev/md5          停止 RAID MD5
mdadm: stopped /dev/md5
[[email protected] tmp]# mdadm -A /dev/md5 /dev/sdb{1,2,3} /dev/sda6     重新装载MD5
mdadm: /dev/md5 has been started with 3 drives and 1 spare.
[[email protected] tmp]# mdadm --detail /dev/md5     查看 RAID md5 的详细信息
/dev/md5:
        Version : 1.2
  Creation Time : Sat Jul 12 06:53:18 2014
     Raid Level : raid5
     Array Size : 10498048 (10.01 GiB 10.75 GB)
  Used Dev Size : 5249024 (5.01 GiB 5.38 GB)
   Raid Devices : 3
  Total Devices : 4    总盘的信息
Persistence : Superblock is persistent

    Update Time : Sat Jul 12 07:52:33 2014
          State : clean 
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1    状态信息

         Layout : left-symmetric
     Chunk Size : 512K

           Name : dingchao.localdomain:5  (local to host dingchao.localdomain)
           UUID : 5e20abb1:5dddca66:b82c6498:32052563
         Events : 84

    Number   Major   Minor   RaidDevice State
       5       8       17        0      active sync   /dev/sdb1
       1       8       18        1      active sync   /dev/sdb2
       3       8       19        2      active sync   /dev/sdb3

       4       8        6        -      spare   /dev/sda6    磁盘工作状态
[[email protected] tmp]# mount /dev/md5 /tmp/user1   重新挂载就可以使用啦
[[email protected] tmp]# mount      查看挂载信息
/dev/mapper/vg0-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/md5 on /tmp/user1 type ext4 (rw)      查看挂载信息

RAID: 组织多块硬盘当一个设备来使用

硬件RAID:

硬件控制器:创建RAID通过BIOS进行

在OS中看到的仅是一个单独的设备

软件RAID:

无需任何硬件的RAID设备,仅需多个块设备(磁盘分区即可)

在OS中看到的是多个基本的磁盘设备、磁盘分区等,而后将这多个块设备可以组织一个单独的设备使用

即为软RAID

装配模式:在某OS上创建的软件RAID,被迁移到其它主机上,并启动OS之后,Linux auto detect