• RAID

    • 独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks)
    • 旧称廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks)
    • 详细介绍请自行百度


  • 常用RAID级别:

    • RAID0:提高读写性能,没有容错能力,至少需要两块磁盘,磁盘利用率100%
    • RAID1:至少需要两块硬盘,两块硬盘互为镜像,读性能提升,写性能下降,磁盘利用率50%
    • RAID5: 至少需要三块硬盘,允许一块盘出错,读写性能提升,磁盘利用率(n-1)/n
    • RAID10:至少需要四块磁盘。允许不同组内个各坏一块盘,读写性能提升,磁盘利用率50%


  • 软件RAID管理工具:mdadm

    • 支持的RAID级别:LINEAR、RAID0、1、4、5、6、10
    • 用法: mdadm [mode] {raiddevice} [options] {component-devices}
      • raiddevice : /dev/md#
      • component-devices : 任意块设备
      • mode :
        -F : FOLLOW 监控
        -S : 停止RAID
        -D --detail : 显示阵列详细信息
        -A : 装配
        -C : 创建
        -n #: 用于创建RAID设备的个数
        -x #: 热备磁盘的个数
        -l #: 指定RAID级别
        -a {yes|no}: 自动为创建的RAID设备创建设备文件
        -c: 指定块的大小,默认为512KB
        -f:模拟损害
        -r:模拟移除设备
        -a:模拟添加新设备

  • 创建软RAID5:

    • 首先准备5块同样大小的磁盘(三块用于创建RAID5,一块用于热备,一块用于稍后添加新硬盘到RAID5中)
    • 四块50G磁盘:/dev/sdb,/dev/sdc,/dev/sdd,/dev/sde,/dev/sdf

    • (1)使用mdadm创建并定义RAID5设备:
      mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde

      -a:自动创建RAID设备的设备文件;-l:RAID的级别;-n 3:用三块硬盘组成RAID;-x 1:一块热备磁盘

      Linux上RAID以及软RAID实现

    • 现在我们已经创建好了RAID5,RAID5的设备文件在/dev/md0,使用mdadm -D /dev/md0可以查看raid设备信息:
      Linux上RAID以及软RAID实现_第1张图片
    • (2)对RAID设备进行格式化并创建文件系统:
      mkfs.xfs /dev/md0 #将md0格式化为xfs文件系统
      Linux上RAID以及软RAID实现_第2张图片
    • (3)增加新硬盘到md0:
      mdadm -G /dev/md0 -n 4 -a /dev/sdf #增加了sdf之后raid成员数就变成了4块了,所以这里要-n 4
      Linux上RAID以及软RAID实现
    • 增加了新硬盘之后系统会自动同步raid上的信息,cat /proc/mdstat可以看到同步的进度
      Linux上RAID以及软RAID实现

    • (4)模拟磁盘sdb故障并移除磁盘:
      mdadm /dev/md0 -f /dev/sdb
      mdadm /dev/md0 -r /dev/sdb
      Linux上RAID以及软RAID实现
    • 此时我们使用mdadm -D /dev/md0可以看到之前用于热备的sde已经替代了损坏的磁盘,这时要赶紧用一块同样大小的硬盘替换掉坏的硬盘。
      Linux上RAID以及软RAID实现_第3张图片

    • (5)等待热备的硬盘同步完成之后再关机取出故障磁盘并开机,替换故障磁盘:
      mdadm /dev/md0 -a /dev/sdb #添加进去之后,sdb就成了热备磁盘了,使用mdadm -D /dev/md0可以看到详细的信息。

    • (6)生成配置文件:
      mdadm -D -s >> /etc/mdadm.conf #配置文件用于开机自动启用raid设备。
    • (7)停止RAID设备:
      mdadm -S /dev/md0
    • (8)激活设备:
      mdadm -A -s /dev/md0
    • (9)强制启动:
      mdadm -R /dev/md0
    • (10)删除磁盘上的RAID信息:
      mdadm --zero-superblock /dev/sdb #当不想使用某块磁盘来组成raid后(当然要先从raid中移除),使用这条命令可以删除磁盘上的raid信息,以作他用。