首页 > 代码库 > 23. RAID与mdamd工具

23. RAID与mdamd工具

RAID:磁盘阵列(Reduant Arrays of Independent Disks),即将多块磁盘当成一块使用。

RAID: Independent

Level:仅用于表示磁盘组合方式的不同
raid0,raid1,raid5,raid10,raid50,jbod

raid0:

    不允许其中一块磁盘出错,但读写性能出错,容错能力为0,可以作为tmp目录,swap虚拟内存来使用
    至少需要两块磁盘,读写性能提升,磁盘空间利用率100%,磁盘大小尽量保持一致,否则,多处的空间无法使用

raid1:

    镜像卷,将数据复制成多份儿,分别存在不同的磁盘
    每个磁盘上存储的都是完整的数据,读数据的时候,一边拿一块,加快效率
    写性能会慢一点。但,raid1无法代替备份,只是为了保证,设备损坏时,业务不会中断。
    因为对一块进行删除,另一块也会删除,保证镜像。在硬件层次保证冗余
    至少需要 两块磁盘,硬件容错能力。读性能提升,写性能下降磁盘空间利用率50%
raid4:

    至少需要3块盘,异或:两者相同则为假
    前两块存数据,第三块做异或运算,做为校验码
    读写性能都提升,校验码是为了还原缺少盘的数据,会慢一点
    所以业务进程不会中止。,允许一块盘出错性能下降。冗余能力有限,空间利用率(n-1)/n
raid5:

    至少3块,跟raid4的优点在于,磁盘同时承担存储校验码的任务
    校验盘一块不够,但是依然只允许一块盘出错,空间利用率(n-1)/n
raid6:

    至少4块,允许两块盘出错,空间利用率(n-2)/n
raid10:

    先做raid1 再做raid0 出错概率小一点,至少需要四块,允许不同组内各坏一块儿盘,空间利用率50%
raid01:

    先做raid0,再做raid1 出错几率大一点
raid50:

    同理
jbod:

    将多快盘,简单的连接起来,仅仅只是增加容量而已。用来做hadoop集群

raid的实现方式:
硬件实现:


    主板上,raid需要专门的控制器,这种控制器可能在主板上继承了,我们也可以外接的pci-e接口的适配器(HBA卡)
    多块硬盘在连接到主机之前,已经组成了一个,Linux看到的是一块硬盘,Linux需要驱动raid(BIOS完成),才能识别磁盘
    软件实现:例如每个SAT口接2块,一共接4块儿。 操作系统看到的也是4块,操作系统有个模块可以组织多块磁盘成一个磁盘。
    这个模块就是软件代码,模块需要在cpu执行,也会占用cpu的时钟周期。
    这个模块叫md。(multiple device)
    md,mdadm,/etc/mdadm.conf
    mdadm:模式化的工具
      可以组合任何块儿设备
      -A:装配模式
      -C:创建模式
      -F:监控模式
      管理模式:
        -f 模拟硬盘损坏
        -r 拿走坏设备
        -a 插上新设备替换刚才拿走的坏磁盘设备

创建一个大小为12G的RAID0:
  2*6G 或 3*4G或4*3G ...
    -C:创建模式
    -n #:用于创建RAID设备的个数
    -x #:热备磁盘的个数
    -l 级别:
    -a yes:自动为创建的raid设备创建设备文件:
    -c Chunk_Size :指定分块大小(默认512Kb)


演示:
#mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{1,2}
#mdadm -D

创建一个大小为12G的RAID1:
  2*12G 或 3*12G


#mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdb{3,5}
watch:实时监控进度条,命令要用单引号引起
#watch -n1 ‘cat /proc/mdstat‘


23. RAID与mdamd工具