RAID存儲技術概述

1 數據存儲架構

數據存儲架構是對數據存儲方式、存儲設備及相關組件的組織和規劃,涵蓋存儲系統的布局、數據存儲策略等,它明確數據如何存儲、管理與訪問,為數據的安全、高效使用提供支撐。

1.1 存儲系統

  • 存儲系統是計算機的重要組成部分之一,它是由計算機中一組存儲設備、控制部件和管理信息調度的設備(硬件)和算法(軟件)所構成的系統,所述存儲設備主要用于保存程序和數據,存儲設備是計算機存儲系統的核心部件。
  • 存儲系統負責對數據的讀/寫請求,也負責傳輸數據的任務。
  • 常見的存儲系統主要由這三部分組成:主機系統、互連部件、存儲設備。
    在這里插入圖片描述

1.1.1 主機系統

  • 存儲系統離不開一個主機系統,主機系統負責提出數據讀/寫請求,并完成操作系統和需要數據的應用程序之間的交互。
  • 從主機結構上來看,可以將主機系統的組成分為物理部件(硬件)和邏輯部件(軟件)
  • 物理部件主要包括中央處理單元(CPU)、存儲設備和輸入/輸出設備,邏輯部件主要包括操作系統、應用程序、文件系統、設備驅動以及數據庫系統。
    在這里插入圖片描述

1.1.2 互連部件

  • 在主機和存儲設備之間存在著各種互連部件,包括連接主機與存儲設備的互連物理部件,以及相應的互連邏輯部件
    • 互連物理部件:連接主機與存儲設備的物理部件主要有總線、端口和線纜
    • 互連邏輯部件:互連的邏輯部件主要有通信協議,也可以將設備驅動程序包括進來。

1.1.3 存儲設備

  • 存儲設備包括負責數據存儲的設備。
    如果從廣義上來說,存儲設備不僅包括可以保存數據的固態硬盤、機械硬盤(磁盤)、光盤、磁帶等物理存儲器,還應該包括專門為這些物理存儲器服務的外部部件(如電源、風扇、固定機架等),以及相關協議、處理算法等存儲邏輯部件。
  • 存儲設備可以采用單盤(即單塊磁盤)形式,也可以采用多盤形式。雖然如今單盤的容量能達到8TB、16TB甚至更高一些,但是這還是跟不上人們對數據需求快速增長的容量要求,也難以滿足一些創新應用程序的發展需求,I/O性能相對較低。
  • 在一些復雜、較為嚴苛的使用環境下,單盤容易發生物理損壞導致數據丟失,單盤在存儲數據會存在著一定的安全性隱患。

2 數據存儲技術

2.1 數據冗余技術

  • 為解決單盤在某些應用場景下的不足,人們發明了RAID(Redundant Array of IndependentDisks,獨立磁盤冗余陣列)技術,該項技術可簡稱為磁盤陣列,可以理解為通過組合多個磁盤提升性能與可靠性。
  • 冗余指系統的一些重要部件重復配置,當發生故障時冗余配置的部件可以介入并承擔故障部件的工作,甚至可以對系統進行修復,有助于系統容錯,保障業務持續穩定運行。
  • 數據冗余可增強數據可靠性,當部分數據丟失或損壞時能通過冗余數據恢復。還能提高數據訪問性能,可從冗余副本并行讀取數據。
  • RAID磁盤陣列的實質是將多個獨立的硬盤通過RAID控制器(基于硬件和軟件)結合成虛擬單個大容量的硬盤使用,從而實現比單盤更好的存儲性能和更高的可靠性。
    在這里插入圖片描述
  • 對于有大數據存儲需求的家庭用戶和中小型企業來說,RAID磁盤陣列是一種可靠和高效的存儲擴容選擇,在提高數據存取速度和提升存儲容量的同時也提供了容錯功能,采用漢明碼校驗或奇偶校驗進行數據保護,確保數據的安全性,如果某一塊硬盤出現問題,RAID磁盤陣列系統仍可以繼續工作,不受損壞硬盤的影響。
  • 用新硬盤將損壞的硬盤置換后,利用磁盤陣列的同位檢查的相關功能,還能將數據恢復到新硬盤。
  • 目前,RAID磁盤陣列技術的實現方式主要有兩種:
    • 基于硬件的RAID磁盤陣列技術(俗稱硬RAID)
      • 基于硬件的RAID磁盤陣列技術主要利用集成了微型處理器的硬件RAID適配卡。
      • 由于擁有獨立的存儲器和處理器,RAID適配卡可以獨自計算奇偶校驗信息并確定文件定位,減少對主機中央處理單元運算的依賴,從而有效提升了數據傳輸的速度,即基于硬件的RAID磁盤陣列能夠獨立于主機對存儲子系統進行控制。
    • 基于軟件的RAID磁盤陣列技術(俗稱軟RAID)
      • 基于軟件的RAID磁盤陣列技術比較容易理解,將RAID磁盤技術整合到操作系統中,通過核心磁盤代碼來實現RAID功能。
      • 一般來說,基于軟件的RAID磁盤陣列比基于硬件的RAID磁盤陣列在工作性能上要弱一些,而在經濟性要省錢一些。
      • 如今隨著技術的不斷發展及優化,兩者的性能差距不再明顯。
  • 根據RAID磁盤陣列對磁盤數據分布、校驗方式及實施技術的不同,可以將磁盤陣列分為多個級別,分別為RAID 0、RAID 1、RAID 2、RAID3、RAID4、RAID 5、RAID 6、RAID 10。
  • 其中,RAID 0(條帶化,提升性能但無冗余)、RAID1(鏡像,有冗余)、RAID 3(一個冗余校驗盤)、RAID5(分布式奇偶校驗,兼顧性能與冗余)、RAID6級別較為常用。

2.1.1 RAID 0

  • RAID 0:( 無容錯的條帶化磁盤陣列)又稱為Stripe或Striping
  • 磁盤陣列中組建最簡單的一種形式,只需要至少兩塊硬盤即可
  • 通過智能磁盤控制器或使用操作系統的磁盤驅動程序以軟件的方式(或其他類似技術)將多塊硬盤并聯起來形成一個虛擬的大硬盤,該大硬盤的可用容量等于所有硬盤的容量之和。
  • RAID 0采用數據分條(Data Stripping)技術來在可用硬盤上分布存放數據,即在RAID0系統中,數據被分段且分別存放在不同硬盤上,與單一的大容量硬盤相比,RAID 0的讀寫由幾塊硬盤同時并行處理,因而讀寫速度更快
  • 當有多個I/O請求且所需數據塊分布在不同的硬盤上,那么便可以并行處理這些請求,則I/O請求的排隊時間顯著減少。
  • 條帶化(Striping)是一種數據存儲技術,通過將數據分散存儲在多個磁盤上來提高讀寫性能,其工作原理為
  • 數據分塊:數據被分割成小塊(稱為條帶),這些條帶被順序寫入到陣列中的每個磁盤34。
  • 并行讀寫:由于數據分布在多個磁盤上,系統可以同時從多個磁盤讀取或寫入數據,從而提高整體性能。
  • 優點:
    • 可以提升整個磁盤的性能,讀寫速度快,并且還能利用所有磁盤的存儲空間。
    • RAID 0的硬盤空間使用率最高可達100%,因而其實現成本在所有磁盤陣列中是最低的。
  • 缺點:
    • 沒有冗余和容錯能力,一旦其中某一個磁盤出現故障,都會導致可能無法恢復完整的數據。
  • 應用場景:
    • 不適合存儲重要數據的應用場合
    • 適合對可靠性要求不高、對讀寫性能要求高、非重要數據存儲的應用場合。

2.1.2 RAID 0與LVM中VG的區別

RAID 0 和 LVM(Logical Volume Manager)中的卷組(VG)是兩種不同的磁盤管理技術,它們在功能和應用場景上有顯著的區別。

  • RAID 0
    • 定義:RAID 0,也稱為條帶化,是一種將數據分散存儲在多個磁盤上的技術,以提高讀寫性能。
    • 數據冗余:RAID 0 不提供數據冗余,這意味著如果任何一個磁盤失敗,所有數據都將丟失。
    • 性能:通過并行讀寫操作,RAID 0 可以顯著提高數據訪問速度。
    • 應用場景:適用于需要高性能但對數據安全性要求不高的場景,如視頻編輯、圖形設計等。
  • VG(卷組)
    • 定義:VG 是 LVM的一個組成部分,它將一個或多個物理卷(PV)組合成一個邏輯存儲池。
    • 數據冗余:LVM本身不提供數據冗余,但可以在其上創建鏡像(如使用LV 鏡像)來實現冗余。
    • 性能:LVM 提供了邏輯卷的動態擴展和縮減,以及在線調整大小的能力,從而提高了磁盤管理的靈活性。
    • 應用場景:適用于需要靈活管理磁盤空間的場景,如服務器存儲、數據庫系統等。
  • RAID 0:側重于提高存儲性能,但不提供數據冗余,適合對性能要求高的場景。
  • VG(LVM):側重于提高磁盤管理的靈活性,允許動態調整邏輯卷的大小,適合需要靈活存儲管理的場景。

2.1.3 RAID 1

  • RAID 1加入了冗余能力,采用簡單的鏡像備份的方式實現數據的冗余,需要配置成對的獨立硬盤,在兩者上產生互為備份的數據,當將數據寫在其中一個獨立硬盤(不妨將該硬盤稱為數據盤)上,同時該數據也會被同時寫到相應的鏡像盤上。
  • RAID 1中的數據盤和鏡像盤是相對的,它們沒有主從關系,可以相互鏡像或恢復。
  • RAID 1的寫入速度通常較慢,即比單塊硬盤的寫入速度要慢,這是因為RAID 1對兩塊硬盤的寫入是并行的,并且在同時進行寫入時還要比較兩塊硬盤中的數據。
  • 需要注意的是,在RAID 1系統中讀數據,只能在性能較快的一塊硬盤上進行而不會在兩個硬盤上并行讀取,這意味著當原始數據繁忙時,可以直接從速度更快的鏡像拷貝中讀取數據,所以RAID1在一定程度上可以提升讀取性能。
    在這里插入圖片描述
  • RAID 1在性能上沒有RAID0那般好,但是總是保持一份完整的數據備份,是最為可靠且簡單的一種陣列,當一個硬盤出現問題而失效時,系統可以自動切換到相應的鏡像盤上進行讀寫操作。
  • 從RAID 1的磁盤陣列結構來看,鏡像備份會占用一半的硬盤空間,硬盤空間使用率只有50%,故RAID1是磁盤陣列中單位成本最貴的。
  • 缺點:硬盤的利用率低,成本貴
  • 應用場景:主要用于存儲重要數據,尤其適用于要求數據安全性很高且能夠快速恢復被破壞數據的場合。

2.1.4 RAID 2

  • RAID 2是RAID 0的改良版,以漢明碼(HammingCode)的方式將數據進行編碼后分割為獨立的位元,并將數據分別寫入硬盤中。
  • 因為在數據中加入了錯誤修正碼(ECC,ErrorCorrection Code),所以數據整體的容量會比原始數據大一些。
  • 漢明碼
    • 原理:通過在數據位中插入多個校驗位,每個校驗位負責檢測一部分數據位的錯誤情況。
    • 檢錯能力:能夠檢測并糾正單個錯誤,部分漢明碼版本可以檢測多個錯誤。
    • 糾錯能力:
    • 可以糾正單個錯誤,提高了數據傳輸的可靠性。
    • 應用場景:廣泛應用于內存(RAM)和其他需要高可靠性的數據存儲和傳輸系統中

在這里插入圖片描述

  • 前面四個盤是數據盤,后面三個盤是糾錯碼
  • 讀數據時,能同時使用多個數據盤的帶寬
  • 寫數據時,除了寫數據盤,還需要寫校驗盤,寫性能會有下降
  • 因為存在數據糾錯,所以在壞盤的情況下可以實現數據拯救
  • N塊盤的RAID2的特性
    • 讀性能不到原來的N倍,因為還有一部分是校驗盤
    • 寫性能會有下降,因為每次都要寫校驗盤,受限于校驗盤的數量
    • 空間利用率小于100%,因為漢明碼需要的冗余盤一般比數據盤的數量少 一共7塊盤,4塊數據盤,3塊校驗盤,如果數據盤滿了,那么校驗盤不會滿,空間利用率只會利用7分之4
    • 根據漢明碼位數的不同,能容忍的壞盤數不同,具體信息可以參考漢明碼

2.1.5 RAID 3

  • RAID 3的數據存取方式和RAID2類似,與RAID2不同的是,RAID 3只需要一個冗余校驗盤,而不管磁盤陣列的數目有多少。
  • 可以將RAID 3看做是在RAID2的基礎上發展而來的,主要用了相對簡單的奇偶校驗代替相對復雜的漢明碼校驗,不需要多個冗余硬盤而是只需要單個冗余硬盤,從而大幅降低了成本。
    在這里插入圖片描述
  • 奇偶校驗
    • 原理:在數據位中增加一個校驗位,使得數據位和校驗位中1的總數為奇數(奇校驗)或偶數(偶校驗)。
    • 檢錯能力:只能檢測出奇數個錯誤,無法檢測偶數個錯誤。
    • 糾錯能力:無法糾正錯誤,只能檢測到錯誤的存在。
    • 應用場景:由于其簡單性,常用于對數據傳輸可靠性要求不高的場景
    • 編碼過程:當實際數據中“1”的個數為偶數的時候,校驗位是“0”,反之校驗位是“1”,換句話說,數據位(N位)和校驗位(1位)組成的 編碼數據(N+1位)中,將總共包含偶數個1。
    • 校驗過程:檢查編碼數據(N+1位),如果其包含偶數個1,則校驗通過
  • RAID 3存在的主要問題是做奇偶校驗會消耗系統性能,令奇偶校驗硬盤容易成為整個系統的瓶頸
  • 原因是RAID 3在進行數據寫操作時除了會將數據分割到各個數據盤上進行寫入,還會同時重寫奇偶校驗硬盤中的相關信息。
  • 如果應用程序需要經常需要執行大量寫入操作的話,奇偶校驗硬盤的負載將會很大,進而影響程序的運行速度,從而導致整個RAID系統的性能顯著下降。
  • 應用場景:比較適合類似于視頻編輯這類大文件類型且安全性要求較高的應用。

2.1.6 RAID 4

  • RAID 4和RAID 3比較像,數據都是使用數據分條技術進行分割后依次存放在多個硬盤中,奇偶校驗碼存放在專門的獨立奇偶校驗盤上,不同之處在于RAID4的條帶較大,以數據塊為單位進行數據分割RIAD3的條帶較小,以位為單位進行數據分割
  • 在RAID 4中,在寫入時要等一個硬盤寫完后才能寫下一個,同時較驗數據也要同時寫入奇偶校驗盤,寫入效率較差,而讀取時也需要一個硬盤接著一個硬盤地進行數據讀取,不過因其校驗計算較為簡單,不用進行位的計算,校驗迅速,因而讀取速度相對較快。
  • RAID 4的校驗盤同樣會容易形成性能的瓶頸,而且在遇到故障時,數據恢復的難度比RAID3要大得多,這種類型的磁盤陣列現在很少使用

2.1.7 RAID 5

  • RAID 5相當于RAID 0和RAID1的折中方案,并采用和RAID 4一樣的數據分條方案,數據以塊為單位進行分割并存放到各個硬盤上
  • 但RAID 5沒有設置專門的奇偶校驗硬盤,而是將數據和與其相對應的奇偶校驗信息存儲到各個硬盤上,但是這里有個規則就是奇偶校驗信息和相對應的數據需要分別存儲在不同的硬盤上。
  • 實現方式是數據在所有硬盤之間分條分布,并且每個數據塊的奇偶校驗塊(P)也寫入到同一條帶上。
    在這里插入圖片描述
  • 圖中Ap-Dp 奇偶校驗是放到和數據同一條帶上的,如此一來,當其中某一個硬盤數據損壞了,并不會影響數據的完整性,此時可以利用其他硬盤上存儲的數據和奇偶校驗信息計算出損壞硬盤的數據內容,從而在替換硬盤中重建或恢復被損壞的數據。
  • RAID 5至少需要3個硬盤來組建磁盤陣列,可以允許壞一塊硬盤。
  • 如果在未解決故障之前,又損壞了一個硬盤,那么磁盤陣列中的所有數據都將損壞,結果是災難性的。
  • RAID 5在數據安全保障程度上比RAID1要低,但硬盤空間利用率比RAID 1要高,存儲成本相對較低。
  • 在數據讀取速度上,RAID 5與RAID 0接近,由于多了一個奇偶校驗信息,數據寫入速度比單個硬盤的寫入速度略慢一些。
  • 總體而言,RAID 5讀寫性能較高,有校驗機制,空間利用率高,是一種具有較高存儲性能并且兼顧數據安全和存儲成本的存儲解決方案.。
  • RAID 5運用較多,但是如果RAID5的硬盤組成越多,則其安全性反而越低,遇到兩塊硬盤損壞,數據就難以找回了。

2.1.8 RAID 6

  • RAID 6相當于在RAID 5的基礎上進行擴展而來的,增加了第2個獨立的奇偶校驗信息塊,實現算法不同的雙重奇偶校驗。
  • 相當于對每個數據塊提供兩個校驗保護措施,一個是分層校驗,一個是總體校驗,這兩個校驗碼被分別寫入到不同的兩個硬盤來增強容錯功能(但是,同時也減少硬盤的實際使用容量),數據冗余性更高了,在兩塊硬盤同時損壞的前提下,仍然可以保障數據恢復。
  • 相比RAID 5,RAID 6具有更高的容錯能力(即數據冗余性好),同時其讀取性能也比較優秀,
  • 但是寫數據的性能較差,尤其是隨機寫入性能很差,因為不但要在每個硬盤上寫入校驗數據,還要在專門的校驗硬盤上寫入數據。
  • 至少需要4個硬盤來組成RAID 6磁盤陣列
  • 應用場景:
    • RAID 6的控制器設計復雜,成本高,不適合一般的中小型企業使用
    • 適合對數據安全級別較高的數據中心、信息中心等應用場合使用。

2.1.9 RAID 10(RAID1+0)

RAID 10實際上是RAID 0和RAID1結合應用的磁盤陣
在這里插入圖片描述

  • 首先創建兩個獨立的RAID1,每個RAID 1均由兩個磁盤組成,互為鏡像磁盤,再將這兩個獨立的RAID 1組成一個RAID0,這樣,當將數據往RAID 0磁盤陣列進行寫入時,數據會被分段并并行寫入到組成RAID 0的兩個RAID1中,在每個RAID1中都將相應的分段數據在兩個磁盤中同時寫入以實現互為鏡像備份。
  • RAID 10相當于一個條帶區結構加上一個鏡像結構,同時擁有RAID 0的快速和RAID1的數據高安全性,但是RAID 10對存儲容量的利用率和RAID1一樣只有50%,需要一般的硬盤空間用于存儲冗余數據,硬盤的利用率較低,成本較貴。

2.1.10 RAID級別硬盤利用率

  • “D”指數據塊
  • p“P”指校驗塊。
  • 對于靈活配置xD+yP的RAID策略,硬盤利用率=[x/(x+y)] ×100%
  • RAID 0:硬盤利用率為100%
  • RAID 1:2D:硬盤利用率約為50%
  • RAID 3:支持靈活配置,即支持2D+1P~13D+1P配置
    • 2D+1P:硬盤利用率約為66.67%
    • 4D+1Pb:硬盤利用率約為80%
    • 8D+1P:硬盤利用率約為88.89%
  • RAID 5
    • 支持靈活配置,即支持2D+1P~13D+1P配置
    • 2D+1P:硬盤利用率約為66.67%
    • 4D+1Pb:硬盤利用率約為80%
    • 8D+1P:硬盤利用率約為88.89%
  • RAID 6
    • 支持靈活配置,即支持2D+2P~26D+2P配置
    • 2D+2P:硬盤利用率約為50%
    • 4D+2P:硬盤利用率約為66.67%
    • 8D+2P:硬盤利用率約為80%
    • 16D+2P:硬盤利用率約為88.89%
  • RAID 10:硬盤利用率為50%
  • RAID 50
    • (2D+1P)x2:硬盤利用率約為66.67%
    • (4D+1P)x2:硬盤利用率約為80%
    • (8D+1P)x2:硬盤利用率約為88.89%

3 基于硬件的RAID磁盤陣列

  • 全部通過用硬件來實現RAID功能的就是硬RAID,比如:各種RAID卡,還有主板集成能夠做的RAID都是硬RAID。
  • 所以硬 RAID 就是用專門的RAID控制器(RAID卡)將硬盤和電腦連接起來,RAID控制器負責將所有的RAID成員磁盤配置成一個虛擬的RAID磁盤卷。
  • 操作系統只能識別到由RAID控制器配置后的虛擬磁盤,而無法識別到組成RAID的各個成員盤。
  • 硬RAID全面具備了自己的RAID控制/處理與I/O處理芯片,甚至還有陣列緩沖(Array Buffer),對CPU的占用率以及整體性能中最有優勢。

3.1 陣列卡(RAID控制器)

  • 硬 RAID 包含 RAID 卡和主板上集成的RAID芯片,服務器平臺多采用RAID 卡。
  • RAID 卡組成:
    • RAID 核心處理芯片(RAID 卡上的CPU)
    • 端口
    • 緩存
    • 電池

3.2 陣列卡種類

  • IDE陣列卡
    • 以前主要用在一些數據重要或要接很多個硬盤的服務器與工作站電腦中,可以支持RAID0、1、0+1、3、5。現基本上已經淘汰了。
  • SATA陣列卡
    • 主要作用于大容量數據存儲、網吧、數據安全等服務器領域,同時一些低端卡也滿足了一些家用客戶的需求,能夠支持 RAID 0、1、0+1、5、6。
  • SCSI陣列卡
    • 使用在高端工作站或者是服務器中,可以支持很多塊SCSI接口的硬盤。能夠支持RAID0、1、0+1、3、5 。
    • 這種陣列卡性能很好速度很快當然價格也比較高。不過,現基本上已經淘汰了。
  • SAS陣列卡
    • 主要使用在一些高端工作站與服務器中,已經取代了昔日的SCSI接口,并且可以兼容SATA接口硬盤,能夠支持 RAID 0、1、0+1、5 、50、6、60。

3.3 陣列卡緩存

  • 陣列卡緩存是陣列卡先將數據傳輸到緩存,再由緩存和外邊數據總線交換數據的一種過程,實際指的是相對低速的硬盤盤片與相對高速的外部設備之間的緩沖器。
  • 陣列卡緩存的主要作用是,加快數據讀寫速度,提高磁盤的效用,避免不必要的等待時間,可以減少操作所帶來的延遲提高系統性能得到更好的響應時間,所以陣列卡緩存的作用是非常大的。
  • Write Through和Write Back是陣列卡Cache的兩種使用方式,也稱為透寫和回寫
    • Write Through 透寫:系統的寫磁盤操作并不利用陣列卡的Cache,而是直接與磁盤進行數據的交互,寫操作根本不使用緩存,數據總是直接寫入磁盤,影響寫入性能。
    • Write Back(Write Cache) 回寫:利用陣列Cache作為系統與磁盤間的二傳手,系統先將數據交給Cache,然后再由Cache將數據傳給磁盤;數據不是直接被寫入磁盤,而是寫入緩存。從應用程序的角度看,比等待完成磁盤寫入操作要快的多。因此,可以提高寫性能。由控制器將緩存內未寫入磁盤的數據寫入磁盤。
  • 生產環境中的配置要根據具體的業務類型及環境進行配置
    • 如果有外置UPS電源,選Write Back
    • 如果沒有外置電源,并且對數據安全性要求很高,不要求太高性能,就選Write Through
  • Write Back with BBU
    • 此是陣列卡配有Battery Backup模塊元時的可選項,它的作用是用以在系統斷電時保護Cache中的數據,避免斷電造成中間數據的丟失。

3.4 RAID 電池

  • 作用:用以在系統斷電時保護Cache中的數據,避免斷電造成中間數據的丟失。
  • 在更換RAID卡電池之前,服務器雖然已經下線,無數據寫入,但還有一部分數據存在RAIDcache中,并未寫入硬盤中;但一般RAID卡電池壞掉后,RAID卡會自動將寫緩存(即write back)禁止,變為writethrough方式,會使寫性能有一定的下降,但不影響數據安全。
  • 若RAID電池和某塊硬盤同時出現故障,應先更換RAID卡電池,待服務器重啟成功,RAID卡工作正常后再更換故障的硬盤,最大限度保證數據安全。

4 基于軟件的RAID磁盤陣列

4.1 mdadm工具

  • mdadm是一個在Linux系統中用于構建、管理和監控軟件RAID陣列的工具。
  • 它提供了多種命令來創建、管理、監控RAID陣列,并且支持多種RAID級別,如RAID0、RAID1、RAID5等。
  • mdadm命令常見參數解釋
    • -a {yes|no} 自動為其創建設備文件
    • -n 指定設備數量
    • -l 指定RAID級別
    • -C 創建
    • -v 顯示過程
    • -f 模擬設備損壞
    • -r 移除設備
    • -Q查看摘要信息
      -** -D 查看詳細信息**
    • -S 停止RAID磁盤陣列
    • -c 指定數據塊大小(chunk)
    • -x 指定空閑盤(熱備磁盤)個數,空閑盤(熱備磁盤)能在工作盤損壞后自動頂替

4.2 實例

為 linux 服務器添加4 塊SCSI 硬盤,使用mdadm軟件包,構建 RAID5 磁盤陣列,提高磁盤存儲的性能和可靠性。

4.2.1 創建分區并設置類型

  • 使用fdisk工具各劃分出一塊分區,依次為
    • /dev/sdb1
    • /dev/sdc1
    • /dev/sdd1
    • /dev/sde1
  • 將分區的類型 ID 均更改為fd。fd 分區類型對應“Linux raid autodetect”
    ,表示支持用于RAID磁盤陣列。

4.2.2 創建RAID設備

  • 使用 mdadm 命令創建 RAID,執行以下命令即可創建名稱為md0的 RAID5
  • mdadm -Cv /dev/md0 -a yes -n4 -l5 /dev/sd[bcde]1
    • -C:等同于 create,表示新建
    • -v:顯示創建過程中的信息
    • /dev/md0:創建 RAID5 的名稱
    • -a:–auto,表示通知 mdadm 是否創建設備文件,并分配一個未使用的次設備號
    • yes:代表如果有什么設備文件沒有存在的話就自動創建
    • -n:指定使用幾塊硬盤創建 RAID,n4 表示使用4 塊硬盤創建RAID
    • -l:指定 RAID 的級別,l5 表示創建 RAID5
    • /dev/sd[bcde]1:指定四塊磁盤分區

4.2.3 查看創建結果

# 通過磁盤分區查看
lsblk
# 查看簡易信息
ls -l /dev/md0
# 查看磁盤陣列組成
cat /proc/mdstat
# 查看詳細信息
mdadm -D /dev/md0

4.2.3 創建并掛載文件系統

# 格式化,創建文件系統
mkfs.xfs /dev/md0
# 創建掛載目錄
mkdir /test/raid
# 掛載
mount /dev/md0 /test/raid/

設置永久掛載:vim /etc/fstab

4.2.4 RAID 陣列管理及設備恢復

  • 掃描查看磁盤陣列信息:mdadm -vDs
    • D:detail 的縮寫,打印一個或多個磁盤陣列的詳細信息
    • v:對正在發生的事情顯示更詳細的信息
    • s:掃描/proc/mdstat 中的陣列設備列表
  • 建立配置文件
    為了方便日后啟動/停止RAID 陣列,可以創建一個配置文件來進行管理
# 使用默認配置文件
mdadm -vDs >> /etc/mdadm/mdadm.conf
# 使用自己創建的配置文件
mdadm -vDs > /etc/mdadm.conf
# 重新激活:-A
mdadm -A /dev/md0
mdadm -A --scan
  • 管理模式
# 模擬損壞
mdadm /dev/md0 -f /dev/sdb1
# 移除損壞的磁盤
mdadm /dev/md0 --remove /dev/sdb1
# 添加新的硬盤到已有陣列
mdadm /dev/md0 -a /dev/sdf1
  • 刪除軟raid
# 解掛載
umount /dev/md0
# 停止raid設備,相當于刪除
mdadm -S /dev/md0
# 刪除配置文件,如果之前寫入了
rm -f /etc/mdadm.conf
# 取消自動掛載,如果之前設置了
vim /etc/fstab

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/84182.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84182.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/84182.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LRU 和 DiskLRU實現相冊緩存器

我是寫Linux后端的(golang、c、py),后端緩存算法通常是指的是內存里面的lru、或diskqueue,都是獨立使用。 很少有用內存lru與disklru結合的場景需求。近段時間研究android開發,里面有一些設計思想值得后端學習。 寫這…

可視化預警:如何讓生產風險預警更高效?

你有沒有遇到過這種情況? 明明設備已經開始發熱報警,但操作人員還在繼續運行; 或者某個參數已經接近危險值,卻沒人注意到; 甚至問題早就埋下了隱患,只是當時沒發現…… 這些情況的背后,其實都…

【MPC-C++】qpOASES 源碼編譯與鏈接,編譯器設置細節

qpOASES 源碼編譯與鏈接 克隆源碼 git clone https://github.com/coin-or/qpOASES.gitcd qpOASES mkdir build cd build接下來是構建,有一些細節。 查看 CMakeLists.txt,發現如果不顯示指定 CMAKE_BUILD_TYPE 構建版本,會自動編譯 Release…

【11408學習記錄】考研數學攻堅:行列式本質、性質與計算全突破

行列式 數學線性代數一、對象(元素):向量二、運算三、行列式3.1 第一種定義——行列式的本質定義3.2 行列式的性質性質1:行列互換,其值不變性質2:若行列式中某行(列)元素全為零&…

Qt/C++開發監控GB28181系統/取流協議/同時支持udp/tcp被動/tcp主動

一、前言說明 在2011版本的gb28181協議中,拉取視頻流只要求udp方式,從2016開始要求新增支持tcp被動和tcp主動兩種方式,udp理論上會丟包的,所以實際使用過程可能會出現畫面花屏的情況,而tcp肯定不丟包,起碼…

小木的算法日記-線段樹

🌳 線段樹 (Segment Tree):玩轉區間作的終極利器 你好,未來的算法大師! 想象一下,你正在處理一個巨大的數據集,比如某個電商網站一整天的用戶點擊流。老板突然問你:“下…

Day24 元組和OS模塊

1、元組(有序 不可變 可重復) 管道工程中pipeline類接收的是一個包含多個小元組的列表作為輸入。可以這樣理解這個結構: (1) 列表 []: 定義了步驟執行的先后順序。Pipeline 會按照列表中的順序依次處理數據。之所以用列…

Auto-Coder使用GPT-4o完成:在用TabPFN這個模型構建一個預測未來3天漲跌的分類任務

通過akshare庫,獲取股票數據,并生成TabPFN這個模型 可以識別、處理的格式,寫一個完整的預處理示例,并構建一個預測未來 3 天股價漲跌的分類任務 用TabPFN這個模型構建一個預測未來 3 天股價漲跌的分類任務,進行預測并輸…

Device Mapper 機制

Device Mapper 機制詳解 Device Mapper(簡稱 DM)是 Linux 內核中的一套通用塊設備映射框架,為 LVM、加密磁盤、RAID 等提供底層支持。本文將詳細介紹 Device Mapper 的原理、實現、內核配置、常用工具、操作測試流程,并配以詳細的…

crackme006

crackme006 名稱值軟件名稱aLoNg3x.1.exe加殼方式無保護方式Serial編譯語言Delphi調試環境Win10 64位使用工具x32dbg,ida pro,PEid,DarkDe4破解日期2025-06-05 脫殼 1. 先用PEid查殼 查到無殼 尋找Serial 查詢到編程語言為Delphi 導出Delphi符號表信息到x32dbg&#xff0c…

Conda 創建新環境時報錯 HTTP 502,如何解決?

Conda 創建新環境時報錯 HTTP 502&#xff0c;如何解決&#xff1f; 最近在用 Conda 創建新環境時&#xff0c;突然遇到這樣一個錯誤&#xff1a; CondaHTTPError: HTTP 502 BAD GATEWAY for url <https://mirrors.westlake.edu.cn/ANACONDA/cloud/conda-forge/linux-64/r…

2025最全TS手寫題之partial/Omit/Pick/Exclude/Readonly/Required

隨著 TS 在工作中使用的越來越廣泛&#xff0c;面試的時候面試官也都會加上一兩個 TS 的問題來了解候選人對于 TS 的熟悉程度&#xff0c;其中就有不少手寫題目&#xff0c;比如筆者在字節的一次二面&#xff0c;面試官就問到了我如何實現一個 Pick&#xff0c;在小紅書的一面&…

基于江科大stm32屏幕驅動,實現OLED多級菜單(動畫效果),結構體鏈表實現(獨創源碼)

引言 在嵌入式系統中&#xff0c;用戶界面的設計往往直接影響到用戶體驗。本文將以STM32微控制器和OLED顯示屏為例&#xff0c;介紹如何實現一個多級菜單系統。該系統支持用戶通過按鍵導航菜單&#xff0c;執行相應操作&#xff0c;并提供平滑的滾動動畫效果。 本文設計了一個…

LLMs之StructuredOutput:大模型結構化輸出的簡介、常用方案、前沿框架之詳細攻略

LLMs之StructuredOutput&#xff1a;大模型結構化輸出的簡介、常用方案、前沿框架之詳細攻略 目錄 大模型結構化輸出的簡介 1、特點與難點 大模型結構化輸出的常用方案及對比 1、前沿框架&#xff1a;vLLM 與 XGrammar 大模型結構化輸出的案例應用 大模型結構化輸出的簡介…

Linux中shell流程控制語句

一、if條件控制 1.1 語法解讀 單路決策 - 單分支if語句樣式&#xff1a;if [ 條件 ]then指令fi特點&#xff1a;單一條件&#xff0c;只有一個輸出 雙路決策 - 雙分支if語句樣式&#xff1a;if [ 條件 ]then指令1else指令2fi特點&#xff1a;單一條件&#xff0c;兩個輸出 …

Python學習(8) ----- Python的類與對象

Python 中的類&#xff08;Class&#xff09;與對象&#xff08;Object&#xff09;是面向對象編程&#xff08;OOP&#xff09;的核心。我們可以通過“類是模板&#xff0c;對象是實例”來理解它們的關系。 &#x1f9f1; 一句話理解&#xff1a; 類就像“圖紙”&#xff0c;對…

數據結構-文件

文件是性質相同的記錄的集合。 記錄是文件中存取的基本單位&#xff0c;數據項是文件可使用的最小單位。 操作系統研究的文件是一維的無結構連續字符序列&#xff0c;數據庫中研究的文件是帶有結構的記錄集合。 文件在外存上的4種基本組織方式&#xff1a;順序、索引、散列、鏈…

前端開發面試題總結-CSS篇

文章目錄 CSS面試高頻問答1、CSS選擇器的優先級2、CSS3新特性3、如何垂直水平居中盒子4、什么是重繪和重排5、px/em/rem/vw有什么區別6、rem布局的原理7、如何設置比12px還要小的字體8、CSS中隱藏元素的方式有哪些 CSS面試高頻問答 1、CSS選擇器的優先級 2、CSS3新特性 3、如何…

Python如何給視頻添加音頻和字幕

在Python中&#xff0c;給視頻添加音頻和字幕可以使用電影文件處理庫MoviePy和字幕處理庫Subtitles。下面將詳細介紹如何使用這些庫來實現視頻的音頻和字幕添加&#xff0c;包括必要的代碼示例和詳細解釋。 環境準備 在開始之前&#xff0c;需要安裝以下Python庫&#xff1a;…

解決ubuntu20.04無法喚醒的問題的一種方法

解決ubuntu20.04無法喚醒的問題的一種方法 我更改了三個個地方&#xff0c;目前不清楚是哪個地方起的作用&#xff0c;也可能都起作用了 修改的第一個地方 步驟 1: 獲取 Swap 分區的 UUID 首先&#xff0c;你需要知道你的 swap 分區的 UUID。你可以使用以下命令來查找它&am…