淺談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
[email protected]
MAILFROM
[email protected]
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中調節