RAID 5(十三)其它

2021-05-24 04:29:38 字數 1813 閱讀 6251

這些文章已經寫了好幾年了,可能已經過時了。在msn space和qqzone幾經輾轉之後,我想也許這些技術文章還是放在搞技術的部落格中更能幫助人。於是做了乙個艱難的決定,把這些文章一篇篇搬過來!絕對是原創的。

前面幾篇林林總總,從raid-5原理,到錯誤,失效處理,主要還是圍繞資料處理的方方面面來說的,但是raid-5要能正常使用,沒有一些控制函式的輔助是不可能的。我所說的這些控制函式可以在raid5.c快要結束的地方,在raid5_personality這個結構中找到他們的名字。

raid5_personality中的函式,除了make_request直接作用在資料路徑中以外,其它的都是通過md的控制函式間接呼叫的。關於md中的控制函式跟raid-5相比,繁複程度有過之而無不及,但因為沒有特殊的演算法,也就沒有什麼特殊的原理,主要是看它的處理過程。但是md並不是我在raid-5中的討論的重點,只是為了理解raid-5特定的控制函式而提及相關的內容。

其實raid5_personality中的函式可以用物件導向中的過載函式來理解,正如我們在一開始提到md說的那樣,這是raid-5對md父類方法的過載。廢話少說,其中make_request和sync_request都已經談過,不必重複,就從沒說過的開始。

首先是run,顧名思義,很簡單這就是在raid-5開始執行時呼叫,進行一些初始化的操作,主要是對raid-5中的conf進行初始化,這裡面的**也有點搞來搞去,但是只要明白了raid-5的資料結構,那所有的**就一目了然了。run函式在md.c的do_md_run中被呼叫。

如果說run有點建構函式的意思,那麼stop函式就有析構函式的味道了。看看這個函式,不是unregister就是shrink,kfree,都是所有的資源一一釋放。stop是在md.c的do_md_stop中呼叫。

下乙個就是status函式,這是在md_seq_show中呼叫,這是個在/proc檔案系統中使用的函式、我們通過」cat /proc/mdstat」命令列得到的資訊就是通過md_seq_show顯示的。其中raid-5的資訊則是由md_seq_show呼叫status函式來顯示,這要是顯示裝置狀態和resync或recovery狀態。

error函式我們在討論錯誤處理的時候已經提過。

raid5_add_disk函式是將乙個rdev放入raid-5的disk陣列中。這裡比較容易讓人誤會的是,以為這是被md.c中hot_add_disk函式呼叫的,我最初就是這樣想當然的,但事實並非如此,這個函式真正被呼叫時在md_check_recovery中,而md的hot_add_disk目的是將rdev加入到md裝置,而事實上還沒有加入到raid-5中。所以,我們常將md的hot_add_disk稱為為外部hot_add,而personality中hot_add_disk稱為內部hot_add。

與raid5_add_disk相反,raid5_remove_disk則是從raid-5的disk陣列中將rdev踢出去。同樣道理,它也不是在md的hot_remove_disk被呼叫,而是在md_check_recovery中被呼叫。但是要知道md的hot_remove_disk要想成功,前提是raid5_remove_disk已經呼叫成功。

raid5_spare_active函式也是在md_check_recovery中被呼叫,作用就是將完成了recovery的spare的rdev啟用,告知raid-5這個rdev資料已經恢復完成可以正常工作了,同時修改md的一些統計資料。

raid5_resize,這個函式應該一目了然,那就是調整raid-5的大小。

最後乙個是raid5_quiesce,這是個給外部呼叫來禁止或啟動寫操作的函式,這在某些情況下是個很重要的特性。

終於寫完了。然而raid-5只是md的乙個組成部分,要想知道raid是怎麼工作的,還是得了解md的一些內容,接下去談談md.c的閱讀理解。

raid5故障回放

故障回放 硬體 dell伺服器r720 陣列 raid 5 h310 系統 windows 2008 r2 計畫在伺服器進行sql資料庫恢復操作 sql2008 r2 資料庫備份檔案800m,在還原操作中,進行到備份檔案讀取時,sql程式一直出現假死 換到普通pc機執行此操作正常 無響應情況。並且對...

我理解的RAID5

raid5 就是做奇偶校驗 異或操作 它假定兩塊硬碟同時壞的概率非常非常低,n塊硬碟做了raid5之後,可以用的是n 1塊硬碟的容量 例如,4塊硬碟,每塊硬碟的相應位做奇偶校驗 這也解釋了為什麼做raid之後,大容量的硬碟只能被識別出和其他硬碟大小相同的容量 1 2 3 4 0 0 0 0 0 0 ...

RAID 5 使用與配置

伺服器dell r370 配備4塊2t磁碟 採用raid5 3塊 一塊熱備盤。abc做raid5,d做熱備盤,b壞了,d替代b,a和c會往d裡面寫資料,這期間不需要對硬碟做任何操作。寫完以後,你再換掉壞盤b,陣列卡會識別到b盤,d盤將資料寫入b,恢復abc的raid5,d盤依舊為熱備盤。這種策略相對...