1.什麼是RAID
RAID是英文Redundant Array of Independent Disks的縮寫,中文簡稱爲獨立冗餘磁盤陣列。簡單的說,RAID是一種把多塊獨立的硬盤(物理硬盤)按不同的方式組合起來形成一個硬盤組(邏輯硬盤),從而提供比單個硬盤更高的存儲性能和提供數據備份技術。(百度百科)
組成磁盤陣列的不同方式稱爲RAID級別(RAID Levels),現在已擁有了從 RAID 0 到 7 八種基本的RAID 級別。另外,還有一些基本RAID級別的組合形式,如RAID 10(RAID 0與RAID 1的組合),RAID 50(RAID 0與RAID 5的組合)等。不同RAID 級別代表着不同的存儲性能、數據安全性和存儲成本。
2.常用RAID級別
a.RAID0
RAID 0 並不是真正的RAID結構,沒有數據冗餘,沒有數據校驗的磁盤陣列。實現RAID 0至少需要兩塊以上的硬盤,它將兩塊以上的硬盤合併成一塊,數據連續地分割在每塊盤上。 因爲帶寬加倍,所以讀/寫速度加倍,但是隻要任何一塊硬盤損壞就會丟失所有數據。
b.RAID1
RAID1是將一個兩塊硬盤所構成RAID磁盤陣列,其容量僅等於一塊硬盤的容量,因爲另一塊只是當作數據“鏡像”,是最可靠的一種陣列,因爲它總是保持一份完整的數據備份。但是RAID1是硬盤中單位成本最高的。
c.RAID5
RAID5數據以塊爲單位分佈到各個硬盤上。RAID 5不對數據進行備份,而是把數據和與其相對應的奇偶校驗信息存儲到組成RAID5的各個磁盤上,並且奇偶校驗信息和相對應的數據分別存儲於不同的磁盤上。當RAID5的一個磁盤數據損壞後,利用剩下的數據和相應的奇偶校驗信息去恢復被損壞的數據。
3.RAID5部署
mdadm命令用於管理Linux系統中的軟件RAID硬盤陣列
參數 作用
-a 檢測設備名稱
-n 指定設備數量
-l 指定RAID級別
-x 指定備份設備數量
-C 創建
-v 顯示過程
-f 模擬設備損壞
-r 移除設備
-Q 查看摘要信息
-D 查看詳細信息
-S 停止RAID磁盤陣列
首先準備4塊硬盤,三塊做數據盤,一塊做備份盤。
[root@linux Desktop]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 19.5G 0 part
├─rhel-root 253:0 0 17.5G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
sdd 8:48 0 20G 0 disk
sde 8:64 0 20G 0 disk
sr0 11:0 1 3.5G 0 rom /media/cdrom
將/dev/sdb /dev/sdc /dev/sdd /dev/sde四塊新的硬盤部署成RAID5,cat /proc/mdstat查看RAID信息。
[root@linux Desktop]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954624K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@linux Desktop]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sat May 16 19:02:20 2020
Raid Level : raid5
Array Size : 41909248 (39.97 GiB 42.92 GB)
Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Sat May 16 19:03:33 2020
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 4
Failed Devices : 0
Spare Devices : 2
Layout : left-symmetric
Chunk Size : 512K
Rebuild Status : 72% complete
Name : linux.com:0 (local to host linux.com)
UUID : de2097d7:c199ae78:01d25b7c:ac377aef
Events : 12
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
4 8 48 2 spare rebuilding /dev/sdd
3 8 64 - spare /dev/sde
[root@linux Desktop]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sde[3](S) sdd[4] sdc[1] sdb[0]
41909248 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
4.格式化掛載使用
[root@linux Desktop]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
文件系統標籤=
OS type: Linux
塊大小=4096 (log=2)
分塊大小=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
2621440 inodes, 10477312 blocks
523865 blocks (5.00%) reserved for the super user
第一個數據塊=0
Maximum filesystem blocks=2157969408
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624
Allocating group tables: 完成
正在寫入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@linux Desktop]# mkdir dir
[root@linux Desktop]# mount /dev/md0 ./dir/
[root@linux Desktop]# df -h
文件系統 容量 已用 可用 已用% 掛載點
/dev/mapper/rhel-root 18G 3.1G 15G 18% /
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 84K 2.0G 1% /dev/shm
tmpfs 2.0G 9.0M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sr0 3.5G 3.5G 0 100% /media/cdrom
/dev/sda1 497M 119M 379M 24% /boot
/dev/md0 40G 49M 38G 1% /root/Desktop/dir
5.硬盤故障處理
將/dev/sdc從md中移除,模擬損壞的情況,發現/dev/sde自動將/dev/sdc頂替了,並且恢復/dev/sdc中的數據。
[root@linux Desktop]# mdadm /dev/md0 -f /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md0
[root@linux Desktop]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sat May 16 19:02:20 2020
Raid Level : raid5
Array Size : 41909248 (39.97 GiB 42.92 GB)
Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Sat May 16 19:10:54 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 : 12% complete
Name : linux.com:0 (local to host linux.com)
UUID : de2097d7:c199ae78:01d25b7c:ac377aef
Events : 24
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
3 8 64 1 spare rebuilding /dev/sde
4 8 48 2 active sync /dev/sdd
1 8 32 - faulty /dev/sdc
將/dev/sdc從RAID中刪除,添加新的硬盤進RAID,新硬盤的名稱也是/dev/sdc。/dev/sdc將成爲備份盤。
[root@linux Desktop]# umount /dev/md0
[root@linux Desktop]# mdadm /dev/md0 -r /dev/sdc
mdadm: hot removed /dev/sdc from /dev/md0
[root@linux Desktop]# mdadm /dev/md0 -a /dev/sdc
mdadm: added /dev/sdc
[root@linux Desktop]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sat May 16 19:02:20 2020
Raid Level : raid5
Array Size : 41909248 (39.97 GiB 42.92 GB)
Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Sat May 16 19:18:40 2020
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Name : linux.com:0 (local to host linux.com)
UUID : de2097d7:c199ae78:01d25b7c:ac377aef
Events : 43
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
3 8 64 1 active sync /dev/sde
4 8 48 2 active sync /dev/sdd
5 8 32 - spare /dev/sdc