大容量儲存與磁碟排程

磁碟陣列(RAID)

/ rayd /

想像你必須在期限前用手抄完一本厚書。一位抄寫員既慢,而且若她病倒,工作便隨她一起完蛋。於是你雇了一支團隊並玩得聰明些:你可以把書拆開,讓好幾位抄寫員各自同時抄不同的部分(較快),或讓兩位抄寫員都抄完整本書,這樣萬一失去一位還有備份(較安全),又或保留仔細的核對碼,這樣若某位抄寫員的稿頁被毀,你還能從其他人那裡重建它。RAID 用好幾顆當成一顆來運作的硬碟,做的正是這些把戲。

具體來說,RAID(獨立磁碟備援陣列)把多顆實體硬碟結合成單一邏輯單元,以各種搭配運用三個核心構想。條帶化(RAID 0)把連續的區塊分散到所有硬碟上,使讀寫得以平行進行——純粹的速度,但毫無備援:失去任何一顆硬碟,所有資料都沒了。鏡像(RAID 1)在第二顆硬碟上保留一份完整的副本——能熬過一顆硬碟故障,但你得用雙倍的硬碟換取相同的容量。同位(RAID 5,以及具雙重同位的 RAID 6)把資料加上一個算出來的校驗值分散到各硬碟上,這樣若一顆硬碟(RAID 6 是兩顆)故障,它的內容能藉由從倖存者重新計算而重建——是容量、速度與備援之間的平衡。

為什麼重要以及它誠實的限制:RAID 讓你能在效能、容量與可靠性之間刻意取捨,而不必接受單一硬碟給你的一切。但它帶著關鍵的但書。RAID 不是備份——它防的是硬碟硬體故障,而非誤刪、損毀或勒索軟體,這些它都會忠實地複製或條帶化。備援不等於刀槍不入:RAID 5 能熬過一次故障,但在重建期間(從其他硬碟重新建立一顆被換掉的硬碟,在大容量硬碟上可能耗時好幾個小時),陣列是暴露的,此時若再發生第二次故障便會失去一切——這正是大型陣列常偏好 RAID 6 的原因。而 RAID 0 反而提高了故障風險,因為好幾顆硬碟中任何一顆故障,都會毀掉整個條帶。

一個四顆硬碟的 RAID 5:三顆硬碟份量的資料加上一顆硬碟份量的同位,分散在全部四顆上。若第 2 顆硬碟故障,你把它拔出、插入一顆全新的,陣列便藉由從其他三顆重新計算而重建第 2 顆的資料——但在那次重建完成之前,第二次硬碟故障將是致命的。

速度、備援、成本:RAID 讓你挑一種搭配,無法三者全拿。

RAID 是備援,不是備份。它防的是硬碟死亡,但它會忠實地把你的錯誤鏡像或條帶化——一個被刪的檔案或損毀的資料,會在每顆硬碟上同時消失。你仍然需要真正的備份。

又稱
redundant array of independent disksredundant array of inexpensive disks獨立磁碟備援陣列