目录
RAID磁盘阵列介绍
是Redundant Array of Independent Disks的缩写,中文简称为独立冗余磁盘阵列
把多块独立的物理硬盘按不通的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据本分技术
组成磁盘阵列的不通方式称为RAID级别(RAID Levels)
常用的RAID级别:RAID0,RAID1,RAID5,RAID6,RAID1+0等
RAID 0磁盘阵列介绍
RAID 0(2块以上磁盘)
RAID 0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余
RAID 0只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据
RAID 0不能应用于数据安全性要求高的场合
RAID 1磁盘阵列介绍
RAID 1(两块磁盘)
通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据
当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1 可以提高读取性能
RAID 1 是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可比性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据
RAID 5 磁盘阵列介绍
RAID 5
N(N>=3)块盘组成阵列,一份数据产生N-1个条带,同时还有一份校验数据,共N分数据在N块盘上循环均衡存储
N块盘同时读写,读性能很高,但由于有校验机制的问题,写性能相对不高
(N-1)/N磁盘利用率
可靠性高,允许坏一块盘,不影响所有数据
RAID 6 磁盘阵列介绍
RAID 6
N(N>=4)块盘组成阵列,(N-2)/N磁盘利用率
与RAID 5相比,RAID 6增加了第二个独立的奇偶校验信息块
两个独立的奇偶系统使用不同的算法,即使两块磁盘同时失效也不会影响数据的使用
相对于RAID 5 有更大的“写损失”,因此写性能较差
RAID 1+0 磁盘阵列介绍
RAID 1+0
RAID 1+0是RAID 1和RAID 0的结合,先做镜像,再做条带
兼顾了RAID 1的容错能力与RAID 0的条带化读写数据的优点,性能好,可靠性高。属于混合型RAID
N(偶数,N>=4)块盘两两镜像后,再组合成一个RAID 0
N/2磁盘利用率;N/2块盘同时写入,N块盘同时读取
性能高,可靠性高
(所有计费有关的业务用RAID 1+0)
RAID 10不适合计费有关的业务是因为一块硬盘挂了,只能读,不能写,对持续性业务不适合
RAID卷的比较
级别 | 磁盘数量 | 容错性 | 扩展性 | 可用磁盘空间 |
---|---|---|---|---|
带卷区RAID0 | 2块以上 | 无 | 无 | 多块磁盘容量的总和 |
镜像卷RAID1 | 2块 | 有 | 无 | 2块磁盘的容量总和的1/2 |
RAID5 | 3块以上 | 有 | 无 | 多块磁盘容量总和的n-1/n |
RAID6 | 4块以上 | 有 | 无 | 多块磁盘总和的n-2/n |
RAID1+0 | 偶数,4块以上 | 有 | 无 | 多块磁盘容量总和的n/2 |
阵列卡介绍
阵列卡全称为磁盘阵列卡,是用来实现RAID 功能的板卡
RAID卡一般分为硬RAID卡和软RAID卡两种
通过硬件来实现RAID功能的就是硬RAID,通常是哟I/O处理器,硬盘控制器,硬盘连接器和缓存等一些列组件构成
通过软件并使用CPU的RAID卡我们成为软RAID,因为软RAID占用CUP资源比较高,所以绝大部分的服务器设备都使用的硬RAID
不同的RAID卡支持的RAID功能不同,例如支持RAID 0,RAID 1,RAID 5,RAID1+0等
RAID卡的第一个重要功能就是他可以达到单个磁盘驱动器的几倍,几十倍甚至上百倍的速率,这也是RAID最初想要解决的问题
RAID卡的第二个重要功能就是提供容错能力,现在服务器基本上集成了RAID卡
RAID卡的接口类型
IDE接口、SCSI接口、SATA接口和SAS接口------前两个不常用
阵列卡的缓存
缓存(Cache)是RAID卡与外部总线交换数据的场所,RAID卡先将数据传送到缓存,再由缓存和外边数据总线交换数据
缓存的大小与速度是直接关系到RAID卡的实际传输速度的重要因素
不同的RAID卡出厂时配备的内存容量不同,一般为几兆到数百兆容量不等
构建软RAID磁盘阵列实验
我们需要用到mdadm工具创建RAID磁盘
因为我们做的是RAID,所以文件系统格式需要改为fd
mdadm工具指令基本格式
[root@localhost ~]# mdadm -C -v 目录 -l级别 -n磁盘数量 设备
常用选项
l 指定级别
C 创建
v 指定目录
n 磁盘数量
查看RAID级别的两个方法
第一个方法
cat /proc/mdstat '//查看状态'
第二个方法
mdadm -D 目录
RAID 0 实验
需要两块磁盘
磁盘分区格式需要改为fd(raid格式)
1.创建好两个磁盘分区
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 fd Linux raid autodetect
设备 Boot Start End Blocks Id System
/dev/sdc1
2.创建RAID0
[root@localhost ~]# mdadm -C -v /dev/md0 -l0 -n2 /dev/sd[b-c]1 '//在/dev/md0目录下创建RAID 0'
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# cat /proc/mdstat '//查看raid 第一种方法'
Personalities : [raid0]
md0 : active raid0 sdc1[1] sdb1[0]
41908224 blocks super 1.2 512k chunks
unused devices: <none>
[root@localhost ~]# mdadm -D /dev/md0 '//查看raid 第二种方法'
/dev/md0:
Version : 1.2
Creation Time : Mon Nov 4 23:13:21 2019
Raid Level : raid0
Array Size : 41908224 (39.97 GiB 42.91 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Mon Nov 4 23:13:21 2019
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Consistency Policy : none
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : e6803bdd:e42b94df:8a0475cd:a1ef6f04
Events : 0
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
3.格式化分区
[root@localhost ~]# mkfs.xfs /dev/md0
meta-data=/dev/md0 isize=512 agcount=16, agsize=654720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=10475520, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=5120, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
4.格式化后并挂载
[root@localhost ~]# mkdir /raid0 '//创建raid0挂载目录'
[root@localhost ~]# mount /dev/md0 /raid0/ '//将/dev/md0 挂载到/raid0'
[root@localhost ~]# df -hT '//查看挂载是否成功'
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 xfs 20G 3.1G 17G 16% /
devtmpfs devtmpfs 898M 0 898M 0% /dev
tmpfs tmpfs 912M 0 912M 0% /dev/shm
tmpfs tmpfs 912M 9.0M 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 12K 183M 1% /run/user/42
tmpfs tmpfs 183M 0 183M 0% /run/user/0
/dev/md0 xfs 40G 33M 40G 1% /raid0
RAID 1实验
-x:备用磁盘
1.创建raid1
[root@localhost ~]# mdadm -C -v /dev/md1 -l1 -n2 /dev/sd[d-e]1 -x1 /dev/sdf1 '//创建将sdd1,sde1创建raid1,并将sdf1作为备用磁盘'
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
mdadm: size set to 20954112K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
2.查看状态信息
[root@localhost ~]# cat /proc/mdstat '//查看状态信息'
Personalities : [raid0] [raid1]
md1 : active raid1 sdf1[2](S) sde1[1] sdd1[0]
20954112 blocks super 1.2 [2/2] [UU]
[===========>.........] resync = 59.1% (12402304/20954112) finish=0.6min speed=206292K/sec
md0 : active raid0 sdc1[1] sdb1[0]
41908224 blocks super 1.2 512k chunks
unused devices: <none>
[root@localhost ~]# mdadm -D /dev/md1 '//查看详细信息'
/dev/md1:
Version : 1.2
Creation Time : Mon Nov 4 23:41:52 2019
Raid Level : raid1
Array Size : 20954112 (19.98 GiB 21.46 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Mon Nov 4 23:43:18 2019
State : clean, resyncing
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Consistency Policy : resync
Resync Status : 82% complete
Name : localhost.localdomain:1 (local to host localhost.localdomain)
UUID : cbd878ef:8ad679a4:2ee73455:99f429de
Events : 13
Number Major Minor RaidDevice State
0 8 49 0 active sync /dev/sdd1
1 8 65 1 active sync /dev/sde1
2 8 81 - spare /dev/sdf1
3.格式化并挂载
[root@localhost ~]# mkfs.xfs /dev/md1 '//格式化分区'
meta-data=/dev/md1 isize=512 agcount=4, agsize=1309632 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5238528, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# mkdir /raid1 '//创建raid1挂载目录'
[root@localhost ~]# mount /dev/md1 /raid1 '//挂载'
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 xfs 20G 3.1G 17G 16% /
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 12K 183M 1% /run/user/42
tmpfs tmpfs 183M 0 183M 0% /run/user/0
/dev/md0 xfs 40G 33M 40G 1% /raid0
/dev/md1 xfs 20G 33M 20G 1% /raid1
RAID 5/RAID 6实验
1.创建raid5
[root@localhost ~]# mdadm -C -v /dev/md5 -l5 -n3 /dev/sd[g-j]1 -x1 /dev/sdk1 '//用sdg1,sdh1,sdj1创建raid5,将sdk1作为备用磁盘'
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
2.查看磁盘信息
[root@localhost ~]# cat /proc/mdstat '//查看状态信息'
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md5 : active raid5 sdj1[4] sdk1[3](S) sdh1[1] sdg1[0]
41908224 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
md1 : active raid1 sdf1[2](S) sde1[1] sdd1[0]
20954112 blocks super 1.2 [2/2] [UU]
md0 : active raid0 sdc1[1] sdb1[0]
41908224 blocks super 1.2 512k chunks
unused devices: <none>
[root@localhost ~]# mdadm -D /dev/md5 '//查看详细信息'
/dev/md5:
Version : 1.2
Creation Time : Mon Nov 4 23:53:59 2019
Raid Level : raid5
Array Size : 41908224 (39.97 GiB 42.91 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Nov 4 23:55:43 2019
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 : e473255b:68d70fc5:3e26dce3:9a98f13e
Events : 18
Number Major Minor RaidDevice State
0 8 97 0 active sync /dev/sdg1
1 8 113 1 active sync /dev/sdh1
4 8 145 2 active sync /dev/sdj1
3 8 161 - spare /dev/sdk1
3.删除一块磁盘,看备用磁盘是否自动顶替掉坏掉的磁盘
[root@localhost ~]# mdadm -f /dev/md5 /dev/sdg1 '//删除sdg1'
mdadm: set /dev/sdg1 faulty in /dev/md5 '//提示sdg1已经损坏'
[root@localhost ~]# mdadm -D /dev/md5 '//查看详细信息'
/dev/md5:
Version : 1.2
Creation Time : Mon Nov 4 23:53:59 2019
Raid Level : raid5
Array Size : 41908224 (39.97 GiB 42.91 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Tue Nov 5 00:00:54 2019
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 : 22% complete
Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : e473255b:68d70fc5:3e26dce3:9a98f13e
Events : 23
Number Major Minor RaidDevice State
3 8 161 0 spare rebuilding /dev/sdk1 '//发现备用sdk1已经顶替上来'
1 8 113 1 active sync /dev/sdh1
4 8 145 2 active sync /dev/sdj1
0 8 97 - faulty /dev/sdg1
4.格式化并挂载
[root@localhost ~]# mkdir /raid5 '//创建挂载点目录'
[root@localhost ~]# mkfs.xfs /dev/md5 '//格式化'
meta-data=/dev/md5 isize=512 agcount=16, agsize=654720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=10475520, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=5120, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# mount /dev/md5 /raid5 '//挂载'
RAID 1+0 实验
RAID 1+0是用两个RAID1来创建的
1.连续创建两个raid1
[root@localhost ~]# mdadm -C -v /dev/md0 -l1 -n2 /dev/sd[b-c]1 '//创建第一个raid1'
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
mdadm: size set to 20954112K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# mdadm -C -v /dev/md1 -l1 -n2 /dev/sd[d-e]1 '//创建第二个raid1'
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
mdadm: size set to 20954112K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
2.查看详细信息
[root@localhost ~]# mdadm -D /dev/md0
[root@localhost ~]# mdadm -D /dev/md1
3.创建raid1+0
[root@localhost ~]# mdadm -C -v /dev/md10 -l0 -n2 /dev/md0 /dev/md1
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md10 started.
4.查看详细信息
[root@localhost ~]# mdadm -D /dev/md10
/dev/md10:
Version : 1.2
Creation Time : Tue Nov 5 00:19:07 2019
Raid Level : raid0
Array Size : 41875456 (39.94 GiB 42.88 GB) '//创建成功'
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Tue Nov 5 00:19:07 2019
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Consistency Policy : none
Name : localhost.localdomain:10 (local to host localhost.localdomain)
UUID : 6c3209a3:71bece7a:9b3129be:05a436e0
Events : 0
Number Major Minor RaidDevice State
0 9 0 0 active sync /dev/md0
1 9 1 1 active sync /dev/md1