一、RAID 磁盘阵列
1.1 RAID 磁盘阵列介绍
RAID 是 Redundant Array of Independent Disks 的缩写, 简称 独立冗余磁盘阵列。主要就是将磁盘资源集中进行管理,详细介绍如下:
- 是把多块独立的物理硬盘 按照不同的方式组合起来 形成一个硬盘组(逻辑上还是一块硬盘),从而 提供比单个硬盘更高的存储性能 还能 提供数据备份技术;
- 组成磁盘阵列的不同方式称为 RAID级别(RAID Levels);
- 常用的RAID级别 : RAID 0,RAID 1,RAID 5,RAID 6,RAID 1+0、0+1 等。
1.2 常用的RAID级别
1.2.1 RAID 0(条带化存储)
介绍:
RAID 0 是将 N块硬盘并行组合成一个新的逻辑盘;连续以 位 或 字节 为单位分割数据,并行 读/写 于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余(备份)功能;
RAID 0 只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据;所以,RAID 0 不能应用于数据安全性要求高的场合;
优点:
- 因为是把连续的数据分散(striping)到多个磁盘上存取,所以 拥有所有 RAID级别中最高的 读写效率。
- 系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求,所以传输速率很快;
- 利用率是100%;
缺点:
- 没有备份功能,可靠性差,当一个硬盘的数据丢失时,会影响所有的数据。


1.2.2 RAID 1 (镜像存储)
介绍:
- 通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据,所以需要偶数个磁盘。(在一块硬盘上写,在另一块硬盘上备份)。
- 当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此 RAID 1 提高了读的性能;
- RAID 1 是磁盘阵列中单位 成本最高的,但提供了很高的 数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。

1.2.3 RAID 5 磁盘列阵
介绍:
- 由 N 块盘组成的磁盘阵列(N>=3),一份数据产生 N-1 个条带,同时还有1份校验数据,共N份数据在N块盘上循环均衡存储;
- 需写一份校验数据,浪费一块硬盘
- N 块盘可以同时读写,读性能很高;但由于 有校验机制的问题,写性能相对不高。
- 磁盘利用率:( N-1) / N
- 将校验数据分摊给所有硬盘,可靠性高,允许坏1块盘,不影响所有数据。


优点:
- 存储性能、数据安全 和 存储成本兼顾的存储解决方案。RAID 5 对比 RAID 1 的备份方式,RAID 5 备份的不是数据本身,而是把数据和相对应的校验数据分别存储到组成 RAID 5 的各个磁盘上,所以 当 RAID 5 的一个磁盘数据发生损坏后,可以利用剩下的数据和相对应的校验数据去恢复被损坏的数据,可靠性高。
缺点:
- 因为校验机制问题,导致写的性能相对不高;
1.2.4 RAID 6 磁盘列阵
介绍:
- 由 N 块盘组成的磁盘阵列(N>=4)
- 磁盘利用率: (N-2) / N
- 与 RAID 5 相比,RAID 6 增加了 第二个独立的奇偶校验信息块
- 两个独立的奇偶系统使用不同的算法,即使两块磁盘同时失效也不会影响数据的使用
- 相对于 RAID 5 有更大的 “写损失”,因此写性能较差。
- 需写两份校验数据,浪费两块硬盘

1.2.5 RAID 1+0(先做镜像,再做条带)
介绍:
- 由 N 块盘组成的磁盘阵列(偶数,N>=4),N 块盘两两镜像后,再组合成一个 RAID 0
- 磁盘利用率:N/2
- N/2 块盘同时写入,N块盘同时读取,性能高,可靠性高

优点:RAID 1+0是存储性能和数据安全兼顾的方案。它在提供与 RAID 1一样的数据安全保障的同时,也提供了与RAID 0近似的存储性能。
缺点:由于 RAID 1+0 也通过数据的100%备份提供数据安全保障,因此 RAID 0+1的磁盘空间利用率与RAID1相同,存储成本高。
1.2.6 RAID 0+1(先做条带,再做镜像,不常用)
- 读写性能与 RAID 1+0 相同
- 安全性低于 RAID 1+0,所以一般不用该方式

1.3 各个RAID级别的对比
RAID 0 : 安全性能高,没有冗余能力,可靠性能差;
RAID 1 : 磁盘数量大于等于2(偶数),读性能高,写的性能一般,安全系数高,允许一块硬盘坏掉;
RAID 5 : 磁盘数量大于等于3,要写入一块硬盘用于冗余校验数据,读性能较快,写性能较慢;
RAID 6 : 磁盘数量大于等于4,要写入两块硬盘用于冗余校验数据,写性能比5差;
RAID 10 : 先创1,再创0,磁盘数量大于等于4(偶数),每个1中可以各毁坏一个;
| RAID级别 | 硬盘数量 | 磁盘利用率 | 是否有校验 | 保护能力 | 读写性能 |
|---|---|---|---|---|---|
| RAID 0 | N | 100% | 无 | 无 | 单个硬盘的N倍(最好) |
| RAID 1 | N(偶数) | 50% | 无 | 允许一个设备故障 | 读和单个硬盘无分别,写则需写两对存储设备 |
| RAID 5 | N >=3 | (N-1) / N | 有 | 允许一个设备故障 | 读和RAID 0近似,写<单个硬盘 |
| RAID 6 | N >=4 | (N-2) / N | 有 | 允许两个设备故障 | 读写都近似与 RAID 5,写入<RAID 5 |
| RAID 10 | N >=4(偶数) | 50% | 无 | 允许两个基组中各坏一个 | 读=RAID 0,写=RAID 1 |
二、操作练习
2.1 步骤
以 RAID 5 为例,创建软RAID磁盘阵列步骤:
使用到 mdadm 命令。
1、检查是否已安装mdadm软件包
rpm -q mdadm
如未安装执行 yum install -y mdadm 进行安装
2、使用fdisk工具将新磁盘设备/dev/sdb、/dev/sdc、 /dev/sdd、 /dev/sde
划分出主分区sdb1、sdc1、 sdd1、 sde1, 并且把分区类型的ID 标记号改为“fd”
fdisk /dev/sdb
fdisk /dev/sdc
n → p → 回车 → 回车 → t → fd → w
3、创建RAID设备
#创建RAID5,md0 为磁盘阵列的名字
mdadm -C -v /dev/md0 [-a yes] -l5 -n3 /dev/sd[bcd]1 -x1 /dev/sde1
-C: 表示新建
-v: 显示创建过程中的详细信息
/dev/md0: 创建RAID5 的名称
-a yes: --auto, 表示如果有什么设备文件没有存在的话就自动创建,可省略。
-l: 指定RAID的级别,l5表示创建RAID5,l10代表RAID10
-n: 指定使用几块硬盘创建RAID, n3表示使用3块硬盘创建RAID
-n3 /dev/sd[bcd]1: 指定使用这3块磁盘分区去创建RAID
-x: 指定使用几块硬盘做RAID的热备用盘,x1表示保留1块空闲的硬盘作备用(热备份,支持热插拔的)
/dev/sde1: 指定用作于备用的磁盘
#查看创建RAID磁盘进度详细信息
cat /proc/mdstat 查看创建RAID的进度(实时的查看一次,不能自动刷新)
或者
mdadm -D /dev/md0
#用watch命令来每隔一段时间定时刷新/proc/mdstat 的输出
watch -n 5 'cat /proc/mdstat' #每隔5秒执行一次 cat /proc/mdstat 命令,用户定时刷新并输出命令结果
#查看磁盘是否已做 RAID
mdadm -E /dev/sd[b-e]1
4、创建并挂载文件系统
#临时挂载
mkfs -t xfs /dev/md0
mkdir /myraid
mount /dev/md0 /myraid
df -Th
#自动挂载
cp /etc/fstab /etc/fstab.bak
vim /etc/fstab
/dev/md0 /myraid xfs defaults 0 0
5、实现故障恢复
mdadm /dev/md0 -f /dev/sdb1 模拟/dev/sdb1故障
mdadm -D /dev/md0 查看发现sde1已顶替sdb1
6、创建/etc/mdadm.conf 配置文件,方便管理软RAID的配置,比如启动、停止
echo 'DEVICE /dev/sdc1 /dev/sdb1 /dev/sdd1 /dev/sde1' > /etc/mdadm.conf
mdadm --detail --scan >> /etc/mdadm.conf
mdadm 命令其它常用选项:
-f:指定设备故障
-r:移除设备
-a:添加设备
-S:停止RAID
-A:启动RAID
mdadm /dev/md0 -f /dev/sdb1
mdadm /dev/md0 -r /dev/sdbl
mdadm /dev/md0 -a /dev/sde1
#不添加配置文件的停止后启动不了
echo 'DEVICE /dev/sdc1 /dev/sdb1 /dev/sdd1' > /etc/mdadm.conf
mdadm --detail --scan >> /etc/mdadm.conf
umount /dev/md0
mdadm -S /dev/md0
mdadm -As /dev/md0
#-s: 指查找/etc/mdadm.conf 文件中的配置信息
2.2 Linux 中创建软 RAID 5 实操
操作前准备:
先添加四块硬盘,每个硬盘5G,前三个做 RAID 5,一个用来做备份。执行 fdsik -l 查看硬盘已经添加进来了,分别是 /dev/sdb、 /dev/sdc、 /dev/sdd、 /dev/sde。


执行 rpm -q mdadm 发现也已经安装了。
2.2.1 步骤一:进行磁盘分区,设置分区类型为 fd
执行四次命令进行分区,fdisk /dev/sd[b-e], n → p → 回车 → 回车 → t → fd → w 。fd 表示分区类型为 fd Linux raid 自动检测。

2.2.2 步骤二:创建、查看 RAID设备
执行命令 mdadm -Cv /dev/md0 -l5 -n3 /dev/sd[b-d]1 -x1 /dev/sde1 创建 RAID 5,/dev/sdb1、/dev/sdc1、/dev/sdd1 做主设备,/dev/sde1 做备用。


或者用命令 mdadm -D /dev/md0,查看:

或者用检查磁盘是否已做RAID:mdadm -E /dev/sdb1。
2.2.3 步骤三:创建并挂载文件系统
可以用 mount 临时挂载,和在 /etc/fstab 中永久挂载,为了方便我使用mount 临时挂载。

因为我用了 -n3 使用了三块磁盘共15G 去创建 RAID 5,磁盘利用率是 (N-1) / N 即 2/3 * 15 = 10G,所以挂载后的容量为 10G。
步骤四:模拟故障,实现故障恢复
执行命令: mdadm /dev/md0 -f /dev/sdc1 使用 RAID 5 方式创建的 /dev/md0 磁盘阵列中的 /dev/sdc1 磁盘故障,再执行命令 mdadm -D /dev/md0 查看阵列信息,发现 sde1 已顶替 sdc1。

faulty 有错误的


步骤五:创建 /etc/mdadm.conf 配置文件
创建 /etc/mdadm.conf 配置文件,为了方便的管理软RAID的配置,比如启动、停止。如果不创建该配置文件,执行完 -S 停止后,-A 执行会失败。
echo 标准输出
> 重定向输出,有就覆盖,没有就新建文件
>> 重定向追加 有就追加,没有就新建文件
echo 'DEVICE /dev/sdc1 /dev/sdb1 /dev/sdd1 /dev/sde1' > /etc/mdadm.conf
#如果文件存在,则覆盖原文件中的内容;如果不存在,则创建文件,将内容输入进去
mdadm --detail --scan >> /etc/mdadm.conf
#如果文件存在,则在文件最后行追加内容;如果不存在,则创建文件,将内容输入进去

添加、移除 磁盘设备;停止、启动 RAID 设备
-r 移除RAID中的磁盘设备、 -a 添加磁盘设备。



-S 停止RAID、 -A 启动RAID
注意:停止前 RAID 要先进行解挂载,因为磁盘在使用过程中无法被停止。
umount /dev/md0
mdadm -S /dev/md0
mdadm -As /dev/md0
#-s: 指查找/etc/mdadm.conf 文件中的配置信息
#前提是解挂的设备名 已经写入到 /etc/mdadm.conf 配置文件中了。

2.3 附加题 1+0
如果要做 RAID 1+0,先做镜像(1)再做条带(0)。即先做两个 RAID 1(共四个硬盘)出来,再做一个 RAID 0 。
#创建RAID10(先做镜象,再做条带)
mdadm -Cv /dev/md0 -l1 -n2 /dev/sd[bc]1
mdadm -Cv /dev/md1 -l1 -n2 /dev/sd[de]1
mdadm -Cv /dev/md10 -l0 -n2 /dev/md0 /dev/md1
三、阵列卡
阵列卡:
- 阵列卡是用来实现RAID功能的板卡
- 通常是由I/O处理器、硬盘控制器、硬盘连接器和缓存等一系列组件构成的
- 不同的RAID卡支持的RAID功能不同
- RAID卡的接口类型:IDE接口、SCSI接口、SATA接口和SAS接口
阵列卡的缓存:
- 缓存 (Cache) 是RAID卡与外部总线交换数据的场所,RAID卡先将数据传送到缓存,再由缓存和外边数据总线交换数据;
- 缓存的大小与速度是直接关系到RAID卡的实际传输速度的重要因素;
- 不同的RAID卡出厂时配备的内存容量不同,一般为几兆到数百兆容量不等。
本文深入介绍了RAID技术,包括常见的RAID级别如RAID0、RAID1、RAID5等的特点与优缺点,并提供了在Linux环境下搭建RAID5的具体步骤。
2858

被折叠的 条评论
为什么被折叠?



