當前位置:
首頁 > 最新 > Linux軟體磁碟陣列

Linux軟體磁碟陣列

目前企業對於儲存設備的需求越來越大,相對的要求也越來越高。企業把越來越多的數據數字化後,儲存設備的效率、安全性顯然成為當今系統管理人員必須面對的問題。使用磁碟整列可以提高儲存設備的效率,並可確保其完整性。

Part.1 什麼是磁碟陣列?

RAID(Redundant Array of Inexpensive Disks,簡稱RAID) 的基本目的是把多個小型廉價的磁碟驅動器合併成一組陣列來達到大型昂貴的驅動器所無法達到的性能或冗餘性。這個驅動器陣列在計算機眼中就如同一個單一的邏輯貯存單元或驅動器。

Part.2 RAID的類型

RAID技術有兩種:硬體 RAID 和軟體 RAID。

2.1 硬體RAID

基於硬體的系統從主機之外獨立地管理 RAID 子系統,並且它在主機處把每一組 RAID 陣列只顯示為一個磁碟。

連接到 RAID控制器的,把 RAID 陣列表示為單個 RAID 驅動器的設備就是一個硬體 RAID 的例子。一個外部的 RAID 系統把所有 RAID「處理智能」都轉移到位於內部磁碟子系統中的控制器中。整個子系統都通過一個普通的 RAID 控制器連接到主機上,對主機而言,它就象一個單一的磁碟。

RAID 控制器還以卡的形式出現。該卡充當操作系統的 RAID 控制器,但卻控制所有驅動器本身的實際通訊。在這些情況下,你把驅動器插入到 RAID 控制器中,就如同插入 RAID 控制器中一樣,但這之後,你把它們添加到 RAID 控制器的配置里,操作系統卻決不會知道其中的區別。

在RedHat Linux 系統中,硬體raid 通過dmraid 軟體來管理。

2.2 軟體RAID

軟體 RAID 在內核磁碟(塊設備)編碼中實現各類 RAID 級別。因為它不需要昂貴的磁碟控制器卡或熱交換硬碟,軟體 RAID 提供了最廉價的解決方法。它還可以用在較便宜的 IDE 磁碟以及 SCSI 磁碟。使用今日的快速 CPU,軟體 RAID的性能能夠超出硬體 RAID。

Linux 內核的 MD 驅動程序是完全獨立於硬體的 RAID 解決方案的範例。基於軟體的陣列性能獨立於伺服器 CPU 的性能和載量之外。

Part.3 RAID的等級

磁碟陣列按照合併的方式不同,定義出磁碟陣列的等級(RAID Level)。目前常見的磁碟陣列等級包含RAID 0、RAID 1、RAID 4、RAID 5、RAID 10等等。

3.1 RAID 0 條帶(striping)

在條帶中,寫入RAID陣列的數據被分成了「組塊(chunk)」,各種組塊在構成陣列的驅動器中均勻分布,如下圖所示。

這樣做的目的是以可靠性為代價獲取速度。通過在多個磁碟和控制器上向陣列分布讀寫任務來獲取速度,這樣可以平行地寫入數據。然而,這個陣列較易出錯,因為假如任何單個的驅動器出錯的話,其餘驅動器上的數據可能無法修復。

雖然這個例子中各種條帶的「組塊大小」是4位元組,但是更切合實際的組塊大小應該是4KB或8KB。

然而,RAID-0也有其缺點。RAID-0最大的缺點就是缺乏容錯性,因為數據同時被儲存在不同的磁碟中,只要其中一個磁碟故障了,整個RAID-0的磁碟空間就無法繼續被使用。

RAID 0 陣列的貯存能力等於硬體 RAID 所有成員磁碟的總能力或軟體 RAID 中所有成員分區的總能力。

3.2 RAID 1 鏡像模式(Mirroring)

如同「鏡像」這一名稱暗示的那樣,在鏡像中,寫入一個磁碟的數據被複制到了第二個磁碟上(被稱為「鏡像磁碟」),如下圖所示。

這個簡單配置的目的是以速度為代價獲取可靠性(至少對寫入是這樣的)。這個陣列對於損壞有著較強的可靠性,因為如果一個磁碟出錯的話,該陣列可以在不丟失數據的情況下繼續使用剩餘的一個磁碟。該陣列在寫入時速度很慢,因為需要向兩個磁碟而不是一個磁碟提交數據。但其實RAID 1陣列在讀取時比單獨的磁碟速度快,因為讀取操作可以分布在多個磁碟上,每個磁碟執行一部分操作。

RAID-1可以提供下列的好處:

1

可提供容錯:即使其中一個磁碟故障,RAID-1磁碟陣列還可以讓你讀取數據。

2

可加快讀取的速度:因為RAID-1磁碟陣列會在不同磁碟儲存相同的數據;因此便可以同時從不同的磁碟讀取相同的數據,因而加快讀取的效率。

RAID-1也有其缺點,RAID-1的缺點有二:

1

較浪費磁碟空間:因為數據需複製儲存到其它磁碟,因此整個RAID-5磁碟陣列可用空間為所有 1/n(n為磁碟的數量)。

2

無法加快寫入的效率:因為RAID-1磁碟陣列必須負責同步每一個磁碟中的資料,因此在寫入數據到RAID-1磁碟陣列時,無法加快寫入的效率。

一般來說,RAID-1的磁碟成本會高於其它等級的磁碟陣列,通常只用在需要高容錯性的環境中。

3.3 RAID 4 帶校驗的條帶

Linux 內核支持的這種配置試圖集中前兩個RAID級別的優勢:通過平行寫入數據獲取速度,而又能對損壞有著很強的可靠性。把一個額外的磁碟作為「校驗盤」,可以獲得這種可靠性。

對於包含三塊磁碟的RAID 4而言,數據在其中兩塊磁碟中被條帶化了,這些磁碟彷彿是RAID 0條帶陣列一樣。然而,被稱為「校驗」信息的錯誤檢測和糾正信息在第三塊磁碟上得以計算和保存。如果任何一個數據磁碟出錯的話,可以從校驗信息上重新運算該磁碟的內容。

在下圖中,「+」代表被運算的校驗信息。

雖然最好是能將速度和可靠性結合起來,但是你很快就會發現這種配置的缺點無可救藥,因為事務處理往往會在校驗盤上出現瓶頸,致使性能較差。

3.4RAID 5 條帶+分布校驗(striping with distributed parity)

RAID 5在功能上與RAID 4完全一樣,但是解決了校驗盤上的瓶頸問題。RAID 5不是專門把一個磁碟用於校驗,而是讓校驗信息均勻地分布在所有組成磁碟中。如下圖所示。

通過平行寫入數據再次獲取了速度。每個磁碟只執行一部分操作。然而,該陣列對於損壞有著較強的可靠性,因為如果任何一個磁碟出錯的話,它的數據可以從分布在其他磁碟中的組合校驗信息恢復。

RAID 4陣列很少被執行,這是因為RAID 5具有完全一樣的糾錯特徵,但是性能更好。

3.5 RAID10

RAID 10是將鏡像和條帶進行組合的RAID級別,先進行RAID 1鏡像然後再做RAID 0。

RAID 10 繼承了Raid0的快速和Raid1的安全。我們知道,RAID 1在這裡就是一個冗餘的備份陣列,而RAID 0則負責數據的讀寫陣列。其實,右圖只是一種RAID 10方式,更多的情況是從主通路分出兩路,做Striping操作,即把數據分割,而這分出來的每一路則再分兩路,做Mirroring操作,即互做鏡像。如下圖所示:

RAID 10 的優點是同時擁有RAID 0的超凡速度和RAID 1的數據高可靠性,但是CPU佔用率同樣也更高,而且磁碟的利用率比較低。由於利用了RAID 0極高的讀寫效率和RAID 1較高的數據保護、恢復能力,使RAID 10成為了一種性價比較高的等級,目前幾乎所有的RAID控制卡都支持這一等級。但是,RAID 10對存儲容量的利用率和RAID 1一樣低,只有50%。因此,RAID10即高可靠性與高效磁碟結構它是一個帶區結構加一個鏡象結構,可以達到既高效又高速的目的,RAID 10能提供比RAID 5更好的性能。這種新結構的可擴充性不好,這種解決方案被廣泛應用,使用此方案比較昂貴。

總結

我們現在意識到了RAID陣列的真正價值。你可以想像,當維護一個由多個廉價磁碟構成的大型、持續運行的陣列時,如果磁碟出錯,陣列可以自我修復,出錯的磁碟由新的備用磁碟替代。只要每次出錯的磁碟只有一兩個,陣列就可以無限地使用下去。這裡我將raid0、raid1和raid5三個等級的磁碟整列的差異整理成如下表。

RAID 0

RAID 1

RAID 5

名稱

條帶模式(Stripe)

鏡像模式(Mirror)

帶校驗分散式條帶(Stripe Set WithParity)

磁碟數量

2個以上

2個以上

3個以上

磁碟大小

可以不用一樣大

需相同大小

需相同大小

可用空間

所有磁碟空間之總和

單一磁碟大小

(N-1)*S

N為磁碟數量;S為每一個磁碟的大小

優點

? 讀取快

? 寫入快

? 增加可用空間

? 具備容錯

? 讀取快

? 讀取快

? 具備容錯

? 增加可用空間

缺點

? 無容錯

? 寫入普通

? 浪費磁碟空間

? 寫入慢

? 需更多的計算能力

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲運維聯盟 的精彩文章:

Linux磁碟管理
10分鐘Linux-用戶管理

TAG:雲運維聯盟 |