小弟不材,想請問各位大大一個基本問題:
為什麼Raid 1 沒有像是Raid 5, 6, 3等的 Raid Level有 parity check呢?
當然如果是做Raid 1,只要最後有一顆硬碟是好的,那整個Raid set的確是可以繼續被使用
那如果是用兩顆硬碟做Raid 1,其中有一顆 硬碟A 的某一個 stripe 1 資料錯誤
怎麼去分辨到底是 硬碟B 的同一個 stripe 1 資料是對的
還是 硬碟A 的 stripe 1 是對的?
兩個是做Mirror,系統怎麼知道要拿哪一顆硬碟的 stripe 1 才是正確的?
感謝各位大大~~!
以 Raid 1 來說,使用者將兩顆硬碟做成 Raid 1 ,這個模式把寫入的資料複製成兩份
分別放入兩個硬碟
於是兩個硬碟都各自有了Block0~Block(n-1)
想想如果現在硬碟A的Block1壞掉了
系統怎麼知道要去拿取硬碟A的Block1才是正確的,或是拿取硬碟B的Block1才是正確的?
是不是有辦法可以像Raid3, 5, 6等的parity check方式去regenerate parity將錯誤的Block救回?
RAID1 不是照你想的模式在運作的.
分為主磁碟與鏡像磁碟,在主磁碟正常下,鏡像磁碟只負責同時寫入資料保持同步.
所有讀取動作還是由主磁碟負責.
只有在主磁碟異常,才會切換到鏡像磁碟進行讀寫動作(鏡像中斷).
這時候異常的主磁碟並不會有任何讀寫,要等到異常的磁碟被修復才會再重新進行鏡像的動作.
有些RAID1實作會允許同時讀取兩顆磁碟.但前提是在同一個時間不會讀取同一個磁區.
以便提升讀取的效能~
按照您的說法,資料在寫入磁碟時,只會寫入主磁碟的區塊
而鏡像磁碟只負責copy一份到自己相同的區塊
而在讀取資料時,也只會讀取主磁碟區塊的資料
也就是說用兩顆硬碟做Raid 1,讀取和寫入的效能是Raid 0的一半?
您所指的磁碟異常,是說若主磁碟的Block 1損毀,系統就會去讀取鏡像的Block 1
也就是說等到主磁碟的Block 1被修復之後,將鏡像磁碟的Block 1 複製到主磁碟的Block 1
系統才會重新去讀取主磁碟,對吧?
bahamunt提到:
也就是說用兩顆硬碟做Raid 1,讀取和寫入的效能是Raid 0的一半?
何不理解成原本的一顆硬碟的原本效能?
RAID 0不見得就是1顆硬碟的兩倍效能
bahamunt提到:
用兩顆硬碟做Raid 1,讀取和寫入的效能是Raid 0的一半
這似乎應該是:寫入時效能是50%,但讀取時還是100%,不是一半吧!
除非以前老師教錯~
bahamunt提到:
您所指的磁碟異常,是說若主磁碟的Block 1損毀,系統就會去讀取鏡像的Block 1
也就是說等到主磁碟的Block 1被修復之後,將鏡像磁碟的Block 1 複製到主磁碟的Block 1
系統才會重新去讀取主磁碟,對吧?
主磁碟Block有異常,鏡像就中斷了,會直接變成使用鏡像磁碟.
當異常的磁碟會恢復(重新拔插入或換新的),鏡像是要重建的.是全部重新來過.沒有那個寫回異常Block.
也就是RAID1是針對整個磁碟的,不是你想像中針對磁區.
所以不會有所謂主磁碟某磁區異常會去讀取鏡像磁碟磁區的問題.
RAID1偵測到主磁碟或鏡像磁碟異常,就會直接停止異常的磁碟了.
bahamunt提到:
也就是說用兩顆硬碟做Raid 1,讀取和寫入的效能是Raid 0的一半?
寫入的部份raid 1跟0確實是只有50%(不考慮其他因素).
而讀取的部份前面也說了,有實作會可以同時讀取全部磁碟,所以應該幾乎跟raid 0一樣的效能.
http://en.wikipedia.org/wiki/Standard_RAID_levels