Linux RAID磁盤列陣精講

LVM 最大的優(yōu)勢(shì)在于可以在不卸載分區(qū)和不損壞數(shù)據(jù)的情況下進(jìn)行分區(qū)容量的調(diào)整砸捏,但是萬(wàn)一硬盤損壞了限佩,那么數(shù)據(jù)一定會(huì)丟失蔚润。 本節(jié)講的 RAID(磁盤陣列)的優(yōu)勢(shì)在于硬盤讀寫性能更好焚挠,而且有一定的數(shù)據(jù)冗余功能蟹肘。

RAID 功能已經(jīng)內(nèi)置在 Linux 2.0及以后的內(nèi)核中璃吧,為了使用這項(xiàng)功能楣导,還需要特定的工具來(lái)管理 RAID,在絕對(duì)多數(shù) Linux 發(fā)行版本中畜挨,更多的是使用 mdadm筒繁,讀者可以自行下載并安裝這個(gè)工具噩凹。

RAID 簡(jiǎn)介

RAID(Redundant Arrays of Inexpensive Disks,磁盤陣列)毡咏,翻譯過來(lái)就是廉價(jià)的驮宴、具有冗余功能的磁盤陣列。其原理是通過軟件或硬件將多塊較小的分區(qū)組合成一個(gè)容量較大的磁盤組呕缭。這個(gè)較大的磁盤組讀寫性能更好堵泽,更重要的是具有數(shù)據(jù)冗余功能。

那什么是數(shù)據(jù)冗余呢恢总?從字面上理解迎罗,冗余就是多余的、重復(fù)的离熏。在磁盤陣列中佳谦,冗余是指由多塊硬盤組成一個(gè)磁盤組,在這個(gè)磁盤組中滋戳,數(shù)據(jù)存儲(chǔ)在多塊硬盤的不同地方钻蔑,這樣即使某塊硬盤出現(xiàn)問題,數(shù)據(jù)也不會(huì)丟失奸鸯,也就是磁盤數(shù)據(jù)具有了保護(hù)功能咪笑。

讀者也可以這樣理解,RAID 用于在多個(gè)硬盤上分散存儲(chǔ)數(shù)據(jù)娄涩,并且能夠“恰當(dāng)”地重復(fù)存儲(chǔ)數(shù)據(jù)窗怒,從而保證其中某塊硬盤發(fā)生故障后,不至于影響整個(gè)系統(tǒng)的運(yùn)轉(zhuǎn)蓄拣。RAID 將幾塊獨(dú)立的硬盤組合在一起扬虚,形成一個(gè)邏輯上的 RAID 硬盤,這塊“硬盤”在外界(用戶球恤、LVM 等)看來(lái)辜昵,和真實(shí)的硬盤一樣,沒有任何區(qū)別咽斧。

RAID 的組成可以是幾塊硬盤堪置,所以我們?cè)谥v解原理時(shí)使用硬盤舉例,但是大家要知道不同的分區(qū)也可以組成 RAID张惹。

RAID 根據(jù)組合方式的不同舀锨,有多種設(shè)計(jì)解決方案,以下介紹幾種常見的 RAID 方案(RAID級(jí)別)宛逗。

RAID 0

RAID 0 也叫 Stripe 或 Striping(帶區(qū)卷)坎匿,是 RAID 級(jí)別中存儲(chǔ)性能最好的一個(gè)。RAID 0 最好由相同容量的兩塊或兩塊以上的硬盤組成。如果組成 RAID 0 的兩塊硬盤大小不一致碑诉,則會(huì)影響 RAID 0 的性能彪腔。

這種模式下會(huì)先把硬盤分隔出大小相等的區(qū)塊,當(dāng)有數(shù)據(jù)需要寫入硬盤時(shí)进栽,會(huì)把數(shù)據(jù)也切割成相同大小的區(qū)塊德挣,然后分別寫入各塊硬盤。這樣就相當(dāng)于把一個(gè)文件分成幾個(gè)部分同時(shí)向不同的硬盤中寫入快毛,數(shù)據(jù)的讀/寫速度當(dāng)然就會(huì)非掣裥幔快。

從理論上講唠帝,由幾塊硬盤組成 RAID 0屯掖,比如由 3 塊硬盤組成 RAID 0,數(shù)據(jù)的寫入速度就是同樣的數(shù)據(jù)向一塊硬盤中寫入速度的3倍襟衰。我們畫一張 RAID 0 的示意圖贴铜,如圖 1 所示。

RAID 0示意圖

圖 1 RAID 0 示意圖

解釋一下這張示意圖瀑晒。我們準(zhǔn)備了 3 塊硬盤組成了 RAID 0绍坝,每塊硬盤都劃分了相等的區(qū)塊。當(dāng)有數(shù)據(jù)要寫入 RAID 0 時(shí)苔悦,首先把數(shù)據(jù)按照區(qū)塊大小進(jìn)行分割轩褐,然后再把數(shù)據(jù)依次寫入不同的硬盤。每塊硬盤負(fù)責(zé)的數(shù)據(jù)寫入量都是整體數(shù)據(jù)的 1/3玖详,當(dāng)然寫入時(shí)間也只有原始時(shí)間的 1/3把介。所以,從理論上講蟋座,由幾塊硬盤組成 RAID 0拗踢,數(shù)據(jù)的寫入速度就是數(shù)據(jù)只寫入一塊硬盤速度的幾倍。

RAID 0 的優(yōu)點(diǎn)如下:

  • 通過把多塊硬盤合并成一塊大的邏輯硬盤向臀,實(shí)現(xiàn)了數(shù)據(jù)跨硬盤存儲(chǔ)秒拔。
  • 通過把數(shù)據(jù)分割成等大小的區(qū)塊,分別存入不同的硬盤飒硅,加快了數(shù)據(jù)的讀寫速度。數(shù)據(jù)的讀/寫性能是幾種 RAID 中最好的作谚。
  • 多塊硬盤合并成 RAID 0三娩,幾塊小硬盤組成了更大容量的硬盤,而且沒有容量損失妹懒。RAID 0 的總?cè)萘烤褪菐讐K硬盤的容量之和雀监。

RAID 0 有一個(gè)明顯的缺點(diǎn),那就是沒有數(shù)據(jù)冗余功能,RAID 0 中的任何一塊硬盤損壞会前,RAID 0 中所有的數(shù)據(jù)都將丟失好乐。也就是說(shuō),由幾塊硬盤組成 RAID 0瓦宜,數(shù)據(jù)的損毀概率就是只寫入一塊硬盤的幾倍蔚万。

我們剛剛說(shuō)了,組成 RAID 0 的硬盤的大小最好都是一樣的临庇。那有人說(shuō)我只有兩塊不一樣大小的硬盤反璃,難道就不能組成 RAID 0 嗎?

答案是可以的假夺。假設(shè)有兩塊硬盤淮蜈,一塊大小是 100GB,另一塊大小是 200GB已卷。由這兩塊硬盤組成 RAID 0梧田,那么當(dāng)最初的 200G 數(shù)據(jù)寫入時(shí),是分別存放在兩塊硬盤當(dāng)中的侧蘸;但是當(dāng)數(shù)據(jù)大于 200GB 之后裁眯,第一塊硬盤就寫滿了,以后的數(shù)據(jù)就只能寫入第二塊硬盤中闺魏,讀/寫性能也就隨之下降了未状。

一般不建議企業(yè)用戶使用 RAID 0,因?yàn)閿?shù)據(jù)損毀的概率更高析桥。如果對(duì)數(shù)據(jù)的讀/寫性能要求非常高司草,但對(duì)數(shù)據(jù)安全要求不高時(shí),RAID 0 就非常合適了泡仗。

RAID 1

RAID 1也叫 Mirror 或 Mirroring(鏡像卷)埋虹,由兩塊硬盤組成。兩塊硬盤的大小最好一致娩怎,否則總?cè)萘恳匀萘啃〉哪菈K硬盤為主搔课。RAID 1 就具備了數(shù)據(jù)冗余功能,因?yàn)檫@種模式是把同一份數(shù)據(jù)同時(shí)寫入兩塊硬盤截亦。

比如有兩塊硬盤爬泥,組成了 RAID 1,當(dāng)有數(shù)據(jù)寫入時(shí)崩瓤,相同的數(shù)據(jù)既寫入硬盤 1袍啡,也寫入硬盤 2。這樣相當(dāng)于給數(shù)據(jù)做了備份却桶,所以任何一塊硬盤損壞境输,數(shù)據(jù)都可以在另一塊硬盤中找回蔗牡。RAID 1 的示意圖如圖 2 所示。

RAID 1示意圖

圖 2 RAID 1 示意圖

RAID 1 具有了數(shù)據(jù)冗余功能嗅剖,但是硬盤的容量卻減少了 50%辩越,因?yàn)閮蓧K硬盤當(dāng)中保存的數(shù)據(jù)是一樣的,所以兩塊硬盤際上只保存了一塊硬盤那么多的數(shù)據(jù)信粮,這也是我們把 RAID 1 稱作鏡像卷的原因黔攒。

RAID 1 的優(yōu)點(diǎn)如下:

  • 具備了數(shù)據(jù)冗余功能,任何一塊硬盤出現(xiàn)故障蒋院,數(shù)據(jù)都不會(huì)丟失亏钩。
  • 數(shù)據(jù)的讀取性能雖然不如RAID 0,但是比單一硬盤要好欺旧,因?yàn)閿?shù)據(jù)有兩份備份在不同的硬盤上姑丑,當(dāng)多個(gè)進(jìn)程讀取同一數(shù)據(jù)時(shí),RAID會(huì)自動(dòng)分配讀取進(jìn)程辞友。

RAID 1 的缺點(diǎn)也同樣明顯:

  • RAID 1 的容量只有兩塊硬盤容量的 50%栅哀,因?yàn)槊繅K硬盤中保存的數(shù)據(jù)都一樣。
  • 數(shù)據(jù)寫入性能較差称龙,因?yàn)橄嗤臄?shù)據(jù)會(huì)寫入兩塊硬盤當(dāng)中留拾,相當(dāng)于寫入數(shù)據(jù)的總?cè)萘孔兇罅恕km然 CPU 的速度足夠快鲫尊,但是負(fù)責(zé)數(shù)據(jù)寫入的芯片只有一個(gè)痴柔。

RAID 10 或 RAID 01

我們發(fā)現(xiàn),RAID 0 雖然數(shù)據(jù)讀/寫性能非常好疫向,但是沒有數(shù)據(jù)冗余功能咳蔚;而 RAID 1 雖然具有了數(shù)據(jù)冗余功能,但是數(shù)據(jù)寫入速度實(shí)在是太慢了(尤其是軟 RAID)搔驼。

那么谈火,我們能不能把 RAID 0 和 RAID 1 組合起來(lái)使用?當(dāng)然可以舌涨,這樣我們就即擁有了 RAID 0 的性能糯耍,又擁有了 RAID 1 的數(shù)據(jù)冗余功能。

我們先用兩塊硬盤組成 RAID 1囊嘉,再用兩塊硬盤組成另一個(gè) RAID 1温技,最后把這兩個(gè) RAID 1組成 RAID 0,這種 RAID 方法稱作 RAID 10扭粱。那先組成 RAID 0舵鳞,再組成 RAID 1 的方法我們作 RAID 01。我們通過示意圖 3 來(lái)看看 RAID 10焊刹。

RAID 10示意圖

圖 3 RAID 10 示意圖

我們把硬盤 1 和硬盤 2 組成了第一個(gè) RAID 1,把硬盤 3 和硬盤 4 組成了第二個(gè) RAID 1,這兩個(gè) RAID 1組成了 RAID 0虐块。因?yàn)橄冉M成 RAID 1俩滥,再組成 RAID 0,所以這個(gè) RAID 是 RAID 10贺奠。

當(dāng)有數(shù)據(jù)寫入時(shí)霜旧,首先寫入的是 RAID 0(RAID 0 后組成,所以數(shù)據(jù)先寫入)儡率,所以數(shù)據(jù) 1 和數(shù)據(jù) 3 寫入了第一個(gè) RAID 1挂据,而數(shù)據(jù) 2 和數(shù)據(jù) 4 寫入了第二個(gè) RAID 1。當(dāng)數(shù)據(jù) 1 和數(shù)據(jù) 3 寫入第一個(gè) RAID 1 時(shí)儿普,

因?yàn)閷懭氲氖?RAID 1崎逃,所以在硬盤 1 和硬盤 2 中各寫入了一份。數(shù)據(jù) 2 和數(shù)據(jù) 4 也一樣眉孩。

這樣的組成方式个绍,既有了 RAID 0 的性能優(yōu)點(diǎn),也有了 RAID 1 的數(shù)據(jù)冗余優(yōu)點(diǎn)浪汪。但是大家要注意巴柿,雖然我們有了 4 塊硬盤,但是由于 RAID 1 的缺點(diǎn)死遭,所以真正的容量只有 4 塊硬盤的 50%广恢,另外的一半是用來(lái)備份的。

RAID 5

RAID 5 最少需要由 3 塊硬盤組成呀潭,當(dāng)然硬盤的容量也應(yīng)當(dāng)一致钉迷。當(dāng)組成 RAID 5 時(shí),同樣需要把硬盤分隔成大小相同的區(qū)塊蜗侈。當(dāng)有數(shù)據(jù)寫入時(shí)篷牌,數(shù)據(jù)也被劃分成等大小的區(qū)塊,然后循環(huán)向 RAID 5 中寫入踏幻。

每次循環(huán)寫入數(shù)據(jù)的過程中枷颊,在其中一塊硬盤中加入一個(gè)奇偶校驗(yàn)值(Parity),這個(gè)奇偶校驗(yàn)值的內(nèi)容是這次循環(huán)寫入時(shí)其他硬盤數(shù)據(jù)的備份该面。當(dāng)有一塊硬盤損壞時(shí)夭苗,采用這個(gè)奇偶校驗(yàn)值進(jìn)行數(shù)據(jù)恢復(fù)。通過示意圖來(lái)看看 RAID 5 的存儲(chǔ)過程隔缀,如圖 4 所示题造。

RAID 5 示意圖

圖 4 RAID 5 示意圖

在這張示意圖中,我們使用三塊硬盤組成了 RAID 5猾瘸。當(dāng)有數(shù)據(jù)循環(huán)寫入時(shí)界赔,每次循環(huán)都會(huì)寫入一個(gè)奇偶校驗(yàn)值(Parity)丢习,并且每次奇偶校驗(yàn)值都會(huì)寫入不同的硬盤。這個(gè)奇偶校驗(yàn)值就是其他兩塊硬盤中的數(shù)據(jù)經(jīng)過換算之后產(chǎn)生的淮悼。因?yàn)槊看纹媾夹r?yàn)值都會(huì)寫入不同的硬盤咐低,所以任何一塊硬盤損壞之后,都可以依賴其他兩塊硬盤中保存的數(shù)據(jù)恢復(fù)這塊損壞的硬盤中的數(shù)據(jù)袜腥。

需要注意的是见擦,每次數(shù)據(jù)循環(huán)寫入時(shí),都會(huì)有一塊硬盤用來(lái)保存奇偶校驗(yàn)值羹令,所以在 RAID 5 中可以使用的總?cè)萘渴怯脖P總數(shù)減去一塊的容量之和鲤屡。

比如,在這張示意圖中福侈,由三塊硬盤組成了 RAID 5酒来,但是真正可用的容量是兩塊硬盤的容量之和,也就是說(shuō)癌刽,越多的硬盤組成 RAID 5役首,損失的容量占比越小,因?yàn)椴还苡啥嗌賶K硬盤組成 RAID 5显拜,奇偶校驗(yàn)值加起來(lái)只占用一塊硬盤衡奥。而且還要注意,RAID 5 不管是由幾塊硬盤組成的远荠,只有損壞一塊硬盤的情況才能恢復(fù)數(shù)據(jù)矮固,因?yàn)槠媾夹r?yàn)值加起來(lái)只占用了一塊硬盤,如果損壞的硬盤超過一塊譬淳,那么數(shù)據(jù)就不能再恢復(fù)了档址。

RAID 5 的優(yōu)點(diǎn)如下:

  • 因?yàn)槠媾夹r?yàn)值的存在,RAID 5 具有了數(shù)據(jù)冗余功能邻梆。
  • 硬盤容量損失比 RAID 1 小守伸,而且組成 RAID 5 的硬盤數(shù)量越多,容量損失占比越小浦妄。
  • RAID 5的數(shù)據(jù)讀/寫性能要比 RAID 1 更好尼摹,但是在數(shù)據(jù)寫入性能上比 RAID 0 差。

RAID 5 的缺點(diǎn)如下:

  • 不管由多少塊硬盤組成 RAID 5剂娄,只支持一塊硬盤損壞之后的數(shù)據(jù)恢復(fù)蠢涝。
  • RAID 5 的實(shí)際容量是組成 RAID 5 的硬盤總數(shù)減去一塊的容量之和。也就是有一塊硬盤用來(lái)保存奇偶校驗(yàn)值阅懦,但不能保存數(shù)據(jù)和二。

從總體上來(lái)說(shuō),RAID 5 更像 RAID 0 和 RAID 1 的折中耳胎,性能比 RAID 1 好惯吕,但是不如 RAID 0惕它;數(shù)據(jù)冗余比 RAID 0 好,而且不像 RAID 1 那樣浪費(fèi)了 50% 的硬盤容量废登。

軟 RAID 和硬 RAID

我們要想在服務(wù)器上實(shí)現(xiàn) RAID怠缸,可以采用磁盤陣列卡(RAID 卡)來(lái)組成 RAID,也就是硬 RAID钳宪。RAID 卡上有專門的芯片負(fù)責(zé) RAID 任務(wù),因此性能要好得多扳炬,而且不占用系統(tǒng)性能吏颖,缺點(diǎn)是 RAID 卡比較昂貴。

如果我們既不想花錢又想使用 RAID恨樟,那就只能使用軟 RAID 了半醉。軟 RAID 是指通過軟件實(shí)現(xiàn) RAID 功能,沒有多余的費(fèi)用劝术,但是更加耗費(fèi)服務(wù)器系統(tǒng)性能缩多,而數(shù)據(jù)的寫入速度比硬 RAID 慢。

----> 轉(zhuǎn)發(fā)「站長(zhǎng)嚴(yán)長(zhǎng)生」資料养晋,僅作為學(xué)習(xí)使用衬吆。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市绳泉,隨后出現(xiàn)的幾起案子逊抡,更是在濱河造成了極大的恐慌,老刑警劉巖零酪,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冒嫡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡四苇,警方通過查閱死者的電腦和手機(jī)孝凌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)月腋,“玉大人蟀架,你說(shuō)我怎么就攤上這事÷奘郏” “怎么了辜窑?”我有些...
    開封第一講書人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)寨躁。 經(jīng)常有香客問我穆碎,道長(zhǎng),這世上最難降的妖魔是什么职恳? 我笑而不...
    開封第一講書人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任所禀,我火速辦了婚禮方面,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘色徘。我一直安慰自己恭金,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開白布褂策。 她就那樣靜靜地躺著横腿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪斤寂。 梳的紋絲不亂的頭發(fā)上耿焊,一...
    開封第一講書人閱讀 51,231評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音遍搞,去河邊找鬼罗侯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛溪猿,可吹牛的內(nèi)容都是我干的钩杰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼诊县,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼讲弄!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起依痊,我...
    開封第一講書人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤垂睬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后抗悍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體驹饺,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年缴渊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赏壹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡衔沼,死狀恐怖蝌借,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情指蚁,我是刑警寧澤菩佑,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站凝化,受9級(jí)特大地震影響稍坯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一瞧哟、第九天 我趴在偏房一處隱蔽的房頂上張望混巧。 院中可真熱鬧,春花似錦勤揩、人聲如沸咧党。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)傍衡。三九已至,卻和暖如春负蠕,著一層夾襖步出監(jiān)牢的瞬間聪舒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工虐急, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人滔迈。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓止吁,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親燎悍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子敬惦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容