返回   吉米丘上的海盜樂園 > ◎ 吉 米 丘 上 的 天 地 > 硬 體 新 知 討 論 區 :::... > 硬 體 新 知 討 論 精 華 區 :::...

硬 體 新 知 討 論 精 華 區 :::... 在硬體、數位相機、電腦等等所有新知精華區

回覆
 
主題工具 顯示模式

[分享]RAID基本漫談
舊 11-22-2004   #1
dt3902
游客
 
文章:
n/a
預設 [分享]RAID基本漫談

RAID基本漫談

容錯式獨立磁碟陣列(RAID,Redundant Array of Independent Drives)的觀念是由加州柏克萊大學(the University of California at Berkeley)的一組研究人員在1987年所提出來的。研究人員是在尋找以容量小但較便宜的PC式硬碟來取代昂貴、大主機用的高容量儲存裝置,目標是提升資料的存取效能,不被應用的因素限制,並且提供資料的容錯性,避免硬碟故障而影響資料的可靠性。
在那時侯,研究人員就定義了5個等級的磁碟陣列(RAID)。其中3個RAID等級被用來做為資料的儲存及擷取。而第6個稍後被此研究小組描述的等級,也就是RAID 6是結合原來被定義等級來使用,所以在此我們不討論。

『數字較高的磁碟陣列,技術較先進』是用戶對於磁碟陣列level通常會發生的誤解。事實上並不是如此界定的。RAID level-0、level-1、level-3甚至level-5所代表的意義只是用不同的技術方法來儲存資料而已,沒有其他任何意義。

Disk array level最佳的選擇應該由應用對於輸入∕輸出的需求特性來決定,每個level都有其適用的應用領域。舉例來說,某一些磁碟陣列產品利用RAID-5技術。RAID-5陣列允許陣列中的磁碟被獨立地存取,所以RAID-5最適合用在I/O需求較小、分散式隨機存取及經常讀取的應用上,如銀行交易的處理上,面對的是同時有許多小筆資料傳遞的需求。而從另一方面來說,RAID-5的獨立存取需求,使其不適用於大量資料傳輸率的應用。
又例如: RAID-1的redundancy功能是透過一對一的mirrored disks來完成,這雖然很保險,但卻是非常昂貴的解決方案。

Striped disks (有時稱為 RAID-0) 對於各種不同的應用表現出相當好的效能,但是完全沒有容錯備份也就是沒有任何redundancy的功能。只要有一個硬碟產生些微故障,資料就會全部損毀掉。

Ciprico磁碟陣列技術全都是以RAID-3為基準。市場目標是放在需要高頻寬高效能的資料取存取應用,如隨選視訊(VOD)、數位廣告插播(AD Insertion)、數位剪輯、3D動畫、影像處理、衛星遙測、石油探勘、CAD/CAM。這些應用需要非常快速地儲存並取用大量的資料,RAID-3技術透過專屬的parity disk來平行存取資料磁碟並且具有卓越的redundancy功能,正是這類應用的最佳技術理論。Ciprico的RAID-3 disk arrays提供非常高速的讀∕寫資料轉換,而且在某一磁碟故障時也不會產生執行效能的損失。
***以上資料摘譯自Ciprico公司的"RAID Tech Primer"




◇ 多餘廉價磁碟陣列 / Redundant Array of Inexpensi
-----注: 以下文章轉貼自 bbs.ee.ntu.edu.tw WindowsNT 板精華區
RAID 等級是在磁碟陣列上儲存資料的不同方法。總共分為六個等級,從 0 到 5。RAID 0 是一種簡單的 Striping 方法。在作業系統下,採用 RAID 的硬體或軟體(常是硬體控制卡)將所有的磁碟視為單一的邏輯單位,你再也無法存取各別的磁碟機。
在你將資料寫入磁碟時,控制卡會把資料分成一個個的區塊(Block),並把第一個區塊儲存在第一個磁碟上,第二個區塊儲存在第二個磁碟上等等。(區塊的大小和你的控制卡有關。)RAID 0 的優點是 讀/寫 的負載平均分攤在數個磁碟上。舉例來說,如果你的 RAID 0 在五個磁碟機上執行,要寫入 1GB 的資料,則每個磁碟就只要寫入 200MB。因此 RAID 0 在磁碟的 I/O 表現極佳。RAID 0 主要缺點就是如果一個磁碟壞了,一切資料就毀了。其他磁碟上沒有完整的資料或資料庫,只是無用的區塊罷了。

RAID 1 是你的基本鏡像。當兩個磁碟在對方上建立鏡像時,寫入磁碟 A 的資料也寫入了磁碟 B。寫入到鏡像對並不會比寫入單一的磁碟久,但一張好的控制卡卻可以讓你讀資料的速度變成兩倍。RAID 1 可以擴充到數個磁碟:如果你用四個磁碟儲存資料,你就需要另外四個磁碟來當作鏡像。RAID 1 的主要優點就是容錯非常好;主要的缺點就是要花兩倍的錢買所需的空間。還有,一張控制卡能處理的磁碟數目有限(通常小於 12 個),因此以許多磁碟使用 RAID 1 也會讓你要多買一張控制卡。

我直接跳到 RAID 4,因為 RAID 2 和 RAID 3 沒什麼新功能,也沒有人在用。事實上RAID 4 也無人使用,但是你要瞭解它才能明白 RAID 5。RAID 0 的好處在於速度快,RAID 1 的好處則是能保護你的資料。RAID 4 是第一個想要融合這兩者的嘗試。它不為每個磁碟建立鏡像,而是使用一個裡面包含寫入到其它磁碟的區塊,其 BitWise Exclusive OR(XOR) 的 Parity 磁碟。如果其中一個 Non-parity 的磁碟壞了,控制卡會讀取其他的磁碟,以 Parity 磁碟來計算壞磁碟上的資料應該為何。這是個有容錯功能,又只要多買一個磁碟的好方法。磁碟陣列中全部的可用空間為:
(N-1)/N*全部的陣列空間
如果你有三個 1GB 的硬碟,你就有 2GB 的空間(購買的 66%)。如果你有 7 個 2GB的硬碟,就有 12GB 的空間(86%)。RAID 4 唯一的缺陷就是 Parity 磁碟變成所有寫入動作的瓶頸,也因此造就了 RAID 5。RAID 5 迄今仍是最常使用的 RAID 等級,它把 RAID 4 的想法延伸,把 Parity 區塊分散在所有磁碟上。因此每一個磁碟都包含資料及一部份的 Parity 資訊,也就沒有 Parity 磁碟的瓶頸了。

RAID 5 的優點是把 讀/寫 負載分散到所有的磁碟上,而某個磁碟壞掉後資料也不會流失。RAID 5 的主要缺點就是在寫入資料時比 RAID 0 或 RAID 1 慢。在寫入某個區塊時,RAID 5 必須先知道要在 Parity 區塊內寫入什麼資料,因此需要從原始區塊及 Parity 區塊讀取,然後才能作寫入的動作。另一個可能的壤處就是如果兩個磁碟壞了,你就完了! 然而這種情況發生表示你作了不好的硬體選購。
磁碟陣列 Disk Array 1999/07/04
1. 引言
2. 源由
3. 陣列種類
4. Parity 容錯基本原理
5. 陣列控制器型式
6. 結語

引言:

"磁碟陣列", 或說是 "硬碟陣列", 或是 "磁盤陣列", 在今天, 相信已經不再是那麼令人感到陌生了. 因為在這幾年來, 國內的網路伺服器之成長迅速, 相隨的對資料之安全性, 也更加重視和要求.
固然, 每日的磁帶或其他媒體方式的備份仍然重要, 但對於硬碟故障後的恢復間隔, 也希望在可接受範圍內, 得到最大的縮短. 此時最好的方案, 則非磁碟陣列莫屬. 因為磁碟陣列的優點:
具有單一大容量的好處, 提供了硬碟容錯功能, 易於管理的優點.
我們由美國Disk Trend公司的資料上得到, 磁碟陣列產值從 1993年的28億美元, 到1996年的107億美元, 同時更預估每年將以12% 左右成長率, 在世界各地裝設. 這肯定了它的重要性及必要性.

源由:

1987年, 有一群研究者在美國 University of California - Berkeley 發表了一篇文章: A Case for Redundant Arrays of Inexpensive Disks", 而 IBM 是此一專案研究的主要協助者. 這篇文章, 介紹了一個新的 "頭字語" - R A I D. 同時並定義了五種 RAID 代號 - RAID level.

這篇文章的主要論題, 是針對當時的硬碟科技, 在容量及速度上, 無法追上CPU 及記憶體的發展的現象, 提出多種改善方法. 因為長期來看, 這種腳步的差距, 會造成硬碟無法即時供應對資料的急迫需要. 所以, 它利用了各式技巧, 將許多較小容量的硬碟, 以 RAID 技術, 規劃為一座大的硬碟機. 同時, 在實際儲存資料時, 透過這項技術, 將資料切割成多區段並分別同時存放於各個硬碟機上. 在實際讀取資料時, 也是同時自此多顆硬碟機讀出資料. 由此可見, 這項技術 RAID, 著實提高了大型硬碟的效率.

值得一提, 它的觀念, 也提供了一套思考及開發的方向: 資料容錯. 藉由 "同位檢核" Parity 的概念及方法, 能在該群陣列硬碟中任一顆硬碟故障時, 仍能讀出資料, 並可於資料重建時, 將原故障硬碟內之應有資料, 經計算後置回替代的新硬碟中, 使回復成原貌.

這篇文章也指出了許多在各不同代號型式的 RAID, 其開發上的問題, 大多相關於強調 "速度" 及 "成本" 上的改善. 這和今日的陣列供應商所多強調的 "可靠性" Reliability 及 "資料可供應性" Data Availability, 似乎有些不同. 當然這也是因為時代背景的差異. 不過, 這也使得各磁碟陣列供應商, 各自有較大的發揮空間, 針對容錯性, 成本, 及效率, 有不同的處理方式及結果.

例如: 在主要系統供應商方面, 如 IBM, DEC, Compaq, NCR, DG 等, 都有其自己的磁碟陣列產品, 以應用於其本公司各級大/中/小型系統, 並擴及連接至其他廠牌系統的產品. 而在專業磁碟陣列供應商中, 如 EMC, CMD, DPT, IPL, ... 等, 也各自有適用於各級系統的陣列產品. 而這些主要磁碟陣列供應商的產品, 則佔了陣列產品超過 90% 的總銷售值 (1996年的資料).

陣列種類: 以下就幾項基本的名詞作一分項解釋.

陣列種類 英文簡述 硬碟容錯嗎? N 顆硬碟可用容量
RAID level 0 Stripe / Span No N
RAID level 1 Mirror Yes N÷2
RAID level 3 Parallel with Parity Yes N-1
RAID level 4 Parallel with Parity Yes N-1
RAID level 5 Striped with Rotating Parity Yes N-1
RAID level 0+1 Mirror + Stripe Yes N÷2

RAID level 0 -
這個代號是被定義為非容錯的硬碟群組. 而組構的多顆硬碟機, 被依一定的切割區段, 連貫成一顆大容量的陣列硬碟. 它沒有同位檢核的位元, 所以無法救回因其中任一硬碟故障而毀損的整個資料.

這是最有效率的一種陣列類別, 因為資料可以多個區段方式, 在同一時間, 將之分別存放在該群所有陣列硬碟裡. 在讀取資料時, 亦可在同一時間, 由該群所有陣列硬碟送出資料至陣列控制器. 換言之, 此種陣列類型的效率, 是與該群內陣列硬碟數成正比. 所以在讀寫強而集中的應用領域 (如: 影音播放系統), 可藉 RAID level 0 得到較佳的輸出效率及品質.

RAID level 1 -

就是 "磁碟鏡像" Disk Mirroring. 它可將兩顆硬碟機為一組, 在有資料欲寫入時, 在同一時間將之存放在本組的兩顆硬碟中, 所以在同 "鏡像對" Mirrored Pair 中的兩硬碟, 其內部資料是完全一樣的. 而在讀取資料時, 則可自兩顆硬碟同時讀出, 即使是來自不同的用戶端所提出之不同讀取要求.
這一型式的磁碟陣列, 不但不會降低寫入的速度, 更能提高讀取的效率. 事實上, 它是容錯型式的磁碟陣列中, 效率最高的. 不過其硬碟機的容量利用率, 則只有實際容量的一半. 所以, RAID level 1 常應用於高安全要求的多人使用環境, 例如: 作業系統磁碟 OS Disk.

RAID level 0+1 -

這是一種 Dual Level RAID, 也有人稱之為 RAID level 10. 這可不是 "十", 它是 "零加一", 亦即是兩組依一定的切割區段, 連貫成不同的兩顆大容量的陣列硬碟, 互相為 "鏡像". 在每次寫入資料, 磁碟陣列控制器會將資料同時寫入該兩組 "大容量陣列硬碟組" 內.
同 RAID level 1 一樣, 雖然其硬碟使用率亦只有 50%, 但它卻是最具高效率的規劃方式. 真理: 真正的 "安全性" 加 "速度" 是建立在成本上的.

RAID level 3 -

這種規劃方式, 常用在繪圖, 影像處理, … 等, 對資料進行大量讀或寫的應用領域. 它由陣列控制器內建的 XOR 邏輯, 根據切割之區段大小, 計算出同位檢核位元或位元組. 這項功能, 提供了資料容錯效果. 而這個區段的大小, 是以bit 或 byte 為單位.
每項資料中的同位檢核資料, 統一存放在一特定的同位碟 (Parity Disk)上. 而資料則是分別散存在各資料碟 Data Disk內. 單從少部份的資料碟, 是無法取得完整原資料的.

RAID level 4 -

跟上述的 level 3 大部份相同. 不過其支援的區段大小相當多樣, 是以 block 為單位計算的. 它可以是單一 block 為區段, 也有以多個 block 為區段大小. 所以有些資料是可以從某資料碟中取得, 這促成一個較 RAID level 3 優勢的是: 允許 "重疊讀取" Overlapped Read Operation.
但是在作寫入時, 因為需同時更新 "同位碟" 的資訊, 所以不具有 "重疊寫入" 的能力. 換言之, 在同時間中多筆資料要求寫入時, 因為每筆資料之同位資訊需寫在同一顆 "同位碟" 中, 所以並不會有任何速度的優勢.
所以在一般使用多人資料庫 (如: 醫院掛號系統, 多櫃檯大型賣場, ...), RAID level 4 是較不適合的規劃. 但是在如: 電腦繪圖, 非線性剪接, 動畫處理, 數位圖書館, ... 等用途上, 這樣的規劃, 卻是最佳的選擇.

RAID level 5 -

通常亦為 "輪轉同位型陣列" Rotating Parity Array. 它和 RAID level 4 一樣的, 在每次的寫入前, 由陣列控制器內建的 XOR 邏輯, 根據切割之區段大小 (單一或多個 block 為單位), 計算出同位檢核資訊. 每項資料中 (以 Stripe 為單位) 的同位檢核資料, 隨著資料分別散存在各陣列硬碟內, 沒有特定同位碟. 相較於上述 RAID level 4, 這個型式可允許多個寫入, 因為這多個寫入動作時, 同位資訊是置在不同的陣列硬碟中.
但是在讀取資料時, 每項資料可能是直接來自各具該項資料的硬碟中, 但也可能是會讀入同位資訊, 而必需經由 XOR 的計算. 在連續大型檔案要求輸出時, 它顯然稍有不利.

Parity 容錯基本原理:

以上介紹了常見的陣列代號型式, 相信許多讀者仍不了解這個 "同位檢核資訊" Parity 如何提供容錯能力? 而已毀損的硬碟中之原資料, 又如何在新的替代硬碟中, 作原資料的重建 Rebuild ?
每個 Byte 是由 8 個 bit 所構成的, 如果在這八個 bit 後, 經由運算 XOR上述的八個 data bit, 再加一個同位檢核位元 Parity bit, 則這組九個 bits 所構成的 Byte, 就具備了容錯能力了, 見下例:

Byte (字母) Bit (位元) 說 明
K 1 0 0 1 0 0 1 1 只是個例子
? 1 0 0 1 0 0 1 ? 少了一個 bit, 原字母不見了
K 1 0 0 1 0 0 1 1 Pk 經由陣列控制器計算出 Parity
K 1 0 0 1 0 0 1 ? Pk 即使少了一個 bit, 仍可讀出原資料.
K 1 0 0 1 0 0 1 1 Pk 經由 XOR 計算, 又推敲並回復了原貌.
K 1 0 0 1 Pk' 同理, 可以將一筆資料, 以不同的切割區塊大小,
0 0 1 1 Pk" 將資料分為二, 並各有一個 Parity bit

上面的例子, 是以一個 Byte 為例, 可以將此觀念延伸到 block, blocks, disk. 就可以了解到, 當一顆陣列硬碟機故障時, 其內原有的 Data Blocks 及不同 Data Stripe 中的 Parity Blocks, 雖已喪失, 但是可以經由陣列控制器 (通常具有獨立 CPU) 的 XOR 功能, 將存在其他陣列硬碟內的 Parity Blocks 及不同的 Data Stripe 中的 Data Blocks 加以計算, 得出應置回的原資料.

毀損資料重建: Data Rebuild, Data Reconstruction

當然, 若主系統在不關機情形下 (通常這是使用者採購磁碟陣列的主要目的) 在作資料重建的時候, 主系統的資料進出效率會受到影響. 在整台陣列中, 資料重建與正常存取的效率是互補的. 不過現在的陣列控制器大多已可支援 "可調整的重建優先權設定". 以筆者所經驗過的重建 9GB硬碟為例子, 它可以在五十分鐘內完成. 但在以正常存取為極度優先時, 它可能需時三小時. 不過如果是採用較低階的陣列控制器, 恐怕所需時間, 會遠遠超過上述的數字, 提高危險係數.

因為在正常的 RAID level 3, 4, 5 型式下, 磁碟陣列容許同一陣列組態群內, 僅一顆硬碟故障. 而系統管理者, 必須在儘量短的時間內 (第二顆硬碟故障前),

立即得到通知: 有一顆陣列硬碟已經故障了. 而這個通知方式及過程,影響前來處理的時間. 目前有多種設計: 基本的警笛聲, 事件記錄聯結並通知主系統之作業系統, 電子郵件, 傳呼器, ... 都是善盡通知義務的方法.
立即將資料重建完成. 否則, 就得面臨向大量資料說再見的精神壓力了.

不過, 如何縮短從在被通知後到抵達現場, 並開始作資料重建的這段時間及壓力, 則難以絕對掌握. 有解嗎?

備援硬碟: Spare Disk

如果在陣列中, 加上備援硬碟. 當任一陣列硬碟故障時, 該備援硬碟可以自動上線, 將故障硬碟立即取代, 並開始依設定的 "重建優先權" 作資料重建, 就可有效縮短上述的 "前往處理" 的時間, 也可減少因急迫性所造成的壓力.

不過, 這顆備援硬碟, 平時是無法拿來作存放空間的. 因為一旦作了 "可使用" 的標記, 備援設定會自動消失. 所以, 回到前述的真理: "安全性" 加 "速度" 是建立在成本上的.

總體備援硬碟: Global Spare Disk
就是備援硬碟, 但是可以對同一磁碟陣列中的所有 "陣列組態群" 作備援. 總是比較省的方式.

定時備份:

"既然重要, 為何不備份?" 與其在災害發生時, 束手無策, 自怨自艾, 何不在規定時間作好重要資料的備份, 以防萬一 ? 即使使用了磁碟陣列, 提高資料的可供應性, 備份仍該作的. 畢竟, 它是重要的資料.

陣列控制器型式:

軟體架構: Software Based
在多年前, Novell 的 Netware 就提供了 Mirror 的功能, 即使在今天, 相信仍有許網路系統, 是採用此一方式. 不過這在資料量較大的環境中, 其 50% 的硬碟使用率, 究竟是稍少了些. 另外, Corel 在約五年前, 大力推廣其 Corel RAID! 以不到美金一千元的低價, 切入市場.
然而究竟使用軟體的陣列架構, 會佔用到主系統的 CPU 及記憶體資源, 而導致系統效率的下降. 所以採用非主系統供應商的軟體陣列產品者, 相對是較少的.
主機獨立式架構: Host Independent
陣列控制器對主系統, 是藉由連接至其存取介面 (目前以 SCSI 為主) 作通道. 換言之, 它在主系統的存取介面上, 是一個獨立的直接存取儲存體 DASD Direct Access Storage Device. 而這個大的儲存體內, 可以有不只一個的邏輯磁碟 LUN Logical Unit Number. 陣列控制器, 對下管理多顆陣列硬碟機們. 而主系統是不會看到或直接管理該硬碟的. 例如: CMD, EMC, Symbios, Digital StorageWorks, ... 都有相關的產品. 而且這些陣列領導廠商, 也都各自有不同設計的 "容錯式陣列控制器", 以避免因陣列控制器故障 Fail Over 時所造成的傷害, 甚至可作 "線上抽換" On Line Hot Swap 陣列控制器. 不過這些可是較高檔的產品了. 記得那句名言? 真正的 "安全性" 加 "速度" 是建立在成本上的.

採用這項架構, 可以接在大多數具有合標準的存取介面的主機上, 而且不需額外另掛驅動程式 Drivers, 在各種作業系統的相容性上, 也有較佳的成果. 使用這種架構, 在主機系統上的設定較容易.

此外, 主機獨立式磁碟陣列, 還有可連接多主機功能的設計, 不但可以擴增連接高達四台主機, 更可分散讀寫通道, 提高主系統之整體效率.

插卡式: Host Based
目前較常見的是應用在 X86 CPU或 Pentium為基礎的主系統上. 例如: IBM PC Server, Compaq PC Server, HP PC Server, ... 或 IBM SSA, 都有其品牌的陣列方案. 另外也有專業的陣列卡製造商, 如: DPT, AMI, Mylex, ... 這些陣列控制卡, 多以 PCI SCSI Ultra Wide 對系統主機連接, 必須另掛上磁碟陣列驅動程式 (不同於 SCSI 卡驅動程式), 所以, 其與作業系統的匹配性及相容性, 就是一個課題了.
但目前好像只有DPT 是真正採取 "硬體架構" 的陣列控制卡, 並提供了在 PC Solaris, Linux, BSD, ... 等作業系統的SCSI 卡驅動程式, 且取得認證標章, 具有極高的作業系統相容性.
理論上, 插卡式的效率是較佳的. 且可提供網路基礎的管理工具 (有少數主機無關式架構亦有提供). 因為只有此種架構的陣列, 是直接面對主機的存取通道 I/O bus, 不受限於系統的存取介面 I/O Interface 如 SCSI, SSA, FC-AL.
但是, 也有些插卡式的陣列控制器, 仍依靠系統主機的 CPU 及記憶體來作陣列控制及計算, 這可以從支援作業系統多寡及執行效率得知.

結語:
以現有的統計數字來看, 除了大型主機 Mainframe Systems 的專屬系統上仍佔了約 36%的磁碟陣列裝機產值外, 超過 62% 的是裝設在中型主機及網路環境.
電腦應用的程度, 與日俱增. 資料量的成長速度, 也是數月千里. 使用磁碟陣列將是一定的趨勢. 而選擇一個穩定性高的產品, 更是絕對必要.
記得那句真理: 真正的 "安全性" 加 "速度" 是建立在成本上的. 否則不但得不到便利及效益, 反倒換得了無比的壓力.









  回覆時引用此篇文章
回覆

書籤



主題工具
顯示模式

發文規則
不可以發表新主題
不可以發表回覆
不可以上傳附件
不可以編輯自己的文章

啟用 BB 代碼
論壇啟用 表情符號
論壇啟用 [IMG] 代碼
論壇禁用 HTML 代碼

論壇跳轉



所有時間均為台北時間。現在的時間是 03:14





vBulletin skin developed by: eXtremepixels, Powered By JCMS INTERNATIONAL Co.,Ltd.
Powered by vBulletin® 版本 3.8.3
版權所有 ©2000 - 2024,Jelsoft Enterprises Ltd.
本網站內之文章,版權歸原作者所有,在此發言並無言論免責權,且與本站立場無關,並禁止未授權轉載。