文章目錄
1. 什麼是RAID???
磁盤陣列(Redundant Arrays of Independent Disks,RAID),
有“獨立磁盤構成的具有冗餘能力的陣列”之意。
磁盤陣列是由很多塊獨立的磁盤,組合成一個容量巨大的磁盤組,利用個別磁盤提供數據所產生加成效果提升整個磁盤系統效能。利用這項技術,將數據切割成許多區段,分別存放在各個硬盤上。
磁盤陣列還能利用同位檢查(Parity Check)的觀念,在數組中任意一個硬盤故障時,仍可讀出數據,在數據重構時,將數據經計算後重新置入新硬盤中。
1.1 功能
RAID技術主要有以下三個基本功能:
- 1.通過對磁盤上的數據進行條帶化,實現對數據成塊存取,減少磁盤的機械尋道時間,提高了數據存取速度。
- 2.通過對一個陣列中的幾塊磁盤同時讀取,減少了磁盤的機械尋道時間,提高數據存取速度。
- 3.通過鏡像或者存儲奇偶校驗信息的方式,實現了對數據的冗餘保護。
1.2 優缺點
優點
提高傳輸速率。 RAID通過在多個磁盤上同時存儲和讀取數據來大幅提高存儲系統的數據吞吐量(Throughput)。在RAID中,可以讓很多磁盤驅動器同時傳輸數據,而這些磁盤驅動器在邏輯上又是一個磁盤驅動器,所以使用RAID可以達到單個磁盤驅動器幾倍、幾十倍甚至上百倍的速率。這也是RAID最初想要解決的問題。因爲當時CPU的速度增長很快,而磁盤驅動器的數據傳輸速率無法大幅提高,所以需要有一種方案解決二者之間的矛盾。RAID最後成功了。
通過數據校驗提供容錯功能。普通磁盤驅動器無法提供容錯功能,如果不包括寫在磁盤上的CRC(循環冗餘校驗)碼的話。RAID容錯是建立在每個磁盤驅動器的硬件容錯功能之上的,所以它提供更高的安全性。在很多RAID模式中都有較爲完備的相互校驗/恢復的措施,甚至是直接相互的鏡像備份,從而大大提高了RAID系統的容錯度,提高了系統的穩定冗餘性。
缺點
RAID0沒有冗餘功能,
如果一個磁盤(物理)損壞,則所有的數據都無法使用。
RAID1磁盤的利用率最高只能達到50%(使用兩塊盤的情況下),是所有RAID級別中最低的。
RAID0+1以理解爲是RAID 0和RAID 1的折中方案。RAID 0+1可以爲系統提供數據安全保障,但保障程度要比 Mirror低而磁盤空間利用率要比Mirror高。
1.3 實現方法
軟件RAID
使用基於主機的軟件提供RAID功能,是在操作系統級上實現的,與硬件RAID相比,軟件RAID具有成本低廉和簡單直觀的優點。但是,軟件RAID有以下不足。
- 1.
性能:
軟件RAID會影響系統整體性能。這是因爲軟件RAID 需要CPU 來執行RAID 計算。 - 2.
功能:
軟件RAID支持有限的RAID 級別。 - 3.
兼容性:
軟件RAID與主機操作系統綁定,因此,需要對軟件RAID或操作系統升級進行兼容性驗證,只有當RAID 軟件和操作系統兼容時,才能對其進行升級,這會降低數據處理環境的靈活性。
硬件RAID
包括基於主機的硬件RAID和基於陣列的硬件RAID。基於主機的硬件RAID通常是將專用RAID控制器安裝在主機上,並且所有磁盤驅動器都與主機相連,有的製造商還將RAID控制器集成到主板上。但是基於主機的硬件RAID 控制器在包含大量主機的數據中心環境下卻不是高效的解決方案。而基於陣列的硬件RAID是使用外部硬件RAID控制器,它充當主機與磁盤之間的接口,將存儲卷呈現給主機,主機將這些卷作爲物理驅動器進行管理。硬件RAID控制器具有如下主要特點:
- 1.管理與控制磁盤聚合;
- 2.轉換邏輯磁盤和物理磁盤之間的I/O請求;
- 3.在磁盤出故障時重新生成數據。
1.4 常見的RAID磁盤整列管理
raid0,raid1,raid5,raid10
raid0:最少兩塊盤
,大小一致,數據分割爲若干份,相對應的磁盤進行讀寫操作
raid1:最少兩塊盤
,大小一致,數據拷貝若干份,每塊磁盤都擁有完整的數據
raid10:最少四塊盤
,先兩兩做raid1,再做raid0,成本較高
raid5:最少三塊盤
,加入了奇偶校驗
2. 案例目標
- 掌握RAID的構建,掛載和使用。
- 掌握RAID的基礎運維。
2.1 案例分析
2.2 規劃節點
IP | 主機名 | 節點 |
---|---|---|
192.168.100.10 | localhost | 控制節點 |
2.3 基礎準備
使用VMWare Workstation軟件安裝CentOS 7.2操作系統,鏡像使用提供的CentOS-7-x86_64-DVD-1511.iso,並添加1塊50GB硬盤。YUM源使用提供的mdadm_yum文件夾。
3. 案例實施
3.1 創建raid 0
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 37.5G 0 part /
sdb 8:16 0 50G 0 disk
sr0 11:0 1 4G 0 rom /mnt/cd
配置本地YUM安裝源,將提供的mdadm_yum文件夾上傳至/opt目錄
[root@localhost ~]# mv /etc/yum.repos.d/* /media/
[root@localhost ~]# vi /etc/yum.repos.d/yum.repo
[mdadm]
name=mdadm
baseurl=file:///opt/mdadm_yum/
gpgcheck=0
enabled=1
安裝工具mdadm,使用已有YUM源進行安裝,命令如下:
[root@localhost ~]# yum install -y mdadm
創建一個RAID 0設備:這裏使用/dev/sdb做實驗,將50G的硬盤使用fdisk命令劃分爲六塊大小爲1G的分區
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 37.5G 0 part /
sdb 8:16 0 50G 0 disk
├─sdb1 8:17 0 1G 0 part
├─sdb2 8:18 0 1G 0 part
├─sdb3 8:19 0 1G 0 part
├─sdb4 8:20 0 1K 0 part
├─sdb5 8:21 0 1G 0 part
├─sdb6 8:22 0 1G 0 part
└─sdb7 8:23 0 1G 0 part
sr0 11:0 1 4G 0 rom /mnt/cd
將/dev/sdb1和/dev/sdb2建立RAID等級爲RAID 0的md0(設備名)。
[root@localhost ~]# mdadm -Cv /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
命令解析:
- C v:創建設備,並顯示信息
- -l 0:RAID的等級爲RAID 0
- -n 2:創建RAID的設備爲2塊
查看系統上的RAID,命令及返回結果如下
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdb2[1] sdb1[0]
2095104 blocks super 1.2 512k chunks
unused devices: <none>
查看RAID詳細信息,命令及返回結果如下
[root@localhost ~]# mdadm -Ds
ARRAY /dev/md0 metadata=1.2 name=localhost.localdomain:0 UUID=c3408271:4e0f2eeb:63ce9fee:3eab8836
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun Jun 7 20:44:43 2020
Raid Level : raid0
Array Size : 2095104 (2046.34 MiB 2145.39 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Sun Jun 7 20:44:43 2020
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : c3408271:4e0f2eeb:63ce9fee:3eab8836
Events : 0
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 18 1 active sync /dev/sdb2
對創建的RAID進行文件系統創建並掛載,命令如下
[root@localhost ~]# mkfs.xfs /dev/md0
meta-data=/dev/md0 isize=256 agcount=8, agsize=65408 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=523264, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# mkdir /raid0
[root@localhost ~]# mount /dev/md0 /raid0/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 38G 867M 37G 3% /
devtmpfs 984M 0 984M 0% /dev
tmpfs 993M 0 993M 0% /dev/shm
tmpfs 993M 17M 977M 2% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sr0 4.1G 4.1G 0 100% /mnt/cd
/dev/sda1 497M 103M 395M 21% /boot
tmpfs 199M 0 199M 0% /run/user/0
/dev/md0 2.0G 33M 2.0G 2% /raid0
設置成開機自動掛載,命令如下
[root@localhost ~]# blkid /dev/md0
/dev/md0: UUID="6e4f56d3-5b0d-4bd3-b259-25ee205b325e" TYPE="xfs"
[root@localhost ~]# echo '6e4f56d3-5b0d-4bd3-b259-25ee205b325e /raid0 xfs defaults 0 0' >>/etc/fstab
刪除RAID操作,命令如下
[root@localhost ~]# umount /raid0/
[root@localhost ~]# mdadm -S /dev/md0
[root@localhost ~]# rm -rf /raid0/
[root@localhost ~]# mdadm --zero-superblock /dev/sdb1
[root@localhost ~]# mdadm --zero-superblock /dev/sdb2
[root@localhost ~]# vi /etc/fstab
UUID=6e4f56d3-5b0d-4bd3-b259-25ee205b325e /raid0 xfs defaults 0 0 //刪除此行
3.2 運維操作
利用磁盤分區新建4個磁盤分區,每個大小爲1GB。用3個1GB的分區來模擬raid 5,加一個熱備盤
[root@localhost ~]# mdadm -Cv /dev/md5 -l 5 -n 3 /dev/sdb5 /dev/sdb6 /dev/sdb7 --spare-device=1 /dev/sdb3
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 1047552K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
查看RAID的詳細信息,命令如下
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Mon Jun 8 06:59:04 2020
Raid Level : raid5
Array Size : 2095104 (2046.34 MiB 2145.39 MB)
Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Jun 8 06:59:10 2020
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : 0a4c48ff:99999466:e7894a1d:0caa7f8c
Events : 18
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
4 8 23 2 active sync /dev/sdb7
3 8 19 - spare /dev/sdb3
- 模擬硬盤故障
[root@localhost ~]# mdadm -f /dev/md5 /dev/sdb5
mdadm: set /dev/sdb5 faulty in /dev/md5
查看RAID的詳細信息,命令如下
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Mon Jun 8 06:59:04 2020
Raid Level : raid5
Array Size : 2095104 (2046.34 MiB 2145.39 MB)
Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Jun 8 07:08:31 2020
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 3
Failed Devices : 1
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Rebuild Status : 38% complete
Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : 0a4c48ff:99999466:e7894a1d:0caa7f8c
Events : 26
Number Major Minor RaidDevice State
3 8 19 0 spare rebuilding /dev/sdb3
1 8 22 1 active sync /dev/sdb6
4 8 23 2 active sync /dev/sdb7
0 8 21 - faulty /dev/sdb5
從以上結果可以發現原來的熱備盤/dev/sdb3正在參與RAID 5的重建,而原來的/dev/sdb5變成了壞盤。
熱移除故障盤,命令如下:
[root@localhost ~]# mdadm -r /dev/md5 /dev/sdb5
mdadm: hot removed /dev/sdb5 from /dev/md5
查看RAID的詳細信息,命令如下
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Mon Jun 8 06:59:04 2020
Raid Level : raid5
Array Size : 2095104 (2046.34 MiB 2145.39 MB)
Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Mon Jun 8 07:22:10 2020
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : 0a4c48ff:99999466:e7894a1d:0caa7f8c
Events : 38
Number Major Minor RaidDevice State
3 8 19 0 active sync /dev/sdb3
1 8 22 1 active sync /dev/sdb6
4 8 23 2 active sync /dev/sdb7
把新的備份盤再添加到md5的陣列當中
[root@localhost ~]# mdadm -a /dev/md5 /dev/sdb5
mdadm: added /dev/sdb5
查看RAID的詳細信息,命令如下
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Mon Jun 8 06:59:04 2020
Raid Level : raid5
Array Size : 2095104 (2046.34 MiB 2145.39 MB)
Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Jun 8 07:30:52 2020
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : 0a4c48ff:99999466:e7894a1d:0caa7f8c
Events : 39
Number Major Minor RaidDevice State
3 8 19 0 active sync /dev/sdb3
1 8 22 1 active sync /dev/sdb6
4 8 23 2 active sync /dev/sdb7
5 8 21 - spare /dev/sdb5
//這是會看見新的備份盤已經添加到md5的陣列當中
格式化RAID並進行掛載,命令如下
[root@localhost ~]# mkfs.xfs /dev/md5
meta-data=/dev/md5 isize=256 agcount=8, agsize=65408 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=523264, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# mkdir /raid5
[root@localhost ~]# mount /dev/md5 /raid5/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 38G 867M 37G 3% /
devtmpfs 984M 0 984M 0% /dev
tmpfs 993M 0 993M 0% /dev/shm
tmpfs 993M 17M 977M 2% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sr0 4.1G 4.1G 0 100% /mnt/cd
/dev/sda1 497M 103M 395M 21% /boot
tmpfs 199M 0 199M 0% /run/user/0
/dev/md0 2.0G 33M 2.0G 2% /raid0
/dev/md5 2.0G 33M 2.0G 2% /raid5
至此,服務器製作raid磁盤陣列並管理配置完畢