存儲中的一個重要角色,RAID獨立冗餘磁盤陣列,從分類上將有兩種:基於raid卡的硬raid(硬件實現,速度高,適用於大型應用),基於系統的軟raid(通常包含於內核之中,性能不如硬raid,可是可優化,小型服務器)
特色:數據完整性,防止故障,容量突破,性能提高
不瞭解raid相關知識的能夠看看這個:http://blog.163.com/sjt_linux/blog/static/199310319201251863948525/
下面我快速的介紹一下:
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
node
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中調節 linux