淺談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中調節