文章目錄
-
- RAID概念
-
- RAID分類
-
- 硬 RAID
- 軟 RAID
- RAID主要優勢
- RAID 方案組
-
- RAID 0
- RAID 1
- RAID 5
- RAID 10
- 實作 RAID 1
-
- 建立分區、RAID 1
- 格式化、挂載
- 模拟損壞
- 添加熱備盤
- 總結
RAID概念
RAID ( Redundant Array of Independent Disks —> 獨立磁盤備援陣列 ),RAID 技術是将許多塊硬碟裝置組合成一個容量更大、更安全的硬碟組,可以将資料切割成多個區段後分别存放在各個不同實體硬碟裝置上,然後利用分散讀寫需求來提升硬碟組整體的性能,同時将重要資料同步儲存多份到不同的實體硬碟裝置上,可以有非常好的資料備份效果。
RAID分類
硬 RAID
使用硬體陣列卡,硬 RAID 擁有自己的 RAID 控制處理與 I/O 處理晶片,甚至還有陣列緩沖,對 CPU 的占用率和整體性能是三類實作中最優的,但實作成本也最高的。硬 RAID 通常都支援熱交換技術,在系統運作下更換故障磁盤。
軟 RAID
通過作業系統軟體來實作,軟 RAID 沒有專用的控制晶片和 I/O 晶片,完全由作業系統和 CPU 來實作所的 RAID 的功能。現代作業系統基本上都提供軟 RAID 支援,通過在磁盤裝置驅動程式上添加一個軟體層,提供一個實體驅動器與邏輯驅動器之間的抽象層。
RAID主要優勢
高性能:RAID 将資料 I/O 分散到各個成員磁盤上,進而獲得比單個磁盤成倍增長的聚合 I/O 性能
大容量:RAID 擴大了磁盤的容量,由多個磁盤組成的 RAID 系統具有海量的存儲空間
可靠性:RAID 備援技術大幅提升資料可用性和可靠性,保證了若幹磁盤出錯時,不會導緻資料的丢失
可管理性:RAID 是一種虛拟化技術,它對多個實體磁盤驅動器虛拟成一個大容量的邏輯驅動器
RAID 方案組
RAID 等級 | RAID0 | RAID1 | RAID5 | RAID10 |
---|---|---|---|---|
别名 | 條帶 | 鏡像 | 分布奇偶校驗條帶 | 鏡像加條帶 |
容錯性 | 無 | 有 | 有 | 有 |
備援類型 | 無 | 有 | 有 | 有 |
熱備份選擇 | 無 | 有 | 有 | 有 |
讀性能 | 高 | 低 | 高 | 高 |
随機寫性能 | 高 | 低 | 一般 | 一般 |
連續寫性能 | 高 | 低 | 低 | 一般 |
需要磁盤數 | n≥1 | 2n (n≥1) | n≥3 | 2n(n≥2)≥4 |
可用容量 | 全部 | 50% | (n-1)/n | 50% |
RAID 0
将多塊實體硬碟裝置通過硬體或軟體的方式串聯在一起( 需磁盤數量2塊以上,最好大小相同 ),成為一個大的卷組,稱為條帶卷。它将資料依次分别寫入到各個實體硬碟中,這樣最理想的狀态會使得讀寫性能提升數倍,但是任意一塊故障都會使整個系統故障。
如圖,資料被寫入到不同的硬碟裝置中
特點:成本低,可以提高整個磁盤的性能和吞吐量
應用場景: 迅速讀寫,安全性要求不高, 比如圖形工作站
RAID 1
把資料再制作出多份鏡像,當有某一塊硬碟損壞後,一般可以立即通過熱交換方式來恢複資料的正常使用。是以追求資料安全性的時候就不應該使用RAID0,而是使用RAID1。
如圖,同一份資料儲存了多份
RAID 5
需要三塊或以上硬碟,可以提供熱備盤實作故障的恢複;隻損壞一塊,沒有問題。但如果同時損壞兩塊磁盤,則資料将都會損壞。RAID5硬碟組技術雖然理論上是兼顧三者的,但實際上是對各個方面的互相妥協和平衡。
如圖:同時存儲資料和校驗資料
應用場景: 随機資料寫入,安全性要求比較高,伺服器,資料庫存儲
RAID 10
RAID5 在成本問題和讀寫速度以及安全性能上進行了平衡,但是相比價格,資料的價值才是更重要的,是以更多的是使用RAID10,就是對 RAID1 + RAID0 的一個 “組合體”。
如圖,先由 RAID1儲存多份,再由 RAID 0 寫入到不同磁盤
應用場景: 有大量資料需要存儲,同時又對資料安全性要求比較高的領域,銀行,商務
實作 RAID 1
RAID-1 :mirroring(鏡像卷)需要磁盤兩塊以上
原理:是把一個磁盤的資料鏡像到另一個磁盤上,也就是說資料在寫入一塊磁盤的同時,會在另一塊閑置的磁盤上生成鏡像檔案( 同步 )
特性:當一塊硬碟失效時,系統會忽略該硬碟,轉而使用剩餘的鏡像盤讀寫資料,具備很好的磁盤備援能力。
建立分區、RAID 1
詳細建立請看上一篇部落格:Fdisk 建立分區、進行格式化、最後挂載目錄,建立四個5G分主分區
[[email protected]-21 ~]# fdisk -l
……
Device Boot Start End Blocks Id System
/dev/sdd1 2048 10487807 5242880 83 Linux
/dev/sdd2 10487808 20973567 5242880 83 Linux
/dev/sdd3 20973568 31459327 5242880 83 Linux
/dev/sdd4 31459328 41943039 5241856 5 Extended
……
[[email protected]-21 ~]# partprobe /dev/sdd
[[email protected]-21 ~]# ll /dev/sdd*
brw-rw----. 1 root disk 8, 48 Feb 28 23:57 /dev/sdd
brw-rw----. 1 root disk 8, 49 Feb 28 23:57 /dev/sdd1
brw-rw----. 1 root disk 8, 50 Feb 28 23:57 /dev/sdd2
brw-rw----. 1 root disk 8, 51 Feb 28 23:57 /dev/sdd3
brw-rw----. 1 root disk 8, 52 Feb 28 23:57 /dev/sdd4
安裝管理軟體 RAID 的軟體:mdadm
[[email protected]-21 ~]# yum -y install mdadm
Loaded plugins: fastestmirror
Determining fastest mirrors
epel/x86_64/metalink | 5.4 kB 00:00
* base: mirrors.aliyun.com
* epel: mirrors.njupt.edu.cn
……
Installed:
mdadm.x86_64 0:4.1-1.el7
Complete!
建立 RAID 1
[[email protected]-21 ~]# mdadm -C -v /dev/md2 -l 1 -n 2 -x 1 /dev/sdd1 /dev/sdd[2,3]
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
mdadm: size set to 5237760K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.
将RAID1資訊儲存到配置檔案中
# 檢視 RAID1 資訊
[[email protected]-21 ~]# mdadm -Dsv
ARRAY /dev/md2 level=raid1 num-devices=2 metadata=1.2 spares=1 name=fp-21:2 UUID=54add2b3:71f8fe8f:c6c2fb47:7c5d22d9
devices=/dev/sdd1,/dev/sdd2,/dev/sdd3
# 将 RAID1 資訊添加到配置檔案中
[[email protected]-21 ~]# mdadm -Dsv > /etc/mdadm.conf
檢查磁盤陣列
[[email protected]-21 ~]# mdadm -D /dev/md2
/dev/md2:
Version : 1.2
Creation Time : Fri Feb 28 23:58:02 2020 # 磁盤陣列建立的時間
Raid Level : raid1
Array Size : 5237760 (5.00 GiB 5.36 GB)
Used Dev Size : 5237760 (5.00 GiB 5.36 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Fri Feb 28 23:58:15 2020
State : clean
Active Devices : 2 # 目前的活動裝置數量
Working Devices : 3 # 工作裝置
Failed Devices : 0 # 失效的裝置
Spare Devices : 1 # 熱備份的數量
Consistency Policy : resync
Name : fp-21:2 (local to host fp-21)
UUID : 54add2b3:71f8fe8f:c6c2fb47:7c5d22d9
Events : 17
Number Major Minor RaidDevice State
0 8 49 0 active sync /dev/sdd1
1 8 50 1 active sync /dev/sdd2
2 8 51 - spare /dev/sdd3
格式化、挂載
在 raid 裝置上建立檔案系統并挂載
# 格式化
[[email protected]-21 ~]# mkfs.xfs /dev/md2
meta-data=/dev/md2 isize=512 agcount=4, agsize=327360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1309440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# 建立挂載目錄
[[email protected]-21 ~]# mkdir /opt/raid1
# 挂載
[[email protected]-21 ~]# mount /dev/md2 /opt/raid1/
# 檢視挂載是否成功
[[email protected]-21 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.9G 16G 12% /
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 12M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda1 1014M 133M 882M 14% /boot
tmpfs 394M 0 394M 0% /run/user/0
/dev/md2 5.0G 33M 5.0G 1% /opt/raid1
建立測試檔案
[[email protected]-21 ~]# touch /opt/test.txt
[[email protected]-21 ~]# echo "如果一塊磁盤損壞,我是否還存在?" > !$
echo "如果一塊磁盤損壞,我是否還存在?" > /opt/test.txt
模拟損壞
# 損壞磁盤
[[email protected]-21 ~]# mdadm /dev/md2 -f /dev/sdd1
mdadm: set /dev/sdd1 faulty in /dev/md2
# 檢視陣列詳細資訊
[[email protected]-21 ~]# mdadm -D /dev/md2
/dev/md2:
Version : 1.2
Creation Time : Fri Feb 28 23:58:02 2020
Raid Level : raid1
Array Size : 5237760 (5.00 GiB 5.36 GB)
Used Dev Size : 5237760 (5.00 GiB 5.36 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Sat Feb 29 00:10:08 2020
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 1
Spare Devices : 0
Consistency Policy : resync
Name : fp-21:2 (local to host fp-21)
UUID : 54add2b3:71f8fe8f:c6c2fb47:7c5d22d9
Events : 36
Number Major Minor RaidDevice State
2 8 51 0 active sync /dev/sdd3
1 8 50 1 active sync /dev/sdd2
0 8 49 - faulty /dev/sdd1
檢視測試檔案
[[email protected]-21 ~]# cat /opt/test.txt
如果一塊磁盤損壞,我是否還存在?
移除損壞裝置
[[email protected]-21 ~]# mdadm -r /dev/md2 /dev/sdd1
mdadm: hot removed /dev/sdd1 from /dev/md2
添加熱備盤
[[email protected]-21 ~]# mdadm -a /dev/md2 /dev/sdd4
mdadm: /dev/sdd4 not large enough to join array
總結
隻有注入思想的部落格才是好的部落格