文章目录
一、RAID介绍
RAID,全称 Redundant Arrays of Inexpensive Disk ,独立冗余磁盘阵列。
磁盘阵列是由很多块独立的物理硬盘,组合成一个容量巨大的硬盘组,从而提供比单个硬盘更高的存储性能和提供数据备份技术。
RAID可以实现包括提高I/O(读写)能力、提高耐用性、提高数据冗余性等功能。
DAID的实现方式:
- 外接式:通过拓展卡提供适配能力
- 内接式:主板集成DAID控制器,其通常在安装操作系统前在BIOS里设置
- 软件式:通过操作系统的软件来实现,比如群晖的NAS
组成磁盘整列的不同方式称为RAID级别,最常用的RAID分为四种:
RAID 0、RAID 1、RAID 5、RAID 10(10不是十,而是1+0,即先做RAID 1,再做RAID 0)
但是,这不是RAID的全部级别,其还有RAID 2、DAID 3、RAID 4、RAID 6、RAID 50 等等,只是其因为性能原因或者不常在生产环境中使用,从而被淘汰或者被一笔带过。
二、常用的几种RAID
1.RAID 0
RAID 0 ,又称条带化存储。它在所有的RAID级别中拥有最高的存储性能,其原理是把一段连续的数据分散存储到不同的硬盘上(该过程是同时进行的)。要想实现RAID 0,至少需要两块硬盘。
假如我有一段连续的数据123456789,同时用了三块硬盘即a,b,c 做了RAID 0,那么它的存储方式为1存a,2存b,3存c,4存a,5存b,6存c,7存a,8存b,9存c,以此类推,并且存储的进程是同时的,由此可见,在相同的数据情况下,RAID 0的存储速度随着硬盘的不断增加而增加**(单一硬盘的N倍,N为RAID 0中的硬盘数量)**。
但是,RAID 0只是单纯地提高性能,并没有为数据的可靠性提供保证,其中的一个磁盘失效将影响到所有数据,所以RAID 0不能应用于数据安全性要求高的场合。
由上图可知,当一块硬盘挂掉了,就会造成部分数据的丢失,从而影响数据的完整性。
2.RAID 1
RAID 1 ,又称镜像存储。其通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。通俗来说,就是所有(硬盘数为偶数,即2n)RAID 1 中的硬盘中都写入全部数据,其容量仅等于一块硬盘的容量,因为另一块只是当作数据镜像。当原始数据繁忙时,可直接从镜像拷贝中读取数据。
RAID 1的写入速度通常较慢,因为数据得分别写入两块硬盘中并做比较,但其数据读取较单一硬盘来说要快,因为数据会从两块硬盘中较快的一块中读出。
RAID1是硬盘中单位成本最高的,但提供了很高的数据安全性和可用性,当一个硬盘失效时,系统可以自动切换到镜像硬盘上读/写,并且不需要重组失效的数据。
由上图可知,当一块硬盘挂掉了,系统会从备份硬盘中读取完整的数据信息,不会影响数据的完整性。
3.RAID 5
RAID 5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案,其至少需要三块硬盘来组成阵列。
RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,因此写入数据的速度比对单个磁盘进行写入操作稍慢。
由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,为 n-1/n(n为硬盘数量)
RAID 5 的可靠性较高,允许损坏一块盘,当某一块盘损坏时,RAID 5 会利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据,从而不会影像数据的完整性。 当然,如果同时坏了两块盘,或者在一块盘损坏未解决故障的同时又坏了一块,那就只能GG了。
如上图所示,如果 disk 0 损坏,其他的三块硬盘是可以根据校验信息来进行数据恢复的,所以并不影响数据的完整性
4.RAID10
RAID10,指的是RAID 1 + 0 ,即先做 RAID 1 ,再做 RAID 0 。它是 RAID 1 和 RAID 0 结合的产物,在连续地以位或字节为单位分割数据并且并行读/写多个磁盘的同时,为每一块磁盘作磁盘镜像进行冗余。
RAID 10 同时拥有 RAID 0 的快速读写速度和 RAID 1 的数据高可靠性,但是CPU占用率同样也更高,而且磁盘的利用率比较低(n/2)。
由于利用了 RAID 0 极高的读写效率和 RAID 1 较高的数据保护、恢复能力,使 RAID 10 成为了一种性价比较高的等级,目前几乎所有的RAID控制卡都支持这一等级。
三、Linux系统构建软RAID
在Linux系统中,要想构建RAID磁盘阵列,需要用到mdadm工具。
格式: mdadm [模式] <raiddevice> [选项] <component-device>
选项 | 模式 |
---|---|
-C | 创建模式 |
-A | 装配模式 |
-F | 监控模式 |
-f,-r,-a | 管理模式 |
管理模式 | 作用 |
---|---|
-f | 标记指定磁盘为损坏 |
-r | 除移磁盘 |
-a | 添加磁盘 |
选项 | 作用 |
---|---|
-n # | 使用#个设备来创建此RAID |
-l # | 指定创建的RAID的级别 |
-x # | 指定空闲磁盘的大小 |
-c | 指定块大小,单位为k |
-D | 显示RAID的详细信息 |
下面,我将向大家仔细演示Linux中搭建RAID 5 的过程:
-
首先,我们现在虚拟机管理界面新添加4块硬盘。添加4块的目的是其中3块做RAID 5 ,剩下的一块做热备盘,即RAID 5 中如果有一块盘损坏,热备盘能直接顶替上去。
-
yum install -y mdadm
-
mdadm -Cv md0 -l 5 -n 3 /dev/sd[b-d] -x 1 /dev/sde
-
mdadm -D /dev/md/md0
-
格式化
-
挂载
-
模拟sdd损坏