技术文档:创建RAID5磁盘阵列
一、创建RAID5磁盘阵列
1、需求描述
为Linux服务器添加4块SCSI硬盘
使用mdadm软件包,构建RAID5磁盘阵列,提高磁盘存储的性能和可靠性
2、实验步骤:
1、首先在虚拟机关闭的状态下,添加4块40G的硬盘
查看磁盘分区情况核实硬盘是否创建成功
[root@192 ~]# fdisk -l
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0009c553
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 12584959 6291456 83 Linux
/dev/sda2 12584960 54527999 20971520 83 Linux
/dev/sda3 54528000 62916607 4194304 82 Linux swap / Solaris
/dev/sda4 62916608 83886079 10484736 5 Extended
/dev/sda5 62918656 83886079 10483712 83 Linux
磁盘 /dev/sdb:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sdc:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sdd:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sde:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
2、检查是否已安装mdadm软件包
[root@localhost ~]# rpm -q mdadm
mdadm-4.0-5.el7.x86_64
3、创建分区,以同样的方法创建另外三个
分区ID号改为“fd“
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x7f2f5d10 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-83886079,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-83886079,默认为 83886079):
将使用默认值 83886079
分区 1 已设置为 Linux 类型,大小设为 40 GiB
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):fd
已将分区“Linux”的类型更改为“Linux raid autodetect”
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7f2f5d10
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 83886079 41942016 fd Linux raid autodetect
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
4、创建RAID设备
[root@localhost ~]# mdadm -Cv /dev/md5 -l5 -n3 /dev/sd[b-d]1 -x1 /dev/sde1
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 41909248K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
-C:表示新建
-v:显示创建过程的详细信息
/dev/md5:创建RAID5的名称
-a yes:–auto,表示如果有什么设备文件没有存在的话就自动创建,可省略
-l:指定RAID的级别,l5表示创建RAID5
-n:指定使用几块硬盘创建RAID,n3表示使用3块硬盘创建RAID
/dev/sd[b-d]1:指定使用这四块磁盘分区去创建RAID
-x:指定使用极快硬盘做RAID的热备用盘,x1表示保留一块空闲的硬盘作备用
/dev/sde1:指定用作于备用的硬盘
5、查看创建RAID进度
这里可以看到当前完成百分比(37.5%)、完成需等待的时间和传输速度
[UUU]为完成,之后还可以多次输入此命令查看当前完成进度
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdd1[4] sde1[3](S) sdc1[1] sdb1[0]
83818496 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
[=======>.............] recovery = 37.5% (15727256/41909248) finish=2.1min speed=203812K/sec
unused devices: <none>
[root@localhost ~]#
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdd1[4] sde1[3](S) sdc1[1] sdb1[0]
83818496 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
[=============>.......] recovery = 68.2% (28595200/41909248) finish=1.0min speed=207154K/sec
unused devices: <none>
还可以以下这个命令查看创建RAID进度
这里可以看到,三个为active,另外一个是spare备用
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Wed Nov 25 16:24:23 2020
Raid Level : raid5
Array Size : 83818496 (79.94 GiB 85.83 GB)
Used Dev Size : 41909248 (39.97 GiB 42.92 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Wed Nov 25 16:27:54 2020
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : e46bf95b:84550d7a:6fd09dc9:66ba9f9f
Events : 18
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
4 8 49 2 active sync /dev/sdd1
3 8 65 - spare /dev/sde1
6、实现故障恢复
模拟/dev/sdc1 故障
[root@localhost ~]# mdadm /dev/md5 -f /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md5
再查看,会发现sdc处于故障状态
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdd1[4] sde1[3] sdc1[1](F) sdb1[0]
83818496 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [U_U]
[==>..................] recovery = 14.3% (6008320/41909248) finish=2.9min speed=200277K/sec
unused devices: <none>
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Wed Nov 25 16:24:23 2020
Raid Level : raid5
Array Size : 83818496 (79.94 GiB 85.83 GB)
Used Dev Size : 41909248 (39.97 GiB 42.92 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Wed Nov 25 16:34:28 2020
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 3
Failed Devices : 1
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Rebuild Status : 32% complete
Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : e46bf95b:84550d7a:6fd09dc9:66ba9f9f
Events : 25
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
3 8 65 1 spare rebuilding /dev/sde1
4 8 49 2 active sync /dev/sdd1
1 8 33 - faulty /dev/sdc1
查看发现sde1已顶替sdc1
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Wed Nov 25 16:24:23 2020
Raid Level : raid5
Array Size : 83818496 (79.94 GiB 85.83 GB)
Used Dev Size : 41909248 (39.97 GiB 42.92 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Wed Nov 25 16:36:55 2020
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 1
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : e46bf95b:84550d7a:6fd09dc9:66ba9f9f
Events : 37
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
3 8 65 1 active sync /dev/sde1
4 8 49 2 active sync /dev/sdd1
1 8 33 - faulty /dev/sdc1
7、创建并挂载文件
最后在根目录下创建一个md5 的目录,然后将RAID进行格式化
[root@localhost ~]# cd ..
[root@localhost ~]# mkdir /md5
[root@localhost ~]# mkfs.xfs /dev/md5
[root@localhost ~]# cd /md5
[root@localhost ~]# touche md5.txt
[root@localhost md5]# ls
md5.txt
最后查询一下,这里可以看到是80G,而不是120G,前面我们学习过,RAID5的利用率只有3/4
[root@localhost md5]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 xfs 20G 4.3G 16G 22% /
devtmpfs devtmpfs 898M 0 898M 0% /dev
tmpfs tmpfs 912M 0 912M 0% /dev/shm
tmpfs tmpfs 912M 9.1M 903M 1% /run
tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda5 xfs 10G 37M 10G 1% /home
/dev/sda1 xfs 6.0G 174M 5.9G 3% /boot
tmpfs tmpfs 183M 4.0K 183M 1% /run/user/42
tmpfs tmpfs 183M 28K 183M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/md5 xfs 80G 33M 80G 1% /md5