關于軟raid的實現及常見問題

RAID概念

  • 磁盤陣列(Redundant Arrays of Independent Disks,RAID),有“獨立磁盤構成的具有冗余能力的陣列”之意。 磁盤陣列是由很多價格較便宜的磁盤,以硬件(RAID卡)或軟件(MDADM)形式組合成一個容量巨大的磁盤組,利用多個磁盤組合在一起,提升整個磁盤系統效能。利用這項技術,將數據切割成許多區段,分別存放在各個硬盤上。 磁盤陣列還能利用同位檢查(Parity Check)的觀念,在數組中任意一個硬盤故障時,仍可讀出數據,在數據重構時,將數據經計算后重新置入新硬盤中
  • 為什么要用RAID
  • RAID(Redundant Arrays of Independent Disks,磁盤陣列):把相同的數據存儲在多個硬盤的不同的地方的方法
  • 通過RAID可以提高磁盤I/O能力(磁盤并行讀寫)以及提高耐用性(磁盤冗余)。
  • RAID級別:多種磁盤組織在一起的工作方式有所不同
軟件 RAID 和硬件 RAID???
  • 軟件 RAID 的性能較低,因為其使用主機的資源。 需要加載 RAID 軟件以從軟件 RAID 卷中讀取數據。在加載 RAID 軟件前,操作系統需要引導起來才能加載 RAID 軟件。在軟件 RAID 中無需物理硬件。零成本投資。
  • 硬件 RAID 的性能較高。他們采用 PCI Express 卡物理地提供有專用的 RAID 控制器。它不會使用主機資源。他們有 NVRAM 用于緩存的讀取和寫入。緩存用于 RAID 重建時,即使出現電源故障,它會使用后備的電池電源保持緩存。對于大規模使用是非常昂貴的投資。
實現方式
  • 外接式磁盤陣列:通過擴展卡提供適配能力
  • 內接式磁盤陣列:主板集成RAID控制器
  • Software RAID:在軟件層面實現RAID
?RAID級別
  • RAID 0:Data Stripping數據分條技術
  • RAID 1:磁盤鏡像
  • RAID 2:帶海明碼校驗
  • RAID 3:帶奇偶校驗碼的并行傳送
  • RAID 4:帶奇偶校驗碼的獨立磁盤結構
  • RAID 5:分布式奇偶校驗的獨立磁盤結構
  • RAID 10:高可靠性與高效磁盤結構
  • RAID 01:RAID0和RAID1技術結合起來
  • RAID 的兩個關鍵目標是提高數據可靠性和 I/O 性能。

    RAID 中主要有三個關鍵概念和技術:鏡像( Mirroring )、數據條帶( Data Stripping )和數據校驗( Data parity )。
  • 1.鏡像:
    • 鏡像是一種冗余技術,為磁盤提供保護功能,防止磁盤發生故障而造成數據丟失。
  • ?2.數據條帶:
    • 數據條帶技術將數據以塊的方式分布存儲在多個磁盤中,從而可以對數據進行并發處理。這樣寫入和讀取數據就可以在多個磁盤上同時進行,并發產生非常高的聚合 I/O ,有效提高了整體 I/O 性能,而且具有良好的線性擴展性。
  • 3.數據校驗
    • 數據校驗是一種冗余技術,它用校驗數據來提供數據的安全,可以檢測數據錯誤,并在能力允許的前提下進行數據重構。
RAID 主要優勢有如下幾點
  • (1) 大容量
    • 這是 RAID 的一個顯然優勢,它擴大了磁盤的容量,由多個磁盤組成的 RAID 系統具有海量的存儲空間。現在單個磁盤的容量就可以到 1TB 以上,這樣 RAID 的存儲容量就可以達到 PB 級,大多數的存儲需求都可以滿足。一般來說, RAID 可用容量要小于所有成員磁盤的總容量。不同等級的 RAID 算法需要一定的冗余開銷,具體容量開銷與采用算法相關。如果已知 RAID 算法和容量,可以計算出 RAID 的可用容量。通常, RAID 容量利用率在 50% ~ 90% 之間。
  • (2) 高性能
    • RAID 的高性能受益于數據條帶化技術。單個磁盤的 I/O 性能受到接口、帶寬等計算機技術的限制,性能往往很有 限,容易成為系統性能的瓶頸。通過數據條帶化, RAID 將數據 I/O 分散到各個成員磁盤上,從而獲得比單個磁盤成倍增長的聚合 I/O 性能。
  • (3) 可靠性
    • 可用性和可靠性是 RAID 的另一個重要特征。從理論上講,由多個磁盤組成的 RAID 系統在可靠性方面應該比單個磁盤要差。這里有個隱含假定:單個磁盤故障將導致整個 RAID 不可用。 RAID 采用鏡像和數據校驗等數據冗余技術,打破了這個假定。 鏡像是最為原始的冗余技術,把某組磁盤驅動器上的數據完全復制到另一組磁盤驅動器上,保證總有數據副本可用。 比起鏡像 50% 的冗余開銷 ,數據校驗要小很多,它利用校驗冗余信息對數據進行校驗和糾錯。 RAID 冗余技術大幅提升數據可用性和可靠性,保證了若干磁盤出錯時,不 會導致數據的丟失,不影響系統的連續運行。
  • (4) 可管理性
    • 實際上, RAID 是一種虛擬化技術,它對多個物理磁盤驅動器虛擬成一個大容量的邏輯驅動器。對于外部主機系統來說, RAID 是一個單一的、快速可靠的大容量磁盤驅動器。這樣,用戶就可以在這個虛擬驅動器上來組織和存儲應用系統數據。 從用戶應用角度看,可使存儲系統簡單易用,管理也很便利。 由于 RAID 內部完成了大量的存儲管理工作,管理員只需要管理單個虛擬驅動器,可以節省大量的管理工作。 RAID 可以動態增減磁盤驅動器,可自動進行數據校驗和數據重建,這些都可以 大大簡化管理工作。
RAID幾種常見的類型RAID幾種常見的類型

   

RAID-0 (條帶化)

  • 條帶 (strping),也是我們最早出現的RAID模式
  • 需磁盤數量:2塊以上(大小最好相同),是組建磁盤陣列中最簡單的一種形式,只需要2塊以上的硬盤即可.
  • 特點:成本低,可以提高整個磁盤的性能和吞吐量。RAID 0沒有提供冗余或錯誤修復能力,速度快.
  • 任何一個磁盤的損壞將損壞全部數據;磁盤利用率為100%

RAID-1 (鏡像化)

  • mirroring(鏡像卷),需要磁盤兩塊以上
  • 原理:是把一個磁盤的數據鏡像到另一個磁盤上,也就是說數據在寫入一塊磁盤的同時,會在另一塊閑置的磁盤上生成鏡像文件,(同步)
  • RAID 1 mirroring(鏡像卷),至少需要兩塊硬盤,raid大小等于兩個raid分區中最小的容量(最好將分區大小分為一樣),數據有冗余,在存儲時同時寫入兩塊硬盤,實現了數據備份;
  • 磁盤利用率為50%,即2塊100G的磁盤構成RAID1只能提供100G的可用空間。

RAID-5 (分布式奇偶校驗)

  • 需要三塊或以上硬盤,可以提供熱備盤實現故障的恢復;只損壞一塊,沒有問題。但如果同時損壞兩塊磁盤,則數據將都會損壞。
  • 空間利用率: (n-1)/n???
  • ?RAID-6( 雙分布式奇偶校驗磁盤)
  • RAID 6 和 RAID 5 相似但它有兩個分布式奇偶校驗。大多用在大數量的陣列中。我們最少需要4個驅動器,即使有2個驅動器發生故障,我們依然可以更換新的驅動器后重建數據。

RAID-10 (鏡像+條帶)

  •   RAID 10是將鏡像和條帶進行兩級組合的RAID級別,第一級是RAID1鏡像對,第二級為RAID 0。

創建軟raid(基于V10-server-GFB-x86)

1、查看并確定需要配置的磁盤(如圖所示,有3塊1G的盤做測試)

  1. 使用系統自帶mdadm創建raid1并有一個熱備

[root@localhost ~]# mdadm -Cv /dev/md1 -a yes -l1 -n2 /dev/sdb /dev/sdc -x1 /dev/sdd

  1. 查看狀態 cat /proc/mdstat

#相關信息,chunk大小及RAID等級說明,后面的兩個U代表正常,若不是U則代表有誤

  1. 使用工具查看狀態 mdadm -D /dev/md1

[root@localhost 桌面]# mdadm -D /dev/md1

/dev/md1:?? #RAID的設備文件名

?????? ????Version : 1.2

???? Creation Time : Wed Dec? 1 11:53:21 2021? #創建RAID的時間

??????? Raid Level : raid1?? #RAID的等級

??????? Array Size : 1046528 (1022.00 MiB 1071.64 MB)? #整組RAID的可用量

???? Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)? #每顆磁盤的可用容量

????? Raid Devices : 2 #組成RAID的磁盤數量

???? Total Devices : 3 #包括spare的總磁盤數

?????? Persistence : Superblock is persistent

?????? Update Time : Wed Dec? 1 11:53:27 2021

???????????? State : clean ?#目前這個RAID的使用狀態

??? Active Devices : 2? #啟動的設備數量

?? Working Devices : 3 ?#目前使用于此RAID的設備數量

??? Failed Devices : 0? #損壞的設備數量

???? Spare Devices : 1? #預備磁盤的數量

Consistency Policy : resync

????????????? Name : localhost.localdomain:1? (local to host localhost.localdomain)

????????????? UUID : b30b8efc:5567d7d9:08a3b0b4:7ac8eccc

??????????? Events : 17

??? Number?? Major?? Minor?? RaidDevice State

?????? 0?????? 8?????? 16??????? 0????? active sync?? /dev/sdb

?????? 1?????? 8?????? 32??????? 1????? active sync?? /dev/sdc

?????? 2?????? 8?????? 48??????? -????? spare?? /dev/sdd

  1. 格式化并掛載使用

# mkfs.xfs /dev/md1????????? #格式化剛剛創建的RAID 1

# mkdir /test?????? #創建掛載點

# mount /dev/md1 /test?????? #掛載

# df -hT /test????? #確認掛載,使用起來和普通文件系統沒有區別

文件系統?????? 類型? 容量? 已用? 可用 已用% 掛載點

/dev/md1?????? xfs??? 1016M?? 40M?? 977M??? 4% /test

#將掛載信息寫入/etc/fstab中進行開機自動掛載了,設備名可以是/dev/md1,也可以是設備的UUID。

# blkid /dev/md1???? #查詢該RAID 5的UUID

/dev/md1: UUID="34f71cfc-cf64-406e-bee6-fe364e15c2cb" BLOCK_SIZE="512" TYPE="xfs"

vim /etc/fstab?? #打開/etc/fstab,寫入下面內容

UUID=34f71cfc-cf64-406e-bee6-fe364e15c2cb /test xfs???? defaults??? 0 0

#mount -a

常見問題

1、配置時報錯

如提示:報錯,md設備只能用md命名,正確的命名

2、更換壞盤(這里用命令模擬壞盤)

可以看到熱備盤已經自動頂替故障盤

  1. 刪除壞盤
  1. 添加新盤
  1. 刪除raid
  1. 取消掛載
  1. 停止raid設備
  1. 清除磁盤中的raid標識
  1. 常用參數介紹

mdadm命令常見參數解釋:

-A 激活磁盤陣列

-C 建立一個新陣列

-D 打印陣列設備的信息

-G 改變陣列大小或形態

-S 停止陣列 -r 移除設備

-l 設定磁盤陣列的級別

-n 指定陣列磁盤的數量

-x 指定陣列中備用盤的數量

-f 將設備狀態定為故障

-a 添加設備到陣列

-v 顯示詳細信息軟RAID

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

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

相關文章

關于用css設置input輸入框hover的時候的樣式以及當input為disabled的時候,不要讓hover樣式生效

效果如果&#xff1a; 編輯狀態下的時候&#xff1a; 只讀狀態下的時候&#xff1a; 代碼如圖&#xff1a; <input type"text" name"dataForm.exportCode" id"exportCodeItem" required :disabled"editDisabled" />input:not(…

【前端學java】語法練習-工具類的封裝(13)

往期回顧&#xff1a; 【前端學java】JAVA開發的依賴安裝與環境配置 &#xff08;0&#xff09;【前端學 java】java的基礎語法&#xff08;1&#xff09;【前端學java】JAVA中的packge與import&#xff08;2&#xff09;【前端學java】面向對象編程基礎-類的使用 &#xff08…

java.net.UnknownHostException: eureka

java.net.UnknownHostException: eureka 哦。HOST漏了 #linux /etc/hosts #windows C:\Windows\System32\drivers\etc\hosts 127.0.0.1 eureka7000 127.0.0.1 eureka7001 127.0.0.1 eureka7002

maven打包可執行jar含依賴lib

修改pom.xml <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!-- jdk8可用&#xff0c;其他jdk版本可能需改插件版本 --><version>2.3.7.RE…

sql調優

慢查詢 SQL 治理方案 一、SQL 性能下降的原因 在對 SQL 進行分析之前&#xff0c;需要明確可能導致 SQL 執行性能下降的原因進行分析&#xff0c;執行性能下降可以體現在很多方面&#xff1a; 查詢語句寫的爛索引沒加好表數據過大數據庫連接數不夠查詢的數據量過大被其他慢s…

MyBatisPlus代碼生成

基礎依賴 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.…

visual studio 如何建立 C 語言項目

安裝這個 模塊。 新建 空項目 創建完成 寫demo 點擊運行&#xff1a;

【1day】泛微e-office OA系統user_page接口未授權訪問漏洞學習

注:該文章來自作者日常學習筆記,請勿利用文章內的相關技術從事非法測試,如因此產生的一切不良后果與作者無關。 目錄 一、漏洞描述 二、影響版本 三、資產測繪 四、漏洞復現

Web項目從Tomcat遷移到TongWeb

注意事項 1. 使用JNDI方式獲取數據源&#xff1a; ①在TongWeb創建JDBC連接池; ②修改Web項目數據源配置. #spring.datasource.urljdbc:mysql://127.0.0.1:3306/demo #spring.datasource.usernametest #spring.datasource.passwordspring.datasource.jndi-namedemo2. 修…

Spring cloud - Hystrix源碼

其實只是Hystrix初始化部分&#xff0c;我們從源碼的角度分析一下EnableCircuitBreaker以及HystrixCommand注解的初始化過程。 從EnableCircuitBreaker入手 我們是通過在啟動類添加EnableCircuitBreaker注解啟用Hystrix的&#xff0c;所以&#xff0c;源碼解析也要從這個注解…

最新PHP熊貓頭圖片表情斗圖生成源碼

這是一款能生成熊貓頭表情斗圖的自適應系統源碼&#xff0c;無論是在電腦還是手機上都可以正常使用&#xff01;這個源碼集成了搜狗搜索圖片接口&#xff0c;可以輕松地一鍵搜索數百萬張圖片&#xff0c;并且還包含了表情制作等功能模塊。對于一些新站來說&#xff0c;這是一個…

Cloud微服務

當我們談論“云微服務”時&#xff0c;通常是指基于云計算和微服務架構的應用程序開發和部署模型。以下是關于云微服務的一些詳細信息&#xff1a; 微服務架構&#xff1a; 微服務架構是一種軟件設計和開發模式&#xff0c;將應用程序劃分為一組小型、獨立的服務單元。每個服…

c++ LRU(最近最少使用)緩存機制

// LRU(最近最少使用)緩存機制 #ifndef _ZD_LRU_CACHE_H_ #define _ZD_LRU_CACHE_H_#include <unordered_map> #include <list> #include <mutex>class ZDLRUCahce { public:ZDLRUCahce(int capacity): m_capacity(capacity){}~ZDLRUCahce(){}// 1.key不存在…

JavaScript的過濾大師:深度解析Filter用法

JavaScript的過濾大師&#xff1a;深度解析Filter用法 前言基礎篇filter的基本用法語法示例 自定義過濾函數數組對象的過濾復雜條件的篩選常見應用場景性能優化注意性能的建議在大規模數據集下的優化方法 案例分析實際案例&#xff1a;用戶篩選使用 filter 方法解決問題代碼優化…

產品工程師工作的職責十篇(合集)

一、崗位職責的作用意義 1.可以最大限度地實現勞動用工的科學配置; 2.有效地防止因職務重疊而發生的工作扯皮現象; 3.提高內部競爭活力&#xff0c;更好地發現和使用人才; 4.組織考核的依據; 5.提高工作效率和工作質量; 6.規范操作行為; 7.減少違章行為和違章事故的發生…

好視通視頻會議系統(fastmeeting) toDownload.do接口存在任意文件讀取漏洞復現 [附POC]

文章目錄 好視通視頻會議系統(fastmeeting) toDownload.do接口存在任意文件讀取漏洞復現 [附POC]0x01 前言0x02 漏洞描述0x03 影響版本0x04 漏洞環境0x05 漏洞復現1.訪問漏洞環境2.構造POC3.復現 0x06 修復建議 好視通視頻會議系統(fastmeeting) toDownload.do接口存在任意文件…

超詳細!新手必看!STM32-通用定時器簡介與知識點概括

一、通用定時器的功能 在基本定時器功能的基礎上新增功能&#xff1a; 通用定時器有4個獨立通道&#xff0c;且每個通道都可以用于下面功能。 &#xff08;1&#xff09;輸入捕獲&#xff1a;測量輸入信號的周期和占空比等。 &#xff08;2&#xff09;輸出比較&#xff1a;產…

Gradle常用命令與參數依賴管理和版本決議

一、Gradle 常用命令與參數 本課程全程基于 Gradle8.0 環境 1、Gradle 命令 介紹 gradle 命令之前我們先來了解下 gradle 命令怎么在項目中執行。 1.1、gradlew gradlew 即 Gradle Wrapper&#xff0c;在學習小組的第一課時已經介紹過了這里就不多贅述。提一下執行命令&am…

.Net6使用WebSocket與前端進行通信

1. 創建類WebSocketTest&#xff1a; using System.Net.WebSockets; using System.Text;namespace WebSocket.Demo {public class WebSocketTest{//當前請求實例System.Net.WebSockets.WebSocket socket null;public async Task DoWork(HttpContext ctx){socket await ctx.We…