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