浅谈linux性能调优之五:调优软raid
存储中的一个重要角色,RAID独立冗余磁盘阵列,从分类上将有两种:基于raid卡的硬raid(硬件实现,速度高,适用于大型应用),基于系统的软raid(一般包含于内核之中,性能不如硬raid,但是可优化,小型服务器)
特点:数据完整性,防止故障,容量突破,性能提升
下面我快速的介绍一下:
RAID 0:
没校验,数据分段写入磁盘,吞吐量增大,不容错,100%使用,至少2块
test : mdadm --create /dev/md0 --level=0 --raid-devices=2 --chunk=64 /dev/sd{a,b}1
mke2fs -j -b 4096 -E stribe=16 /dev/md0
notice: --chunk 是在创建时指定,stribe是在格式时指定,stribe = chunk / stribe
RAID 1:
镜像,容错,读性能,至少2块,2的倍数,利用率(100/n)%
test : mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda4,5
RAID 5:
分布式奇偶校验条带化,容错,性能,若一个磁盘损坏,再插入一个新磁盘时,会降级(需要重新计算校验值)
至少3块,支持热备盘,利用率100*(1-1/n)%
test : mdadm --create /dev/md0 --level=5 --raid-device=3 /dev/sd{a,b,c}2
RAID5中数据经常更新时,开销较大
RAID 6:
两份校验,可以同时坏两块盘,至少4块,利用率100*(1-2/n)
test : mdadm --create /dev/md0 --level=6 --raid-device=4 /dev/sd{a,b,c,d}1
RAID 10:
先作raid1,再作raid0
至少4块
mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sd{a,b,c,d}1
mdadm -C /dev/md0 -l10 -n4 /dev/sdb{5,6,7,8}
邮件工作:
/etc/mdadm.conf
MAILADDR root@example.com
MAILFROM root@node1.example.com
PROGRAM /usr/bin/myscripts
测试:mdadm -Fslt
总结:从各自的特点可以看出:
raid0容量大,读写性能高,但是安全性不好。
raid1安全性好,利用率低
raid5分布式奇偶校验,安全性好,读写性能较好,但是若数据修改频繁,建议不使用,可以看看上面的图
raid6与raid5类似,支持同时坏两块盘
raid10集成raid1,raid0。比起raid5,6修改数据时开销小
你若使用raid,raid级别的选择便是很重要的!
优化建议:
1.若你使用两个或两个以上raid,建议配置“软raid的热迁移”,首先节省了冗余盘的成本,再者结合邮件通知机制做好数据保护
2.对于raid0,5,6 存在两个特别重要的概念:(chunk size),(Stripe size)
chunk size:
RAID中每个成员盘一次写入的数据量,大于chunk size才到下一个盘读写
Stripe size = (chunk size)/(filesystem blocksize)
表示:在一个盘中一次性写入量
chunk size = page size(4K) * N
chunk size = avgrq-sz * 512 / 1024 / disks(iostat -x /dev/sda)
Stripe size = (chunk size)/(filesystem blocksize)
注意:chunk size 创建时使用 --chunk = 8
stripe size 格式化时使用 -E stripe = 2
3.写位图:只针对RAID1
在操作失败时,可以在失败的基础上基础操作,而并非从头开始(例如我们复制一个大文件)
--write-bebind 优先读
--write-mostly 优先写
4.具体还可以在/sys/block/mdX/md中调节