查看單個文章
舊 2004-10-23, 02:50 PM   #1
mic64
註冊會員
 
mic64 的頭像
榮譽勳章
UID - 582
在線等級: 級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時
註冊日期: 2002-12-06
VIP期限: 2007-04
住址: MIB總部
文章: 412
精華: 0
現金: 499 金幣
資產: 499 金幣
預設 磁碟陣列 Disk Array

磁碟陣列 Disk Array

引言:

"磁碟陣列",或說是 "硬碟陣列",或是 "磁盤陣列",在今天相信已經不再是那麼令人感到陌生了,因為在這幾年來網路以及伺服器之成長迅速,相隨的對資料之安全性也更加重視和要求。

固然,每日的磁帶或其他媒體方式的備份仍然重要,但對於硬碟故障後的恢復間隔,也希望在可接受範圍內,得到最大的縮短,此時最好的方案則非磁碟陣列莫屬,因為磁碟陣列的優點除了具有單一大容量的好處,另外提供了硬碟容錯功能,易於管理的優點。

我們由美國 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、HP、Hitachi (HDS)、Sun、... 等,都有其自己的磁碟陣列產品,以應用於其本公司各級大中小型系統,並擴及連接至其他廠牌系統的產品,而在專業磁碟陣列供應商中,如 EMC、LSI、Adaptec、IPL, ... 等、也各自有適用於各級系統的陣列產品,而這些主要磁碟陣列供應商的產品,則佔了陣列產品超過 80% 的總銷售值 (2001年的資料)

陣列級別: 以下就幾項基本的名詞作一分項解釋.
(註: 陣列級別的數字代號, 僅代表了不同的陣列種類/型式, 用於不同的應用, 並無大小或高低之區分)

陣列種類
英文簡述
硬碟容錯嗎 ?
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

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

定時備份:

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

 
 
mic64 目前離線  
送花文章: 0, 收花文章: 21 篇, 收花: 61 次