RAID ( Redundant Array of Independent Disks —> 独立磁盘冗余阵列 ),RAID 技术是将许多块硬盘设备组合成一个容量更大、更安全的硬盘组,可以将数据切割成多个区段后分别存放在各个不同物理硬盘设备上,然后利用分散读写需求来提升硬盘组整体的性能,同时将重要数据同步保存多份到不同的物理硬盘设备上,可以有非常好的数据备份效果。
使用硬件阵列卡,硬 RAID 拥有自己的 RAID 控制处理与 I/O 处理芯片,甚至还有阵列缓冲,对 CPU 的占用率和整体性能是三类实现中最优的,但实现成本也最高的。硬 RAID 通常都支持热交换技术,在系统运行下更换故障磁盘。
通过操作系统软件来实现,软 RAID 没有专用的控制芯片和 I/O 芯片,完全由操作系统和 CPU 来实现所的 RAID 的功能。现代操作系统基本上都提供软 RAID 支持,通过在磁盘设备驱动程序上添加一个软件层,提供一个物理驱动器与逻辑驱动器之间的抽象层。
高性能:RAID 将数据 I/O 分散到各个成员磁盘上,从而获得比单个磁盘成倍增长的聚合 I/O 性能
大容量:RAID 扩大了磁盘的容量,由多个磁盘组成的 RAID 系统具有海量的存储空间
可靠性:RAID 冗余技术大幅提升数据可用性和可靠性,保证了若干磁盘出错时,不会导致数据的丢失
可管理性:RAID 是一种虚拟化技术,它对多个物理磁盘驱动器虚拟成一个大容量的逻辑驱动器
RAID 等级 | RAID0 | RAID1 | RAID5 | RAID10 |
---|---|---|---|---|
别名 | 条带 | 镜像 | 分布奇偶校验条带 | 镜像加条带 |
容错性 | 无 | 有 | 有 | 有 |
冗余类型 | 无 | 有 | 有 | 有 |
热备份选择 | 无 | 有 | 有 | 有 |
读性能 | 高 | 低 | 高 | 高 |
随机写性能 | 高 | 低 | 一般 | 一般 |
连续写性能 | 高 | 低 | 低 | 一般 |
需要磁盘数 | n≥1 | 2n (n≥1) | n≥3 | 2n(n≥2)≥4 |
可用容量 | 全部 | 50% | (n-1)/n | 50% |
将多块物理硬盘设备通过硬件或软件的方式串联在一起( 需磁盘数量2块以上,最好大小相同 ),成为一个大的卷组,称为条带卷。它将数据依次分别写入到各个物理硬盘中,这样最理想的状态会使得读写性能提升数倍,但是任意一块故障都会使整个系统故障。
如图,数据被写入到不同的硬盘设备中
特点:成本低,可以提高整个磁盘的性能和吞吐量
应用场景: 迅速读写,安全性要求不高, 比如图形工作站
把数据再制作出多份镜像,当有某一块硬盘损坏后,一般可以立即通过热交换方式来恢复数据的正常使用。因此追求数据安全性的时候就不应该使用RAID0,而是使用RAID1。
如图,同一份数据保存了多份
需要三块或以上硬盘,可以提供热备盘实现故障的恢复;只损坏一块,没有问题。但如果同时损坏两块磁盘,则数据将都会损坏。RAID5硬盘组技术虽然理论上是兼顾三者的,但实际上是对各个方面的互相妥协和平衡。
如图:同时存储数据和校验数据
应用场景: 随机数据写入,安全性要求比较高,服务器,数据库存储
RAID5 在成本问题和读写速度以及安全性能上进行了平衡,但是相比价格,数据的价值才是更重要的,因此更多的是使用RAID10,就是对 RAID1 + RAID0 的一个 “组合体”。
如图,先由 RAID1保存多份,再由 RAID 0 写入到不同磁盘
应用场景: 有大量数据需要存储,同时又对数据安全性要求比较高的领域,银行,商务
RAID-1 :mirroring(镜像卷)需要磁盘两块以上
原理:是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件( 同步 )
特性:当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据,具备很好的磁盘冗余能力。
详细创建请看上一篇博客:Fdisk 创建分区、进行格式化、最后挂载目录,创建四个5G分主分区
[root@fp-21 ~]# fdisk -l
……
Device Boot Start End Blocks Id System
/dev/sdd1 2048 10487807 5242880 83 Linux
/dev/sdd2 10487808 20973567 5242880 83 Linux
/dev/sdd3 20973568 31459327 5242880 83 Linux
/dev/sdd4 31459328 41943039 5241856 5 Extended
……
[root@fp-21 ~]# partprobe /dev/sdd
[root@fp-21 ~]# ll /dev/sdd*
brw-rw----. 1 root disk 8, 48 Feb 28 23:57 /dev/sdd
brw-rw----. 1 root disk 8, 49 Feb 28 23:57 /dev/sdd1
brw-rw----. 1 root disk 8, 50 Feb 28 23:57 /dev/sdd2
brw-rw----. 1 root disk 8, 51 Feb 28 23:57 /dev/sdd3
brw-rw----. 1 root disk 8, 52 Feb 28 23:57 /dev/sdd4
安装管理软件 RAID 的软件:mdadm
[root@fp-21 ~]# yum -y install mdadm
Loaded plugins: fastestmirror
Determining fastest mirrors
epel/x86_64/metalink | 5.4 kB 00:00
* base: mirrors.aliyun.com
* epel: mirrors.njupt.edu.cn
……
Installed:
mdadm.x86_64 0:4.1-1.el7
Complete!
创建 RAID 1
[root@fp-21 ~]# mdadm -C -v /dev/md2 -l 1 -n 2 -x 1 /dev/sdd1 /dev/sdd[2,3]
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 5237760K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.
将RAID1信息保存到配置文件中
# 查看 RAID1 信息
[root@fp-21 ~]# mdadm -Dsv
ARRAY /dev/md2 level=raid1 num-devices=2 metadata=1.2 spares=1 name=fp-21:2 UUID=54add2b3:71f8fe8f:c6c2fb47:7c5d22d9
devices=/dev/sdd1,/dev/sdd2,/dev/sdd3
# 将 RAID1 信息添加到配置文件中
[root@fp-21 ~]# mdadm -Dsv > /etc/mdadm.conf
检查磁盘阵列
[root@fp-21 ~]# mdadm -D /dev/md2
/dev/md2:
Version : 1.2
Creation Time : Fri Feb 28 23:58:02 2020 # 磁盘阵列创建的时间
Raid Level : raid1
Array Size : 5237760 (5.00 GiB 5.36 GB)
Used Dev Size : 5237760 (5.00 GiB 5.36 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Fri Feb 28 23:58:15 2020
State : clean
Active Devices : 2 # 当前的活动设备数量
Working Devices : 3 # 工作设备
Failed Devices : 0 # 失效的设备
Spare Devices : 1 # 热备份的数量
Consistency Policy : resync
Name : fp-21:2 (local to host fp-21)
UUID : 54add2b3:71f8fe8f:c6c2fb47:7c5d22d9
Events : 17
Number Major Minor RaidDevice State
0 8 49 0 active sync /dev/sdd1
1 8 50 1 active sync /dev/sdd2
2 8 51 - spare /dev/sdd3
在 raid 设备上创建文件系统并挂载
# 格式化
[root@fp-21 ~]# mkfs.xfs /dev/md2
meta-data=/dev/md2 isize=512 agcount=4, agsize=327360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1309440, 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@fp-21 ~]# mkdir /opt/raid1
# 挂载
[root@fp-21 ~]# mount /dev/md2 /opt/raid1/
# 查看挂载是否成功
[root@fp-21 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.9G 16G 12% /
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 12M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda1 1014M 133M 882M 14% /boot
tmpfs 394M 0 394M 0% /run/user/0
/dev/md2 5.0G 33M 5.0G 1% /opt/raid1
创建测试文件
[root@fp-21 ~]# touch /opt/test.txt
[root@fp-21 ~]# echo "如果一块磁盘损坏,我是否还存在?" > !$
echo "如果一块磁盘损坏,我是否还存在?" > /opt/test.txt
# 损坏磁盘
[root@fp-21 ~]# mdadm /dev/md2 -f /dev/sdd1
mdadm: set /dev/sdd1 faulty in /dev/md2
# 查看阵列详细信息
[root@fp-21 ~]# mdadm -D /dev/md2
/dev/md2:
Version : 1.2
Creation Time : Fri Feb 28 23:58:02 2020
Raid Level : raid1
Array Size : 5237760 (5.00 GiB 5.36 GB)
Used Dev Size : 5237760 (5.00 GiB 5.36 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Sat Feb 29 00:10:08 2020
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 1
Spare Devices : 0
Consistency Policy : resync
Name : fp-21:2 (local to host fp-21)
UUID : 54add2b3:71f8fe8f:c6c2fb47:7c5d22d9
Events : 36
Number Major Minor RaidDevice State
2 8 51 0 active sync /dev/sdd3
1 8 50 1 active sync /dev/sdd2
0 8 49 - faulty /dev/sdd1
查看测试文件
[root@fp-21 ~]# cat /opt/test.txt
如果一块磁盘损坏,我是否还存在?
移除损坏设备
[root@fp-21 ~]# mdadm -r /dev/md2 /dev/sdd1
mdadm: hot removed /dev/sdd1 from /dev/md2
[root@fp-21 ~]# mdadm -a /dev/md2 /dev/sdd4
mdadm: /dev/sdd4 not large enough to join array
只有注入思想的博客才是好的博客