# RAID ###### tags: `IT鐵人` ## 這個硬碟有多棒 ![](https://i.imgur.com/E8kpyo4.png) 在評斷一個硬碟有多高的Availability時,我們會考慮硬碟多久會壞掉、修復一次要花費多少時間,再來計算它的Availability。 第一個名詞是MTTF(Mean Time To Failure),意旨它多久後會出錯,所以這個時間越大越好,代表在這段時間內它都是可以運作的。 第二個名詞是MTTR(Mean Time To Repair),意旨它維修一次要多久,我們會希望它能夠越快修好越好。 而將上面兩個加起來的結果稱為MTBF(Mean Time Between Failure),代表兩次壞掉的間隔,也就是兩次去找老闆報修的時間間隔。 那麼我們的Availability的計算方式就是MTTF / MTBF,也就是MTTF / (MTTF + MTTR)。 修復的時間比較不好更動,而且一般來說修復的時間蠻短的,所以我們會希望盡量提高MTTF,改善MTTF的作法有下面三個: |名稱|內容| |-|-| |錯誤避免(fault avoidance)|藉由結構的設計避免錯誤的產生。| |錯誤容忍(fault tolerance)|藉由多餘的硬體或軟體,在發生錯誤的狀況下仍然能夠運作。| |錯誤預測(fault forecasting)|預期錯誤的出現和產生。| 以下我們討論fault tolerance的作法,也就是RAID。 ## RAID ![](https://i.imgur.com/qpMayY0.png) RAID全名為Redundant Arrays of Inexpensive Disks,目標就是拿多一點便宜的硬碟組合成一個大且貴的硬碟。所謂的貴也就是為了安全啦。 在RAID中我們主要使用以下兩種技術: * Data Stripping:將資料分散到不同的硬碟,讓每次存取資料能夠更快速。 * Redundancy:透過增加硬碟增加他的Availability。 以下是各種RAID的說明: <style> table th:first-of-type { width: 10%; } table th:nth-of-type(2) { width: 45%; } table th:nth-of-type(3) { width: 45%; } </style> |名稱|圖片|說明| |-|-|-| |RAID 0 (No redundancy)|![](https://i.imgur.com/g0MKdex.png)|只是拆成多個硬碟,沒辦法容許錯誤,資料發生錯誤就遺失了。 |RAID 1 (Mirroring)|![](https://i.imgur.com/k4tPz3e.png)|拆了硬碟並且複製一份,需要用到RAID 0兩倍的硬碟數目,是最昂貴的RAID作法。 |RAID 2 (Error Detecting and Correcting Code)|![](https://i.imgur.com/afExFYl.png)|借用常用在記憶體的error detection及更正作法(Hamming code)。寫入時要讀出所有硬碟資料,重新計算hamming code並寫入ECC硬碟,效率不佳。 |RAID 3 (Bit-Interleaved Parity)|![](https://i.imgur.com/pvuW1wH.png)|把硬碟分組,同組的硬碟加總計算後存入另一個硬碟,將來某個資料出現錯誤時,就把加總的部份減去其他的資料就好了。 |RAID 4 (Block-Interleaved Parity)|![](https://i.imgur.com/PUW8Foo.png)|跟RAID 3很像,只是不把所有硬碟的資料加總,以Block為單位加總,如此一來可以減少計算錯誤時所動用的硬碟數量。 |RAID 5 (Distributed Block-Interleaved Parity)|![](https://i.imgur.com/92Vdnz7.png)|為了改進RAID 4把錯誤處理的資料放在同一個硬碟,RAID 5將資料分開在每一個硬碟上,如此一來可以避免所有人都擠著要修正錯誤。 |RAID 6 (P+Q Redundancy)|![](https://i.imgur.com/q4zVmf2.png)|避免同時發生兩個錯誤,所以做了兩個錯誤偵測的區塊,這樣即使一個錯誤處理的資料不夠,還有另一個錯誤處理的資料可以使用。 |RAID 1+0 or 0+1|![](https://i.imgur.com/MGJYGl6.png)![](https://i.imgur.com/00TCsVq.png)|這邊就只是看要先做RAID 0或是RAID 1而已,可以看看。 ## 結束一個科目了~ 恭喜各位完成了計算機組織與結構,接下來會進入作業系統的部份。 如果說電腦是一個籃球比賽,那麼籃框跟籃球就是我們結束的部份,後面的作業系統就像是規則,在往上的應用程式就是球員以及打比賽的技巧。 還有很長的路阿各位... |上一篇|下一篇| |--|--| |[Disk很大,你忍一下](https://hackmd.io/@dZfCcN4hT8aUuDPv3B8CWQ/S1DlavXbt)|[OS初體驗](https://hackmd.io/@dZfCcN4hT8aUuDPv3B8CWQ/SJp_jMc-Y) ![](https://i.imgur.com/XqdN1LF.jpg)