RAID技術圖解(mdadm)

来源:https://www.cnblogs.com/liugp/archive/2022/07/01/16429178.html
-Advertisement-
Play Games

一、概述 RAID ( Redundant Array of Independent Disks )即獨立磁碟冗餘陣列,通常簡稱為磁碟陣列。簡單地說, RAID 是由多個獨立的高性能磁碟驅動器組成的磁碟子系統,從而提供比單個磁碟更高的存儲性能和數據冗餘高可靠性的存儲技術。RAID分為硬 RAID、全 ...


目錄

一、概述

RAID ( Redundant Array of Independent Disks )即獨立磁碟冗餘陣列,通常簡稱為磁碟陣列。簡單地說, RAID 是由多個獨立的高性能磁碟驅動器組成的磁碟子系統,從而提供比單個磁碟更高的存儲性能數據冗餘高可靠性的存儲技術。RAID分為硬 RAID、全軟 RAID、半軟 RAID。

二、RAID類型

1)硬體磁碟陣列(Hardware RAID)

簡單來說就是全部通過用硬體來實現RAID功能的就是硬RAID,比如:各種RAID卡,還有主板集成能夠做的RAID都是硬RAID。

硬RAID全面具備了自己的RAID控制/處理與I/O處理晶元,甚至還有陣列緩衝(Array Buffer),對CPU的占用率以及整體性能中最有優勢

2)軟體磁碟陣列(Software RAID)

反而言之,通過用操作系統來完成RAID功能的就是軟RAID,比如:在Linux操作系統下,用3塊硬碟做RAID5。

直接通過軟體層實現的RAID,所有功能都是操作系統(OS)與CPU來完成,可想而知這是效率最低的一種RAID

與硬RAID不同的是,軟RAID的各個成員盤對於操作系統來說是可見的,但操作系統並不把各個成員盤呈現給用戶,而只是把通過軟體層配置好的虛擬RAID捲呈現給用戶,使用戶可以像使用一個普通磁碟一樣使用RAID捲。

3)硬體輔助磁碟陣列(Hardware-Assisted RAID)

與硬 RAID 和 全軟 RAID 相比,半軟 RAID需要一張RAID卡,以及廠商所提供的驅動程式。

但是半軟半硬RAID 缺乏自己的I/O 處理晶元,所以這方面的工作仍要由CPU 與驅動程式來完成。而且,半軟半硬RAID 所採用的RAID 控制/處理晶元的能力一般都比較弱,不能支持高的RAID 等級

三、 RAID 主要優勢有如下幾點

大容量

這是 RAID 的一個顯然優勢,它擴大了磁碟的容量,由多個磁碟組成的 RAID 系統具有海量的存儲空間。

高性能

RAID 的高性能受益於數據條帶化技術。通過數據條帶化, RAID 將數據 I/O 分散到各個成員磁碟上,從而獲得比單個磁碟成倍增長的聚合 I/O 性能。

可靠性

可用性和可靠性是 依賴於RAID 的數據冗餘特征。

可管理性

實際上, RAID 是一種虛擬化技術,它對多個物理磁碟驅動器虛擬成一個大容量的邏輯驅動器;RAID 可以動態增減磁碟驅動器,可自動進行數據校驗和數據重建,這些都可以 大大簡化管理工作。

四、關鍵技術

1)鏡像

鏡像是一種冗餘技術,為磁碟提供保護功能,防止磁碟發生故障而造成數據丟失。

對於 RAID 而言,採用鏡像技術 典型地 將會同時在陣列中產生兩個完全相同的數據副本,分佈在兩個不同的磁碟上。鏡像提供了完全的數據冗餘能力,當一個數據副本失效不可用時,外部系統仍可正常訪問另一副本,不會對應用系統運行和性能產生影響。

鏡像技術可以從多個副本進行併發讀取數據,提供更高的讀 I/O 性能,但不能並行寫數據,寫多個副本會會導致一定的 I/O 性能降低。

2)數據條帶

磁碟存儲的性能瓶頸在於磁頭尋道定位,它是一種慢速機械運動,無法與高速的 CPU 匹配。再者,單個磁碟驅動器性能存在物理極限, I/O 性能非常有限。

RAID 由多塊磁碟組成,數據條帶技術將數據以塊的方式分佈存儲在多個磁碟中,從而可以對數據進行併發處理。這樣寫入和讀取數據就可以在多個磁碟上同時進行,併發產生非常高的聚合 I/O ,有效提高了整體 I/O 性能,而且具有良好的線性擴展性。

3)數據校驗

鏡像具有高安全性、高讀性能,但冗餘開銷太昂貴數據條帶通過併發性來大幅提高性能,然而對數據安全性、可靠性未作考慮數據校驗是一種冗餘技術,它用校驗數據來提供數據的安全,可以檢測數據錯誤,併在能力允許的前提下進行數據重構。相對鏡像,數據校驗大幅縮減了冗餘開銷,用較小的代價換取了極佳的數據完整性和可靠性數據條帶技術提供高性能數據校驗提供數據安全性, RAID 不同等級往往同時結合使用這兩種技術。

五、RAID 等級介紹

常見RAID有RAID0 、 RAID1 、RAID5 、 RAID10、RAID01 五種 RAID 等級。標準等級是最基本的 RAID 配置集合,單獨或綜合利用數據條帶、鏡像和數據校驗技術。標準 RAID 可以組合,即 RAID 組合等級,滿足 對性能、安全性、可靠性要求更高的存儲應用需求。

1)RAID0

RAID0 是一種簡單的、無數據校驗的數據條帶化技術。實際上不是一種真正的 RAID ,因為它並不提供任何形式的冗餘策略

RAID0 具有低成本、高讀寫性能、 100% 的高存儲空間利用率等優點,但是它不提供數據冗餘保護,一旦數據損壞,將無法恢復。

2)RAID1

RAID1 稱為鏡像,它將數據完全一致地分別寫到工作磁碟和鏡像 磁碟,它的磁碟空間利用率為 50% 。 RAID1 在數據寫入時,響應時間會有所影響,但是讀數據的時候沒有影響。 RAID1 提供了最佳的數據保護,一旦工作磁碟發生故障,系統自動從鏡像磁碟讀取數據,不會影響用戶工作。

RAID1 與 RAID0 剛好相反,是為了增強數據安全性使兩塊 磁碟數據呈現完全鏡像,從而達到安全性好、技術簡單、管理方便。 RAID1 擁有完全容錯的能力,但實現成本高

3)RAID5

RAID5 應該是目前最常見的 RAID 等級,它在寫操作可以同時發生在完全不同的磁碟上。因此, RAID5 不存在併發寫操作時的校驗盤性能瓶頸問題。另外, RAID5 還具備很好的擴展性當陣列磁碟 數量增加時,並行操作量的能力也隨之增長

RAID5 兼顧存儲性能、數據安全和存儲成本等各方面因素,它可以理解為 RAID0 和 RAID1 的折中方案,是目前綜合性能最佳的數據保護解決方案。

4)RAID組合等級

目前在業界和學術研究中提到的 RAID 組合等級主要有 RAID00 、 RAID01 、 RAID10 、 RAID100 、 RAID30 、 RAID50 、 RAID53 、 RAID60 ,但實際得到較為廣泛應用的只有 RAID01 和 RAID10 兩個等級。所以這裡只講RAID01 和 RAID10。

1、RAID01 和 RAID10

RAID01 是先做條帶化再作鏡像,本質是對物理磁碟實現鏡像。

RAID10 是先做鏡像再作條帶化,是對虛擬磁碟實現鏡像。

RAID01 兼備了 RAID0 和 RAID1 的優點,它先用兩塊磁碟建立鏡像,然後再在鏡像內部做條帶化。 RAID01 的數據將同時寫入到兩個磁碟陣列中,如果其中一個陣列損壞,仍可繼續工作,保證數據安全性的同時又提高了性能。 RAID01 和 RAID10 內部都含有 RAID1 模式,因此整體磁碟利用率均僅為 50%

2、RAID01和RAID10的區別

RAID01比較缺乏安全性,且故障時難以恢復,實際應用中幾乎沒有人會選擇。
RAID10速度較快,故障容易恢復。

5)RAID 等級對比

類型 讀寫性能 安全性、可靠性 磁碟利用率 成本
RAID0 最好(因並行性而提高) 最差(完全無安全保障) 最高(100%) 最低
RAID1 讀和單個磁碟無分別,寫則要寫兩邊 最高(提供數據的百分之百備份) 差(50%) 最高
RAID5 讀:RAID5=RAID0(相近似的數據讀取速度);寫:RAID5<對單個磁碟進行寫入操作(多了一個奇偶校驗信息寫入) RAID0與RAID1折中 RAID0>RAID5>RAID 1 RAID1>RAID5>RAID0
RAID10;RAID10 讀:RAID10=RAID0;寫:RAID10=RAID1 RAID10=RAID1 RAID10=RAID1(50%) RAID10=RAID1

六、實驗

通常電腦功能既可以由硬體來實現,也可以由軟體來實現。對於 RAID 系統而言,自然也不例外,它可以採用軟體方式實現,也可以採用硬體方式實現,或者採用軟硬結合的方式實現。硬RAID自己電腦無法實現,這裡只講軟RAID實現。

軟RAID實現(通過mdadm軟體實現)

1)mdadm安裝與介紹

1、安裝

$ yum install -y mdadm

2、mdadm介紹

mdadm命令常見參數解釋:

-a {yes|no} 自動為其創建設備文件
-n	指定設備數量
-l	指定RAID級別
-C	創建
-v	顯示過程
-f	模擬設備損壞
-r	移除設備
-Q	查看摘要信息
-D	查看詳細信息
-S	停止RAID磁碟陣列
-c 指定數據塊大小(chunk)
-x 指定空閑盤(熱備磁碟)個數,空閑盤(熱備磁碟)能在工作盤損壞後自動頂替

2)RAID0實現

1、準備兩塊磁碟

/dev/sdb1
/dev/sdb2

2、創建raid

$ mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{1,2}

3、格式化

$ mkfs.ext4 /dev/md0

註意:在格式化時,可以指定-E選項下的stride參數指定條帶是塊大小的多少倍,有在一定程度上提高軟RAID性能,如塊預設大小為4k,而條帶大小預設為64k,則stride為16,這樣就避免了RAID每次存取數據時都去計算條帶大小,如:

$ mkfs.ext4  -E stride=16 -b 4096 /dev/md0

其中stride=chunk/block,為2的n次方

4、掛載

$ mkdir /opt/raid0
$ mount /dev/md0 /opt/raid0
$ lsblk -f
$ 添加自動掛載
$ echo 'UUID=4ca46e4a-9308-4f3e-9542-f93de83bb0e3  /opt/raid0  ext4 defaults  0  0' >> /etc/fstab

3)AID1實現

1、準備兩塊磁碟

/dev/sdc
/dev/sdd

2、創建raid

$ mdadm -C /dev/md1 -a yes -n 2 -l 1 /dev/sd{c,d}

3、格式化

$ mkfs.ext4 /dev/md1

註意:這個提示是說軟raid不能用作啟動分區。

4、掛載

$ mkdir /opt/raid1
$ mount /dev/md1 /opt/raid1
$ lsblk -f
$ 添加自動掛載
$ echo 'UUID=28171480-3db3-4b80-be78-e86693b5d8a2  /opt/raid1  ext4 defaults  0  0' >> /etc/fstab

4)RAID5實現

1、準備兩塊磁碟

/dev/sdc
/dev/sdd

2、創建raid

$ mdadm -C /dev/md5 -a yes -l 5 -n 3 /dev/sde{1,2,3}

3、格式化

$ mkfs.ext4  /dev/md5

4、掛載

$ mkdir /opt/raid5
$ mount /dev/md5 /opt/raid5
$ lsblk -f
$ 添加自動掛載
$ echo 'UUID=c617c439-641d-4347-9a37-c6c559f8abc5  /opt/raid5  ext4 defaults  0  0' >> /etc/fstab

5、增加熱備磁碟

$ mdadm /dev/md5 -a /dev/sdf

【科普熱備】

熱備的概念是 平時不參與陣列,就是一塊空盤,在陣列中某一塊盤壞掉了 熱備才頂上

七、管理模式

選項:-a(--add),-d(--del),-r(--remove),-f(--fail)

1)模擬損壞

$ mdadm /dev/md1 -f /dev/sdd

2)移除損壞的磁碟

$ mdadm /dev/md1 -r /dev/sdd

3)添加新的硬碟到已有陣列

$ mdadm /dev/md1 -a /dev/sdg

註意:

新增加的硬碟需要與原硬碟大小一致
如果原有陣列缺少工作磁碟(如raid1只有一塊在工作,raid5只有2塊在工作),這時新增加的磁碟直接變為工作磁碟,如果原有陣列工作正常,則新增加的磁碟為熱備磁碟。

4)停止陣列

選項:-S = --stop

# 必須先取消掛載
$ umount /opt/raid1
$ mdadm -S /dev/md1

八、監控模式

選項:-F
不常用,不做詳細說明。

九、增長模式,用於增加磁碟,為陣列擴容

選項:-G
示例,將上述raid5的熱備磁碟增加到陣列工作磁碟中

$ mdadm -G /dev/md2  -n 4

註意:-n 4 表示使用四塊工作磁碟
再次使用-D選項查看陣列詳細信息如下:

$ mdadm -D /dev/md1

十、裝配模式,軟RAID是基於系統的,當原系統損壞了,需要重新裝配RAID

選項:-A
示例:將上述已經停止的陣列重新裝配:

$ mdadm -A /dev/md1 /dev/sdc /dev/sdd
$ mount /dev/md1 /opt/raid1

實現自動裝配
mdadm運行時會自動檢查/etc/mdadm.conf 文件並嘗試自動裝配,因此第一次配置raid後可以將信息導入到/etc/mdadm.conf 中,命令如下:

$ mdadm -Ds >/etc/mdadm.conf

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 通常在讀寫文件之前,需要判斷文件或目錄是否存在,不然某些處理方法可能會使程式出錯。所以最好在做任何操作之前,先判斷文件是否存在。 這裡將介紹三種判斷文件或文件夾是否存在的方法,分別使用os模塊、Try語句、pathlib模塊。 1.使用os模塊 os模塊中的os.path.exists()方法用於檢 ...
  • JAVA編碼中存在一些容易被人忽視的陷阱,稍不留神可能就會跌落其中,給項目的穩定運行埋下隱患。此外,這些陷阱也是面試的時候面試官比較喜歡問的問題。 本文對這些陷阱進行了統一的整理,讓你知道應該如何避免落入陷阱中,下麵就一起來瞭解下吧。 迴圈中操作目標list 遍歷List然後對list中符合條件的元 ...
  • 筆者使用的開發環境是IntelliJ IDEA Community Edition 2021.3.3 scala版本是2.11.8,與Spark2.0嚴格對應。 (1)在maven環境中導入scala框架 導入Scala框架 導入成功後在main/java 路徑中可以創建新的scala類 至此,sc ...
  • 前言 聚類問題是無監督學習的問題,演算法思想就是物以類聚,人以群分,聚類演算法感知樣本間的相似度,進行類別歸納,對新輸入進行輸出預測,輸出變數取有限個離散值。本次我們使用兩種方法對鳶尾花數據進行聚類。 無監督就是沒有標簽的進行分類 K-means 聚類演算法 K-means聚類演算法(k-均值或k-平均)聚 ...
  • 來源:cnblogs.com/youzhibing/p/15354706.html 疑慮背景 疑慮描述 最近,在進行開發的過程中,發現之前的一個寫法,類似如下: 以我的理解,@Configuration 加 @Bean 會創建一個 userName 不為 null 的 UserManager 對象, ...
  • 進入移動互聯網時代以來,Windows桌面開發已經很久不碰了。之前就是從做Windows開發入行的。 當年,還是C++ VC6, MFC的時代。那時候開發要查的是MSDN :-)。記憶體要自己管理, 排查記憶體泄漏(忘了釋放分配的記憶體)也是基本日常。光陰似箭,歲月如梭~! 幾年之前,北漂時需要寫一個wi ...
  • Sorted Set (ZSet) 數據結構 Sorted Set (ZSet), 即有序集合, 底層使用 壓縮列表(ziplist) 或者 跳躍表(skiplist) 使用 壓縮列表(ziplist) 當同時滿足下麵兩個條件時,使用 ziplist 存儲數據 元素個數少於128個 (zset-ma ...
  • 1 環境準備: VirtualBox下載地址:https://www.virtualbox.org/wiki/Downloads,根據自己的系統類型進行下載安裝即可。 openEuler ISO下載地址:https://www.openeuler.org/zh/download/,選擇自己想要的版本 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...