高级soft RAID应用:
可使用物理分区:/dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb5 .....
RAID0
创建:
#mdadm --create /dev/md0 --level=0 --raid-devices=2 --chunk=64 /dev/sdb[12]
最少两块盘
#mdadm --create /dev/md0 --level=0 --raid-devices=3 --chunk=63 /dev/sdb[123]
--chunk 表示每个磁盘每次分配的数据块大小,单位k
#mkfs.ext3 -b 4096 -E stride=16 /dev/md0
-b 制定块大小
-E stride 制定每次下操作的步进值,就是一次写多少个块
#mdadm --detail /dev/md0
查看RAID设备的状态
RAID1:
创建:
#mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb[12]
#mkfs.ext3 -b 1024 -E stride=16 /dev/md0
#mdadm --create /dev/md0 --level=1 --raid-devices=3 /dev/sdb[123]
创建多份冗余
RAID5:
创建:
#mdadm --create /dev/md0 --level=5 --raid-devices=3 --chunk=64 /dev/sdb[123] --spare-disks=1 /dev/sdb5
创建RAID设备的配置文件:
#mdadm -Ds > /etc/mdadm.conf
#echo "device /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb5" >> /etc/mdadm.conf
//将raid设备信息,和raid设备包含的基本磁盘和分区信息放到配置文件里
制定布局算法(Layout Algorithms)
# mdadm --create /dev/md0 --level=5 --raid-devices=4 --chunk=64 /dev/sdb[1235] --spare-disks=1 /dev/sdb6 --layout=la
--layout 可以制定四种布局算法la ra ls rs 默认ls
具体表示
Left Asymmetric Right Asymmetric
sdb1 sdb2 sdb3 sdb5 sdb1 sdb2 sdb3 sdb5
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
sdb1 sdb2 sdb3 sdb5 sdb1 sdb2 sdb3 sdb5
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
RAID5 Data Updates Overhead
每一次数据修改,需要4次I/O操作,对于有频繁修改操作的存储,效率不高
1.从磁盘读取需要修改的数据
2.更新数据,写回磁盘,但是此时校验不对了
3.再次读取所有的磁盘数据,重新计算校验值
4.数据和校验值写回
RAID6:
提供两块磁盘校验,提高容错能力,最少需要4块盘
创建:
#mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sdb[1235]
RAID10:最少4块盘
创建:
#mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sdb[1235]
#mdadm --create /dev/md0 --level=10 --raid-devices=5 /dev/sdb[12356]
相当于,先创建两个RAID1设备,然后,再使用RAID1设备,创建一个RAID0设备
使用watch命令查看创建过程:
打开一个终端1:
#watch -n .5 'cat /proc/mdstat'
然后在另外一个终端2:
#mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb[123]
可以看到RAID创建过程
SYSFS:
#cd /sys/block/md0/md
有相关raid设备的参数状态
Event Notification:
#vim /etc/mdadm.conf
MAILADDR
#当你的RAID设备出现问题,会给你发送一封邮件
PROGRAM /usr/sbin/my-RAID-script
#还可以执行一段RAID相关程序
需要启动mdmonitor服务:
#/etc/init.d/mdmonitor start;chkcongif mdmonitor on
测试:
#mdadm --monitor --scan --oneshot --test /dev/md0
或者:
#mdadm -Fslt
#mail
然后,查看邮件。可以看到相关信息。就是/proc/mdstat里面的信息。
临时设定:
#mdadm --monitor --scan --mail
重启之后,不再生效。
RAID扩容:
假设现在有一个RAID5设备,/dev/md0,有三块磁盘组成,然后,你想通过增加磁盘的方式,增加RAID设备的容量
#mdadm --add /dev/md0 /dev/sdb5
#mdadm --grow /dev/md0 --raid-devices=4
#watch -n 1 'cat /proc/mdstat'
#resize2fs /dev/md0
要非常小心,扩容前,最好先备份数据。
最好这样做:
1.记录RAID设备信息,由哪些物理磁盘组成,比如:/dev/md0 (/dev/sdb1 /dev/sdb2 /dev/sdb3)
2.#mdadm --grow /dev/md0 --raid-devices=4 --backup-file=/tmp/md0.bu
3.如果成功,那么文件/tmp/md0.bu将被删除;
4.如果失败,可以这样修复:
#mdadm --assemble /dev/md0 --backup-file=/tmp/md0.bu /dev/sdb[123]
共享热备盘:
假设有RAID设备/dev/md0,有热备盘/dev/sdb7;现在有两外一个RAID设备没有热备盘,则可实现两个RAID设备共享一个热备盘.
/dev/md0 (/dev/sdb1 dev/sdb2 dev/sdb7) level=1
/dev/md1 (/dev/sdb5 /dev/sdb6) level=1
启动mdmonitor服务
#mdadm -Ds >> /etc/mdadm.conf
#vim /etc/mdadm.conf
ARRAY /dev/md0 level=raid1 num-devices=2 metadata=0.90 spares=1 UUID=453699fc:55ef7a49:8a9e3eea:f6befb18 auto=yes spare-group=share
ARRAY /dev/md1 level=raid1 num-devices=2 metadata=0.90 UUID=edb9946f:09784542:2581411e:8a6ba6f4 auto=yes spare-group=share
#mdadm --manage /dev/md1 -f /dev/sdb5 -f /dev/sdb5
则md0的热备盘可以漂移到md1上。
给RAID Array改名:
例如,将RAID设备/dev/md1 该为 /dev/md2
/dev/md1 (/dev/sdb5 /dev/sdb6)
#mdadm -S /dev/md1
#mdadm -A /dev/md2 --super-minor=1 --update=super-minor /dev/sdb[56]
删除raid设备:
删除整个RAID:
mdadm /dev/md0 --fail /dev/sdb --remove /dev/sdb
mdadm /dev/md0 --fail /dev/sdc --remove /dev/sdc
mdadm /dev/md0 --fail /dev/sde --remove /dev/sde
mdadm /dev/md0 --fail /dev/sdf --remove /dev/sdf
mdadm --stop /dev/md0
mdadm --misc --zero-superblock /dev/sdb
mdadm --misc --zero-superblock /dev/sdc
mdadm --misc --zero-superblock /dev/sde
mdadm --misc --zero-superblock /dev/sdf
即: 先删除RAID中的所有设备,然后停止该RAID即可