教程:RAID-5磁碟陣列故障分析

ibmpcii發表於2009-04-17

教程:RAID-5磁碟陣列故障分析

來源:WatchStor.com spike_zheng
  • 摘要:當有兩個以上硬碟同時出現故障時,那麼硬碟中的資料將無法修復。為了讓磁碟陣列發揮其應用的作用,Linux系統管理員需要對磁碟陣列的容錯效能力進行分析。通常情況下,根據企業對待資料損失的不同,每個一個季度或者半年進行測試一次,以保障磁碟陣列能夠正常工作。
  • 標籤:

RAID-5磁碟陣列是現在使用最普遍的磁碟陣列方式。在RAID- 5這個磁碟陣列模式中,資料平均分佈在每個硬碟中。所以即使某個硬碟損壞了,仍然可以憑藉其他硬碟上的內容恢復損壞硬碟中的資料。不過,當有兩個以上硬碟同時出現故障時,那麼硬碟中的資料將無法修復。

為了讓磁碟陣列發揮其應用的作用,Linux系統管理員需要對磁碟陣列的容錯效能力進行分析。通常情況下,根據企業對待資料損失的不同,每個一個季度或者半年進行測試一次,以保障磁碟陣列能夠正常工作。

一、測試磁碟陣列是否在起作用

有時候要測試磁碟陣列是否在起作用年,要對磁碟陣列進行“破壞性”測試。這裡的破壞性測試筆者是打上了引號的,不是真的去損壞硬碟。為了測試RAID-5磁碟陣列是否有硬碟損壞的情況,需要先把伺服器關掉。然後把其中一塊硬碟的線拔掉,讓系統找不到這塊硬碟。如此的話系統就會認為這塊硬碟損壞了。會嘗試使用其他硬碟中的資料來恢復損害的硬碟中的內容。重新啟動Linux系統後,由於只是去掉了一塊硬碟,故系統仍然可以啟動RAID-5 磁碟陣列。而且採用了磁碟陣列之後,資料會自動恢復。即少了一塊硬碟之後,一切仍然可以正常執行。透過檢視磁碟陣列的狀態記錄檔案,可以檢視相關的資訊。

在Linux系統下,磁碟陣列狀態檔案儲存在/proc/mdstat下。在這個狀態檔案中,可以看出當前磁碟陣列中啟用了幾塊硬碟,會指明當前硬碟的序號。雖然說同時損壞兩塊以上硬碟就無法恢復資料,但是,這種情況畢竟還是少數。同時損壞2個硬碟的機率並不是很高。故磁碟陣列在安全性上還是有比較高的利用價值。

在Linux下部署磁碟陣列的時候,還有一個好處。就是即使有兩塊硬碟損害了,雖然不能夠修復資料,但是仍然可以啟動Linux作業系統。當兩塊以上硬碟損壞時,重新啟動之後,系統會發出警告資訊。此時管理員可以利用ROOT帳號進行登陸。然後更改配置檔案/ETC/RAIDTAB的檔名字再重新啟動,就可以順利登陸到Linux系統中。不過可惜的是,此時硬碟上的資料將無法恢復。

二、透過配用硬碟提高磁碟陣列的安全性

由於2個硬碟以上的損壞將無法恢復資料。所以Linux系統管理員就會考慮,能否在Linux系統中再掛載一個備用硬碟。平時的時候這塊硬碟不會包含到磁碟陣列中。當磁碟陣列中某塊硬碟出現損壞時,就利用這塊備用硬碟替補。如此的話,即使管理員暫時沒有發現損壞的硬碟,對企業的影響也不會很大。

大部分的磁碟陣列技術都支援採用備用硬碟。當某個硬碟工作不正常時,磁碟陣列會立刻啟動備用硬碟。並透過一定的容錯技術,將資料恢復到正常狀態。但是並不是所有的磁碟陣列技術都支援這個備用硬碟。筆者在上篇文章中介紹過幾個常用的磁碟陣列方式。其中就提到過Linear模式。由於這種模式並不會分散儲存資料,而是一塊硬碟儲存空間滿了以後再儲存到另一塊硬碟中,故並沒有容錯機制。此時備用硬碟也就不會起作用。不過在RAID-5 模式下,其是分散儲存資料的,具有很高的容錯性。所以此時若配置一塊額外的備用硬碟,能夠讓磁碟陣列的安全性更上一層樓。另外這裡需要注意的是,當作業系統啟動的時候,備用硬碟也會隨之啟動。只是平時的資料不會儲存到這一塊硬碟中。而只有當某一個硬碟損壞時,才會這塊備用硬碟中存入資料。

如果系統管理員需要在已有的磁碟陣列中加入備用硬碟的話,則需要修改磁碟陣列的配置檔案/etc/raidtab。其實這個更改也很簡單。通常情況下只需要向這個配置檔案中加入兩條語句即可。

第一條語句:nr-spare-disk 1。這條語句主要用來說明這個硬碟是備用硬碟。除非其他硬碟損壞了否則的話磁碟陣列不會往這個硬碟中存入資料。

第二條語句:device /dev/had。這一條語句用來指定備用硬碟的分割槽名稱。我們知道,Linux系統跟微軟作業系統下的磁碟陣列技術有一個很大的不同。在微軟作業系統下,它是以硬碟為單位的。但是在Linux作業系統下,則是以分割槽為單位的。故在Linux作業系統中,即使只有一塊硬碟也可以實現磁碟陣列技術,只是不能夠實現相關的功能而以。所以,這裡除了要指明硬碟外,還需要指明硬碟分割槽的名字。

另外還有一個注意事項。有些Linux管理員可能擔心多個硬碟會同時損壞。所以他們會為磁碟陣列配置多個備用硬碟。此時如果硬碟有損壞的話,系統就會考慮需要首先採用哪塊硬碟。此時可以利用spare-disk語句來指定首先採用哪塊硬碟。如果編號設定為0,就表示這塊備用硬碟是此磁碟陣列所使用的第一順序備用硬碟。其他的配置跟磁碟陣列的常規配置相同,這裡就不做重複介紹了。

編輯推薦:強力推薦Linux下的五大BT下載工具

不過注意當新增完備用硬碟之後,備用硬碟並不是馬上生效的。修改完成磁碟陣列的配置檔案之後,需要先利用Raidstop命令停用磁碟陣列;然後再利用Mkriad命令重新初始化磁碟陣列。在這個初始化的過程中,系統會在後臺同步所有的硬碟資料。所以這個過程會隨著硬碟資料的多少而變化。當硬碟中資料比較多時,這個過程可能會比較久。在這個過程中,千萬不要重新啟動Linux系統。設定好備用硬碟之後,如果磁碟陣列中有某一塊硬碟出現了損壞,則系統會自動啟動備用硬碟。並且會根據其他硬碟上的資料重建此備用硬碟上的資料。重建後的資料相當於是損壞硬碟資料的一個複製。透過這種方式,就可以提高磁碟陣列的容錯效能。

三、注意磁碟陣列空間的使用率

磁碟空間的容量是不是幾塊硬碟容量的總合呢?其實不是。如在RAID-5磁碟陣列中,跟普通硬碟儲存資料不同,磁碟陣列技術會自動產生一個同位校驗碼。這個同位校驗碼主要用來解決硬碟損壞時資料恢復問題。這裡要特別注意,RAID-5並不會特別保留固定的一個硬碟來儲存同位校驗碼,而是將同為校驗碼分散儲存在所有的硬碟當中。所以這種方式並不會因為儲存同位校驗碼在同一個硬碟上而造成整體系統效能的瓶頸。

但是,雖然RAID-5 不會特別保留固定的一個硬碟來儲存同位校驗碼,但是他會使用一個硬碟的容量來儲存同位校驗碼。這是什麼意思呢?也就是說,假設現在有四塊硬碟組成了一個磁碟陣列,其中每塊硬碟的容量為120G。那麼RAID-5 並不會把全部的同位校驗碼都儲存在同一塊硬碟上。可是其會在這四塊硬碟上分別佔用30G的空間,總共120G的容量。也就是說,此時真正可以儲存資料的數量為三塊硬碟的容量,即360G。對於這個容量,Linux管理員要有一個充分的認識。特別是剛剛接觸磁碟陣列的人會有疑問,明明沒有這麼多的資料,為什麼硬碟就這麼快滿了呢?難道有病毒嗎?總之管理員要記住,同位校驗碼需要佔用一個硬碟的容量。不過其並不是單獨儲存在一個硬碟中,而是在各個硬碟上都獲取一定的空間。

另外需要注意,同位校驗碼不僅需要犧牲磁碟的容量,而且還會對硬碟的讀寫效能有不利的影響。讀寫資料時,磁碟陣列會將一個檔案切割成一個個小塊,再以小的區塊為單位同時向硬碟中讀取資料。所以磁碟陣列可以提高硬碟的輸入輸出效率。從理論上講,如果有5個硬碟組成磁碟陣列,磁碟陳列會同時從4個硬碟中讀寫資料。故存取速率可以提高4倍。但是實際工作過程中,由於多處來了一個同位校驗碼。這個同位校驗碼的生成、儲存也需要犧牲一定的系統資源,故最終的效率並不會達到這麼高。不過從這裡也可以說明一件事情,就是硬碟數量越多,其硬碟資料讀取效率裡會越高。

故架設磁碟陣列時需要耗費比較多的CPU、記憶體等硬體資源。如果這些硬體資源跟不上的話,磁碟陣列不但不能夠起到其應有的作用,而且反而會增加Linux伺服器的風險。所以在磁碟陣列安全性分析時,也要考慮CPU、記憶體等硬體資源能否支援磁碟陣列順利運轉。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18933903/viewspace-1020781/,如需轉載,請註明出處,否則將追究法律責任。

相關文章