文章目錄
大家好,我是高勝寒,本文是Linux運維-循序漸進學運維-基礎篇的第51篇文章。
本文我們來聊聊磁盤陣列raid磁盤陣列。
一. RAID的概念
以下爲引用:
磁盤陣列(Redundant Arrays of Independent Disks,RAID),有“獨立磁盤構成的具有冗餘能力的陣列”之意。 磁盤陣列是由很多價格較便宜的磁盤,以硬件(RAID卡)或軟件(MDADM)形式組合成一個容量巨大的磁盤組,利用多個磁盤組合在一起,提升整個磁盤系統效能。
利用這項技術,將數據切割成許多區段,分別存放在各個硬盤上。 磁盤陣列還能利用同位檢查(Parity
Check)的觀念,在數組中任意一個硬盤故障時,仍可讀出數據,在數據重構時,將數據經計算後重新置入新硬盤中
總結成一句話: RAID是磁盤榮譽陣列,作用是提升讀寫速率,並且可以有容錯功能。
RAID的基本思想: 把幾塊硬盤通過一定的組合方式把它組合起來,形成一個新的硬盤陣列組,從而讓新的磁盤陣列組能夠達到高性能硬盤的要求。
二. RAID的類型
1. RAID的實現方式:
- 硬RAID: 需要RAID卡,有自己的cpu,處理速度極快
- 軟RAID : 通過操作系統實現,windows,Linux都可以實現
2. 軟raid 5 的實現方式
實驗步驟:
1) 創建4塊硬盤
2) 創建RAID
3)格式化,掛載
4) 查看RAID信息
5) 模擬其中一塊硬盤壞掉的情況
6) 將修好的磁盤重新加入到已經存在的陣列中
1) 新增加一塊硬盤並創建5個分區
對新增加的硬盤分區成5個,來模擬五塊硬盤。
[root@xinsz08-15 ~]# ll /dev/sd* #目前現有的分區
brw-rw---- 1 root disk 8, 0 6月 29 05:45 /dev/sda
brw-rw---- 1 root disk 8, 1 6月 29 05:45 /dev/sda1
brw-rw---- 1 root disk 8, 2 6月 29 05:45 /dev/sda2
brw-rw---- 1 root disk 8, 3 6月 29 05:45 /dev/sda3
brw-rw---- 1 root disk 8, 16 6月 29 05:45 /dev/sdb
[root@xinsz08-15 ~]# fdisk /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4):
Value out of range.
Partition number (1-4): 1
First cylinder (1-3263, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-3263, default 3263): +5G
Command (m for help):
按照上面的分區方法,一共分了四個區,分別都是5G
注意: 邏輯分區無法做磁盤陣列
[root@xinsz08-15 ~]# ll /dev/sdb*
brw-rw---- 1 root disk 8, 16 6月 29 06:02 /dev/sdb
brw-rw---- 1 root disk 8, 17 6月 29 06:02 /dev/sdb1
brw-rw---- 1 root disk 8, 18 6月 29 06:02 /dev/sdb2
brw-rw---- 1 root disk 8, 19 6月 29 06:02 /dev/sdb3
brw-rw---- 1 root disk 8, 20 6月 29 06:02 /dev/sdb4
2. 創建RAID
[root@xinsz08-15 ~]# yum install mdadm
mdadm 的基本參數:
參數 | 作用 |
---|---|
C | 創建RAID |
/dev/m0 | 第一個RAID設備 |
-L5 | RAID5 |
-n | RAID成員的數量 |
-x | 熱備磁盤的數量 |
-a | 添加熱備 |
-G | 熱備轉變爲成員身份 |
接下來我們創建第一個RAID設備,做一個raid 5, 用3塊盤做陣列,在加上一塊做熱備。
[root@xinsz08-15 ~]# mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sdb{1,2,3,4}
mdadm: /dev/sdb4 appears to be part of a raid array:
level=raid0 devices=0 ctime=Thu Jan 1 08:00:00 1970
mdadm: partition table exists on /dev/sdb4 but will be lost or
meaningless after creating array
mdadm: largest drive (/dev/sdb4) exceeds size (5249024K) by more than 1%
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@xinsz08-15 ~]# mdadm -D -s > /etc/mdadm.conf #設置開機生效
查詢現有的陣列
[root@xinsz08-15 ~]# mdadm -D -s
ARRAY /dev/md0 metadata=1.2 spares=1 name=xinsz08-15:0 UUID=85d2c0f0:d2e390b4:6f91164c:c7e3f691
[root@xinsz08-15 ~]# mdadm -D -s /dev/md0 # 直接指定磁盤陣列的名字MD0
ARRAY /dev/md0 metadata=1.2 spares=1 name=xinsz08-15:0 UUID=85d2c0f0:d2e390b4:6f91164c:c7e3f691
3. 格式化掛載
[root@xinsz08-15 ~]# mkfs.ext4 /dev/md0 # 把磁盤陣列格式化爲ext4系統
mke2fs 1.41.12 (17-May-2010)
文件系統標籤=
操作系統:Linux
塊大小=4096 (log=2)
分塊大小=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
657072 inodes, 2624512 blocks
131225 blocks (5.00%) reserved for the super user
第一個數據塊=0
Maximum filesystem blocks=2688548864
81 block groups
32768 blocks per group, 32768 fragments per group
8112 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
正在寫入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@xinsz08-15 ~]#
創建掛載目錄並掛載
[root@xinsz08-15 ~]# mkdir /mnt/raid5
[root@xinsz08-15 ~]# mount /dev/md0 /mnt/raid5
[root@xinsz08-15 ~]# df -h
/dev/md0 9.8G 23M 9.3G 1% /mnt/raid5
[root@xinsz08-15 ~]#
4. 再次查看raid信息
[root@xinsz08-15 ~]# mdadm -D /dev/md0 #查看磁盤信息
/dev/md0: #磁盤名字
Version : 1.2 #磁盤版本
Creation Time : Mon Jun 29 06:03:43 2020 #創建磁盤陣列的時間
Raid Level : raid5 #磁盤陣列爲riad5
Array Size : 10498048 (10.01 GiB 10.75 GB)
Used Dev Size : 5249024 (5.01 GiB 5.38 GB)
Raid Devices : 3 #三塊盤組成的RAID陣列
Total Devices : 4 #總共四快盤,因爲還有個備用盤
Persistence : Superblock is persistent
Update Time : Mon Jun 29 06:09:43 2020
State : clean
Active Devices : 3 #活動磁盤3個
Working Devices : 4 #總共四個
Failed Devices : 0 #壞掉的0個
Spare Devices : 1 #共享備用盤1塊
Layout : left-symmetric
Chunk Size : 512K
Name : xinsz08-15:0 (local to host xinsz08-15)
UUID : 85d2c0f0:d2e390b4:6f91164c:c7e3f691
Events : 18
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 18 1 active sync /dev/sdb2
4 8 19 2 active sync /dev/sdb3
3 8 20 - spare /dev/sdb4
[root@xinsz08-15 ~]#
5. 模擬壞掉一塊盤,並移除
終端一:模擬壞掉一塊磁盤並移除
-f 模擬壞掉,-r 移除
[root@xinsz08-15 ~]# mdadm /dev/md0 -f /dev/sdb2 -r /dev/sdb2
mdadm: set /dev/sdb2 faulty in /dev/md0
mdadm: hot removed /dev/sdb2 from /dev/md0
終端二: 查看變化
[root@xinsz08-15 ~]# watch -n 0.5 ‘mdadm -D /dev/md0’
最後會看到 spare Devices的備用盤,變成了知working盤。 總盤數變成了3個。
6. 將剛纔被刪除的sdb2修復好後,再次添加到陣列中
[root@xinsz08-15 ~]# mdadm /dev/md0 -a /dev/sdb2
mdadm: added /dev/sdb2
查看:
可以看到sdb2變成了熱備盤
[root@xinsz08-15 ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Jun 29 06:03:43 2020
Raid Level : raid5
Array Size : 10498048 (10.01 GiB 10.75 GB)
Used Dev Size : 5249024 (5.01 GiB 5.38 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Jun 29 06:29:52 2020
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Name : xinsz08-15:0 (local to host xinsz08-15)
UUID : 85d2c0f0:d2e390b4:6f91164c:c7e3f691
Events : 39
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
3 8 20 1 active sync /dev/sdb4
4 8 19 2 active sync /dev/sdb3
5 8 18 - spare /dev/sdb2
總結:
實驗出真知,如果你只看文字弄不明白是什麼意思,建議照着操作一遍,循序漸進學運維繫列所有文章都在機器上驗證過,如果你在做的過程中遇到問題,也歡迎留言與我一起探討。
我是高勝寒,一個在教培行業不忘初心的人,歡迎點贊收藏,我們下篇文章見!