RH436-6 Advanced RAID

简介:

生产环境中常用RAID:

0、1、5、6、10
#存储一般使用10
 
raid功能:
1.保证数据的完整性(冗余)
2.硬盘容错
3.提高性能
 
mdadm
1.创建raid(设备文件:/dev/md0,/dev/md1...)
2.配置文件:/etc/mdadm.conf
3.创建raid时一定要添加“-a yes”选项,保证自动创建/dev/md1或/dev/mdN设备文件。
 
RAID0:条带化
1.无奇偶校验
2.数据是分段的
3.循环写入数据到多个硬盘
4.提供大的吞吐量(写性能优秀)
5.无容错机制,存储概率为100%(即存储容量=硬盘总容量)
6.可以设定chunk size
7.磁盘数愈多坏的可能性越大,一块盘损坏会导致所有数据的损坏。
 
Chunk size和stribe (RAID0,RAID5,RAID6有这个概念)
1. 一个数据包的大小称之为chunk size:RAID里面每个成员一次写入的数据量。当一次写入的量不到chunk size设定的大小的时候是不会写入下一个成员盘。chunk size的值必须是多个page size的大小,在X86架构下一个page size的大小是4KB即chunk size的大小必须是2的N次方 n大于1 必须是4的倍数。
 
stride是每次写入raid成员的block数,即64KB的数据要写多少次。stride 等于 chunk size / filesystem block size,创建文件系统时指定。
 
2. chunksize=(avgrq-sz × 512)/(raid磁盘数 × 1024)=2的N次方KBim/disk
   stride=chunksize/filesystemblocksize
实例:
[root@iscsi-server ~]# iostat -x /dev/sdb
Linux 2.6.18-194.el5 (iscsi-server)     2011年08月12日
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.05    0.02    0.09    0.07    0.00   99.77
Device:  rrqm/s  wrqm/s  r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sdb     2.41     1.17  0.40  0.03  19.07  9.55    65.17     0.00    4.75   0.85   0.04
#查询磁盘的avgrq-sz,avgrq-sz是扇区数,每个扇区512Bit
 
Chunksize=(65.17×512)/(3×1024)=10.86=8KBit/disk
Stribe=(8KBit/disk)/(4KBit)=2
 
3.指定chunk size和stribe
 
 #mdadm -C /dev/md0 -a -yes -l 0 -n 2 --chunk=64 /dev/sda1 /dev/sdb1
 
 #mkfs.ext3 -b 4096 -E stribe=16 /dev/md0
 
 
RAID1:镜像卷
1.全镜像,
2.数据复制,提升了大的容错能力,
3.提高了读性能
4.至少两块盘
5.存储概率:(100/N)%(N=硬盘数)
6.创建:#mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sda1 /dev/sdb1
 
RAID5:通过奇偶校验的条带(平均分布的奇偶校验)
1.通过奇偶校验的条带化
2.提高性能和容错能力
3.对于修改数据性能很差(每修改一次数据要对数据重新做一次奇偶校验,当数据的修改量大于25%的时候不建议使用RAID5)
  修改数据时会做4次I/O操作
  3.1.读取数据
  3.2.更新数据,写回到磁盘,奇偶校验不正确
  3.3.读raid的所有磁盘,重新做奇偶校验检查
  3.4.更新数据和奇偶校验。
4.至少3快硬盘
5.存储效率:100(1-1/N)%
6.一旦有raid设备损坏,RAID立即进入降级模式,支持热备盘。
7.支持四种奇偶校验布局(--layout=<type>):Left Asymmetric、Right Asymmetric、Left Symmetric(默认布局)、Right symmetric
 
Left Asymmetric         Right Asymmetric
 
sda1 sdb1 sdc1 sde1     sda1 sdb1 sdc1 sde1
 D0   D1   D2   P        P    D0   D1   D2
 D3   D4   P    D5       D3   P    D4   D5
 D6   P    D7   D8       D6   D7   P    D8
 P    D9   D10  D11      D9   D10  D11  P
 D12  D13  D14  P        P    D12  D13  D14
 ...                     ...
 
 
 Left Symmetric          Right Symmetric
 
sda1 sdb1 sdc1 sde1     sda1 sdb1 sdc1 sde1
 D0   D1   D2   P        P    D0   D1   D2
 D4   D5   P    D3       D5   P    D3   D4
 D8   P    D6   D7       D7   D8   P    D6
 P    D9   D10  D11      D9   D10  D11  P
 D12  D13  D14  P        P    D12  D13  D14
 
8.创建raid5:#mdadm -C /dev/md0 -a yes -l 5 -n 3 /dev/sd[abc]1
 
 
RAID6(5+1)
1.两份奇偶校验的条带化
2.奇偶校验比RAID5更慢,数据开销更大,提供更多容错
3.两块盘损坏时进入降级模式
4.至少4块磁盘
5.存储效率:100(1-2/N)%
6.创建RAID6
  #mdadm -C /dev/md0 -a yes -l 6 -n 4 /dev/sd[abcd]1
 
 
RAID10(1+0)
1.带镜像的条带化
2.提高性能和容错能力
3.至少4块盘
4.存储效率:(100/N)%
5.创建RAID10
  mdadm -C /dev/md0 -a yes -l 10 -n 4 /dev/sd[abcd]1
 
 
查看RAID状态(/proc/mdstat)
1.mdadm --scan
2.watch -n .5 'cat /proc/mdstat'
3.mdadm -D /dev/md0或mdadm --detail /dev/md0
4.SYSFS Interface:/sys/block/mdX/md
 
 
/etc/mdadm.conf
1.管理和配置RAID架构
2.允许分组为多RAID提高热备盘
3.为已存在raid创建配置文件:
#mdadm --examine --scan
#mdadm -D -s   #-s:扫描
 
eg:
[root@station3 ~]#mdadm -D -s > /etc/mdadm.conf
[root@station3 ~]#vim /etc/mdadm.conf
ARRAY /dev/md0 level=raid5 num-devices=3 spares=1 UUID=90efacda:657cee38:87172dab:543d8c23
  devices=/dev/sda1,/dev/sdb1,/dev/sdc1 auto=yes
#如果设备是/dev/md1或以上的话,必须加上auto=yes
#一行开头为空格表示该行接上一行。
 
事件通知
1.要求email工作正常
2./etc/mdadm.conf   #当raid出现故障时,可发送邮件或执行脚本
MAILADDR root@example.com    #邮件接收者
MAILFROM root@node1.example.com  #邮件发送者
PROGRAM /usr/sbin/my-RAID-script  #执行脚本
3.测试工具:mdadm --monitor --scan --oneshot --test
            mdadm -Fs1t
4.要求启动mdmonitor服务  #默认该服务是无法启动,必须在/etc/mdadm.conf中添加MAILADDR等故障告知处理
 
 
RAID调整
重新做raid、重新条带化、重新改变raid的布局
1.调整设备数量
2.调整chunksize大小
3.改变数据布局
4.改变校验的位置和类型
在做RAID调整时必须备份关键区
 
拉伸磁盘到raid5中
[root@station3 ~]#mdadm /dev/md0 -a /dev/sda8
[root@station3 ~]#mdadm /dev/md0 -a /dev/sda9
[root@station3 ~]#mdadm -G /dev/md0 -n 4 --backup-file=/tmp/md0.bu #指定将关键区备份到文件,如果拉伸成功时,系统会自动删除该文件
[root@station3 ~]#mdadm --assemble /dev/md0 --backup-file=/tmp/md0.bu /dev/sda[56789] #恢复
[root@station3 ~]#watch -n 1 'cat /proc/mdstat'
[root@station3 ~]#resize2fs /dev/md0   #调整文件系统
 
共享热备盘(热备盘漂移)
1.至少有一个raid有热备盘
2.将raid信息写入/etc/mdadm.conf中
3.建立共享热备盘组:share1
4:为每个Raid 指定其共享的热备盘组:spare-group=share1
 
e.g:
[root@station3 ~]# mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sda{10,11}
[root@station3 ~]# mdadm -D -s >> /etc/mdadm.conf
[root@station3 ~]# vim /etc/mdadm.conf
MAILADDR root@station3.example.com
ARRAY /dev/md0 level=raid5 num-devices=4 spares=1 UUID=e1755b3f:13093e23:619799f8:2b921ce2 auto=yes
  spare-group=share   #共享组名可自定义
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=d3cf69c6:a5c19ae7:f2f87e8b:8021e1b9 auto=yes
  spare-group=share
[root@station3 ~]# service mdmonitor restart   #要求重启mdmonitor服务
[root@station3 ~]# mdadm -D /dev/md0
...
 Number   Major   Minor   RaidDevice State
       0       8        5        0      active sync   /dev/sda5
       1       8        6        1      active sync   /dev/sda6
       2       8        7        2      active sync   /dev/sda7
       3       8        8        3      active sync   /dev/sda8
 
       4       8        9        -      spare   /dev/sda9
#热备盘为/dev/md0中/dev/sd9
 
[root@station3 ~]# mdadm -D /dev/md1
...
    Number   Major   Minor   RaidDevice State
       0       8       10        0      active sync   /dev/sda10
       1       8       11        1      active sync   /dev/sda11
 
[root@station3 ~]# mdadm /dev/md1 -f /dev/sda11
 
[root@station3 ~]# mdadm -D /dev/md1
...
Number   Major   Minor   RaidDevice State
       0       8       10        0      active sync   /dev/sda10
       1       8        9        1      active sync   /dev/sda9
 
       2       8       11        -      faulty spare   /dev/sda11
#md1中/dev/sda11出现故障后,热备盘/dev/sda9自动漂移到md1中了
 
[root@station3 ~]# mdadm /dev/md1 -r /dev/sda11
 
[root@station3 ~]# mdadm /dev/md1 -a /dev/sda11
 
[root@station3 ~]# mdadm -D /dev/md1
...
Number   Major   Minor   RaidDevice State
       0       8       10        0      active sync   /dev/sda10
       1       8        9        1      active sync   /dev/sda9
 
       2       8       11        -      spare   /dev/sda11
#md1更换硬盘后,新加硬盘会再次变成热备盘
 
 
重命名RAID
1.移动一个raid到移到一个新系统
2./dev/md0等设备被新系统占用。
[root@station3 ~]# mdadm -S /dev/md1
 
[root@station3 ~]# mdadm --assemble /dev/md2 -a yes --super-minor=1 --update=super-minor /dev/sda10 /dev/sda9
#--super-minor=1,1为原来要改的/dev/mdX号,这里为/dev/md1
#要指定原来RAID组成的磁盘。
 
raid 1的位图(仅对raid 1有效)
位图bitmap:预防raid磁盘在写期间被阻断。保证同步失败时,下次同步时直接从改变的地方直接同步,无需从头再来。
分为内部位图和外部位图
1.添加一个内部位图区
#mdadm /dev/md0 -G -b internal
2.添加一个外部位图区
#mdadm /dev/md0 ---grow --bitmap=/absolute/path
 
3.创建raid1时,指定写入周期
#mdadm -C /dev/md0 -l1 -n2 -b /tmp/md0 --write-behind=256 /dev/sdc1 --write-mostly /dev/sdd1
在一个慢设备/dev/sdd1上创建raid,以上表示当在对设备/dev/sdc1的写请求达到256个是开始往慢设备/dev/sdd1发送写请求,仅对raid 1有效。
 
raid错误处理和数据一致性的检查
打开坏块的检查。
#echo check >> /sys/block/mdX/md/sync_action  #要求写入开机脚本/etc/rc.d/rc.local。

本文转自netsword 51CTO博客,原文链接:http://blog.51cto.com/netsword/765038
相关文章
|
2天前
|
移动开发 Linux
Linux(10)Debain EC25 Modem Automatic networking
Linux(10)Debain EC25 Modem Automatic networking
14 0
|
8月前
|
Linux
14.2.2 【Linux】software, hardware RAID
14.2.2 【Linux】software, hardware RAID
89 0