Linux RAID磁碟列陣完全攻略

2020-07-16 10:04:49
LVM 最大的優勢在於可以在不解除安裝分割區和不損壞資料的情況下進行分割區容量的調整,但是萬一硬碟損壞了,那麼資料一定會丟失。 本節講的 RAID(磁碟陣列)的優勢在於硬碟讀寫效能更好,而且有一定的資料冗餘功能。

RAID 功能已經內建在 Linux 2.0及以後的核心中,為了使用這項功能,還需要特定的工具來管理 RAID,在絕對多數 Linux 發行版本中,更多的是使用 mdadm,讀者可以自行下載並安裝這個工具。

RAID 簡介

RAID(Redundant Arrays of Inexpensive Disks,磁碟陣列),翻譯過來就是廉價的、具有冗餘功能的磁碟陣列。其原理是通過軟體或硬體將多塊較小的分割區組合成一個容量較大的磁碟組。這個較大的磁碟組讀寫效能更好,更重要的是具有資料冗餘功能。

那什麼是資料冗餘呢?從字面上理解,冗餘就是多餘的、重複的。在磁碟陣列中,冗餘是指由多塊硬碟組成一個磁碟組,在這個磁碟組中,資料儲存在多塊硬碟的不同地方,這樣即使某塊硬碟出現問題,資料也不會丟失,也就是磁碟資料具有了保護功能。

讀者也可以這樣理解,RAID 用於在多個硬碟上分散儲存資料,並且能夠“恰當”地重複儲存資料,從而保證其中某塊硬碟發生故障後,不至於影響整個系統的運轉。RAID 將幾塊獨立的硬碟組合在一起,形成一個邏輯上的 RAID 硬碟,這塊“硬碟”在外界(使用者、LVM 等)看來,和真實的硬碟一樣,沒有任何區別。

RAID 的組成可以是幾塊硬碟,所以我們在講解原理時使用硬碟舉例,但是大家要知道不同的分割區也可以組成 RAID。

RAID 根據組合方式的不同,有多種設計解決方案,以下介紹幾種常見的 RAID 方案(RAID級別)。

RAID 0

RAID 0 也叫 Stripe 或 Striping(帶區捲),是 RAID 級別中儲存效能最好的一個。RAID 0 最好由相同容量的兩塊或兩塊以上的硬碟組成。如果組成 RAID 0 的兩塊硬碟大小不一致,則會影響 RAID 0 的效能。

這種模式下會先把硬碟分隔出大小相等的區塊,當有資料需要寫入硬碟時,會把資料也切割成相同大小的區塊,然後分別寫入各塊硬碟。這樣就相當於把一個檔案分成幾個部分同時向不同的硬碟中寫入,資料的讀/寫速度當然就會非常快。

從理論上講,由幾塊硬碟組成 RAID 0,比如由 3 塊硬碟組成 RAID 0,資料的寫入速度就是同樣的資料向一塊硬碟中寫入速度的3倍。我們畫一張 RAID 0 的示意圖,如圖 1 所示。

RAID 0示意圖
圖 1 RAID 0 示意圖