磁碟陣列(RAID)
/ raid /
一顆磁碟是單一故障點:它一死,你的資料就跟著陪葬,而一顆磁碟的速度也限死了你能讀多快。磁碟陣列(RAID,獨立磁碟冗餘陣列)的構想,是把好幾顆便宜磁碟綁在一起,讓它們表現得像一顆更好的磁碟:更快、更大、更可靠,或這些的某種組合。訣竅是把資料巧妙地散布在各磁碟上,有時加上額外的冗餘副本或同位(parity),好讓陣列在某顆磁碟故障後仍倖存,並能同時服務多顆磁碟。把它想成一隊騾子分擔一份重擔,還備了一兩隻以防有一隻絆倒。
RAID 有編號的等級,各有不同取捨。RAID 0(分條)把資料切散到各磁碟以求速度與容量,但不加冗餘——任一磁碟壞了就全沒了;這是危險的那一個。RAID 1(鏡像)在第二顆磁碟保留一份相同副本:它能挺過故障、讀取也快,但同樣容量你得付雙倍磁碟。RAID 5 把資料加一塊同位分條散在各磁碟上,好讓陣列能從其他磁碟重建任一顆遺失的磁碟——容量效率好、能挺過一次故障,但寫入較慢(同位要重算),且重建壞掉的磁碟既吃力又慢。RAID 6 多加第二份同位,好挺過兩顆同時故障。
為什麼這很重要、初學者又錯在哪:RAID 買到的是可用性(系統在一顆磁碟故障期間繼續運轉),不是備份。RAID 防不了你誤刪的檔案、把一切加密的勒索軟體,或燒掉的整棟大樓——那些一次打中所有磁碟,而刪除會被忠實地鏡像複製。著名的口號是「RAID 不是備份」。RAID 是「靠冗餘達成可靠性」在儲存上的化身:它把一個可能的故障(一顆磁碟壞掉)變成沒事發生,但對於冗餘抓不到的失效,你仍然需要真正的備份。
四顆磁碟的 RAID 5:三顆放資料分條,第四顆放同位(三者的 XOR),並在各磁碟間輪替。若一顆磁碟死了,每個遺失的區塊都由倖存三者的 XOR 重新算出——資料不丟,陣列以降級狀態運轉,直到你換上並重建壞掉的磁碟。但若在重建完成前又掉第二顆,你就沉了。
同位讓陣列能從其餘磁碟重建一顆遺失的磁碟——挺過單一故障,而非挺過每一場災難。
RAID 不是備份。它防的是硬體故障(磁碟壞掉),不是誤刪、毀損、勒索軟體或火災——那些都會整個打中陣列。永遠要另外保留備份。