目录
RAID:Redundant Arrays of Independent Disks 独立冗余磁盘阵列
拥有大量磁盘的系统,有机会改善数据读写速度和提高数据存储的可靠性
一、作用及基本原理
1.改善性能
通过负荷平衡增加吞吐量;降低访问响应时间
基本原理:磁盘并行读写
位级分散
块级分散
2.提高可靠性
在磁盘出错时,重新修补损坏信息
基本原理:引入磁盘冗余
P.S. RAID不能代替备份,防止因磁盘损坏而终止业务;但若误删文件,则镜像盘的相应文件也被删除,因而即使有RAID仍需要做备份
二、RAID级别
级别level:多块磁盘组织在一起的工作方式有所不同
RAID实现的方式:
外接式磁盘阵列:通过扩展卡提供适配能力
内接式RAID:主板集成RAID控制器
Software RAID:
常用级别:RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD
1.RAID-0:条带卷,strip
按块级分散的,无冗余的磁盘阵列
特点:
读、写性能提升
可用空间:N*min(S1,S2,...)
无容错能力
最少磁盘数:2, 2+
应用场景:数据损失并不会有特别大影响的某些高性能应用
2.RAID-1:镜像卷,mirror
磁盘镜像
特点:
读性能提升(配合镜像盘一起读)、写性能略有下降
可用空间:1*min(S1,S2,...)
有冗余能力
最少磁盘数:2, 2+
高存储空间开销
应用场景:需要高可靠性和快速恢复的应用
3.RAID-4:块交织奇偶结构
采用与RAID-0一样的块级分散,并在一块独立磁盘上保存其他磁盘相应块进行异或运算后的奇偶块
特点:
允许块全为0的磁盘无缝加到RAID集合
P.S. 0⊕0 = 0 0⊕1 = 1
一个磁盘错了,奇偶磁盘块可以和其他磁盘的相应块一起用于恢复出错磁盘的块
对于小于块大小的数据必须访问磁盘所在块,修改数据后写回;两次读入旧块(一块是奇偶块),两次写入新块
应用:WAFL文件系统
4.RAID-5:块交织分布奇偶结构
将数据和奇偶块分布在所有N+1个磁盘上
特点:
避免了RAID-4对单个奇偶磁盘的过度使用,导致所有奇偶丢失的情形
读、写性能提升
可用空间:(N-1)*min(S1,S2,...)
有容错能力:1块磁盘
最少磁盘数:3, 3+
5.RAID-6:P+Q冗余方案
在RAID-5基础上,还额外多使用一个差错纠正码(不同于奇偶校验)保存冗余信息以防止多个磁盘出错
特点:
读、写性能提升,写入效率比RAID5差
可用空间:(N-2)*min(S1,S2,...)
有容错能力:2块磁盘
最少磁盘数:4, 4+
6.混合类型
①RAID-10
磁盘先镜像,再分散
特点:
读、写性能提升
可用空间:N*min(S1,S2,...)/2
有容错能力:每组镜像最多只能坏一块
最少磁盘数:4, 4+
应用场景:小型数据库
②RAID-01
7.其他
①RAID-2:内存方式的差错纠正代码结构
以汉明码(Hamming Code)的方式将数据进行编码后分区为独立的比特,并将数据分别写入硬盘中
应用场景:大型机、超级计算机
②RAID-3:位交织奇偶结构
特点:
相对于RAID-1,RAID-3只需要一个奇偶磁盘,降低了额外存储,采用N路分散数据,因而速度是RAID-1的N倍
奇偶校验带来的性能问题通过专用奇偶奇偶计算硬件的控制器,将CPU上的奇偶计算转移到RAID阵列上,并借助NVRAM提高计算及缓存速度
③RAID-7
RAID 7并非公开的RAID标准,而是Storage Computer Corporation的专利硬件产品名称,RAID 7是以RAID 3及RAID 4为基础所发展的,但是经过强化以解决原来的一些限制
使用大量的高速缓存以及用以实现异步数组管理的专用即时处理器,使得RAID 7可以同时处理大量的IO要求,所以性能甚至超越了许多其他RAID标准的实做产品
价格非常高昂
④RAID-50
RAID 5与RAID 0的组合,先作RAID 5,再作RAID 0,也就是对多组RAID 5彼此构成Stripe访问。由于RAID 50是以RAID 5为基础,而RAID 5至少需要3颗硬盘,因此要以多组RAID 5构成RAID 50,至少需要6颗硬盘。
RAID 50由于在上层把多组RAID 5构成Stripe,性能比起单纯的RAID 5高,容量利用率比RAID5要低
8.JBOD
Just a Bunch Of Disks
功能:将多块磁盘的空间合并一个大的连续空间使用
数据的存放机制:由第一颗硬盘开始依序往后存放
可用空间:sum(S1,S2,...)
三、CentOS 6上的软件RAID的实现
软件实现RAID是基于内核中的md(multi devices)模块
mdadm:模式化的工具
命令的语法格式:mdadm [mode] <raiddevice> [options] <component-devices>
支持的RAID级别:LINEAR(即JBOD), RAID0, RAID1, RAID4, RAID5, RAID6, RAID10
模式:
创建:-C (create)
装配:-A (assemble)
监控:-F (follow)
管理:-f, -r, -a
<raiddevice>:/dev/md#
<component-devices>:任意块设备
1. -C:创建模式
-n #:使用#个块设备来创建此RAID
-l #:指明要创建的RAID的级别
-a {yes|no}:自动创建目标RAID设备的设备文件
-c CHUNK_SIZE:指明块大小
-x #:指明空闲盘的个数
e.g. 创建一个10G可用空间的RAID5(越多盘浪费的空间越小),允许坏一块空闲盘和一个磁盘,然后进入降级模式
P.S. 需要调整类型为fd
调整完记得w写入
由blkid命令取得UUID,再修改/etc/fstab实现开机挂载
2. -D:显示raid的详细信息
mdadm -D /dev/md#
3.管理模式
-f:标记指定磁盘为损坏
-a:添加磁盘
-r:移除磁盘
观察md的状态:
cat /proc/mdstat
停止md设备:
mdadm -S /dev/md#
watch命令:
-n #:刷新间隔,单位是秒
watch -n# ' COMMAND '
4.删除软件RAID,并移除磁盘
①标记磁盘损坏再移除
mdadm -f /dev/sda[5-8] -r /dev/sda[5-8]
②停止并移除软件RAID
mdadm -S /dev/md0
mdadm –remove /dev/md0
③删除RAID分区中的元数据
mdadm --misc --zero-superblock /dev/sda[5-8]
其他
防止系统启动时候启动raid
cat /dev/null > /etc/mdadm.conf
cat /dev/null > /etc/raidtab
练习
①创建一个可用空间为10G的RAID1设备,要求其chunk大小为128k,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录
mdadm -C /dev/md0 -l 1 -n 2 -x 1 -c 128k /dev/sda{6,7,8}
mke2fs -t ext4 /dev/md0
mkdir /backup
mount /dev/md0 /backup
blkid /dev/md0
vim /etc/fstab
UUID=’’ /backup ext4 defaults 0 0
②创建一个可用空间为10G的RAID10设备,要求其chunk大小为256k,文件系统为ext4,开机可自动挂载至/mydata目录
mdadm -C /dev/md0 -l 10 -n 4 -x 1 -c 256k /dev/sda{6,7,8,9,10}
mke2fs -t ext4 /dev/md0
mkdir /mydata
mount /dev/md0 /mydata
blkid /dev/md0
vim /etc/fstab
UUID=’’ /mydata ext4 defaults 0 0
参考资料:
①马哥随堂笔记
②操作系统概念(第7版,翻译版),【美】Abraham Silbers等著,郑扣根译,高等教育出版社
③https://wk.mekaku.com/wiki/RAID
注:诚恳欢迎读者对本文提出批评意见,若发现存在错误,我定第一时间修改。如果读者觉得文章对您有帮助,欢迎点赞鼓励一下哟٩(๑❛ᴗ❛๑)۶。