iT邦幫忙

0

Raid的基本概念

小弟不材,想請問各位大大一個基本問題:

為什麼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 才是正確的?

感謝各位大大~~!

看更多先前的討論...收起先前的討論...
關於您的第一個疑問:

感覺好像看到了一個「為什麼飛機不在鐵路上跑」的問題。

就如同汽車、火車、船舶、飛機之於人類一樣,沒有哪種交通工具可以完全替代掉彼此。

在「瑞的」的世界也是類似的狀況。

無論哪種「瑞的」,都是為了因應不同資料保全需求而有的磁碟儲存管理機制,每種「瑞的」等級各司其職,皆有其專責的「明確目標」。

接下來的疑問:

您的 Stripe 1,所指為何?
bahamunt iT邦新手 4 級 ‧ 2012-07-04 15:24:38 檢舉
感謝您的回應!

是的,每個Raid Level的使用是讓使用者自己參考目前的情況,來搭配硬碟達到自己的需求

以 Raid 1 來說,使用者將兩顆硬碟做成 Raid 1 ,這個模式把寫入的資料複製成兩份

分別放入兩個硬碟

於是兩個硬碟都各自有了Block0~Block(n-1)

想想如果現在硬碟A的Block1壞掉了

系統怎麼知道要去拿取硬碟A的Block1才是正確的,或是拿取硬碟B的Block1才是正確的?

是不是有辦法可以像Raid3, 5, 6等的parity check方式去regenerate parity將錯誤的Block救回?

再次謝謝大大的回應,您的解釋很清楚:)
小成 iT邦高手 10 級 ‧ 2012-07-04 17:21:24 檢舉
感覺你好像沒真的搞清楚RAID 1跟RAID 5的差別...
RAID 1是鏡像,完全的資料複製,存進主硬碟的資料完整的複製到鏡像硬碟上
如果哪天主硬碟突然出問題,鏡像硬碟就接手,主硬碟就被踢出去
鏡像硬碟壞掉就踢鏡像硬碟等你換硬碟
既然已經完整複製了,那為什麼需要parity bit?
parity check的運算也是需要資源去運算的
RAID 5至少需要三顆硬碟,三顆硬碟的情況下,資料分割兩份分存兩顆硬碟,然後運算出parity bit存到另一顆,所以可使用的空間是兩顆的容量,可以允許壞一顆,那這樣你怎麼把兩顆容量的資料完全複製到一顆硬碟中? 更不用說10顆硬碟的RAID 5,所以他才需要額外運算出parity bit來做檢查
RAID 1既然已經MIRROR了,那資料已經是完整的複製了,那就不需要運算了吧?

>想想如果現在硬碟A的Block1壞掉了
>系統怎麼知道要去拿取硬碟A的Block1才是正確的,或是拿取硬碟B的Block1才是正確的?
你都說硬碟A已經壞了,那資料讀不出來,當然就被RAID踢出來了阿,當然是B來接手
你有碰過有壞軌的硬碟嗎? 壞軌會讀很久吧? 讀不到資料,無法在限制的時間內reallocate磁區,硬碟就被踢出RAID了,既然你都很肯定地說是哪顆硬碟壞掉了,壞掉就一定是他壞掉阿
除非你手動去分別把兩顆硬碟的資料故意改成不一樣的,然後再裝回來,但這樣子也還是會以主硬碟的資料為主,鏡像硬碟只是將主硬碟的資料複製過來而已
以 Raid 1 來說,使用者將兩顆硬碟做成 Raid 1 ,這個模式把寫入的資料複製成兩份
分別放入兩個硬碟

我寧可把它理解為:把相同的資料,同時寫入兩顆硬碟

於是兩個硬碟都各自有了Block0~Block(n-1)
想想如果現在硬碟A的Block1壞掉了
系統怎麼知道要去拿取硬碟A的Block1才是正確的,或是拿取硬碟B的Block1才是正確的?

可否反問您一個問題
開題是 Stripe,這邊又是 Block
可否說清楚你指的到底是什麼東西?


是不是有辦法可以像Raid3, 5, 6等的parity check方式去regenerate parity將錯誤的Block救回?


我感覺好像看到了這樣的問題:「汽車的螺旋槳或翅膀能不能修理」
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

6
michaelwan
iT邦高手 1 級 ‧ 2012-07-04 16:13:42
最佳解答

RAID1 不是照你想的模式在運作的.
分為主磁碟與鏡像磁碟,在主磁碟正常下,鏡像磁碟只負責同時寫入資料保持同步.
所有讀取動作還是由主磁碟負責.
只有在主磁碟異常,才會切換到鏡像磁碟進行讀寫動作(鏡像中斷).
這時候異常的主磁碟並不會有任何讀寫,要等到異常的磁碟被修復才會再重新進行鏡像的動作.

看更多先前的回應...收起先前的回應...

有些RAID1實作會允許同時讀取兩顆磁碟.但前提是在同一個時間不會讀取同一個磁區.
以便提升讀取的效能~

bahamunt iT邦新手 4 級 ‧ 2012-07-04 17:12:05 檢舉

按照您的說法,資料在寫入磁碟時,只會寫入主磁碟的區塊

而鏡像磁碟只負責copy一份到自己相同的區塊

而在讀取資料時,也只會讀取主磁碟區塊的資料

也就是說用兩顆硬碟做Raid 1,讀取和寫入的效能是Raid 0的一半?

您所指的磁碟異常,是說若主磁碟的Block 1損毀,系統就會去讀取鏡像的Block 1

也就是說等到主磁碟的Block 1被修復之後,將鏡像磁碟的Block 1 複製到主磁碟的Block 1

系統才會重新去讀取主磁碟,對吧?

小成 iT邦高手 10 級 ‧ 2012-07-04 20:15:36 檢舉

bahamunt提到:
也就是說用兩顆硬碟做Raid 1,讀取和寫入的效能是Raid 0的一半?

何不理解成原本的一顆硬碟的原本效能?
RAID 0不見得就是1顆硬碟的兩倍效能

花輪 iT邦大師 1 級 ‧ 2012-07-04 22:05:20 檢舉

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

我要發表回答

立即登入回答