目录
一、什么是RAID(独立冗余磁盘阵列)
1988年,加利福尼亚大学伯克利分校首次提出并定义了RAID技术的概念。RAID通过把多个硬盘设备组合成一个容量更大、安全性更好的磁盘阵列,并把数据切割成多个段后分别存放在各个不同的物理硬盘设备上,然后利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数据冗余备份效果和容错能力。
简单来说,RAID把多个硬盘组合成为一个逻辑硬盘,因此,操作系统只会把它当作一个实体硬盘。RAID常被用在服务器电脑上,并且常使用完全相同的硬盘作为组合。由于硬盘价格的不断下降与RAID功能更加有效地与主板集成,它也成为普通用户的一个选择,特别是需要大容量存储空间的工作,例如视频与音频制作 ,如今有许多B站up主,使用RAID技术来备份、管理数据。
二、RAID物理分类
2.1 硬RAID
图:硬RAID实现方式
图:磁盘阵列柜
图:磁盘阵列卡
磁盘阵列柜一般是企业级使用;RAID阵列卡更快更稳定,因为大部分有缓存,可以提升读写速度,好一点的阵列卡会带电池,更稳定。主板自带的RAID不要轻易尝试,主板超频失败,电池没电等问题都会导致阵列信息丢失。
2.2 软RAID
早期的软RAID不太稳定,速度也不及硬RAID,但随着技术的不断优化,软硬RAID的差距也不再那么明显。比如群晖的NAS,它以数据为中心,将存储设备与服务器彻底分离,集中管理数据,从而释放带宽、提高性能、降低总拥有成本、保护投资。其成本远远低于使用服务器存储,而效率却远远高于后者。可用于打造私有云、家庭影院等。
三、RAID逻辑分类
图:硬盘比喻成水桶
3.1 RAID0
把硬盘看成一个水桶,读写操作看成是注水和抽水,只有一块硬盘的情况下,就是往一个水桶里面注水,水桶的入口大小限制了读写速度,当有两个水桶时,同时往两个水桶注水或抽水,读写速度就是单块硬盘的两倍,这就是RAID0模式。RAID0将两个以上的硬盘并联起来,形成一个的大磁盘,硬盘容量是所有硬盘容量之和,进行写入操作时,是同时将数据分别存入不同的硬盘中,读写操作由几块硬盘同时处理,RAID0在所有RAID中速度是最快的,容量也是最大的,但最大的缺点就是没有冗余和容错能力,如果坏一块硬盘,所有数据就完蛋了。
图:RAID0
3.2 RAID1
RAID1至少需要两块硬盘,所有硬盘互为镜像,每块硬盘上存储的数据都一模一样,阵列中只剩有一块硬盘没坏,数据都可以完整读出来,RAID1理论读取速度与RAID0相同,有几块硬盘速度就是单块的几倍,但写入速度等于一块硬盘,当RAID1有一块硬盘损坏时,拔出损坏的盘,换入新的硬盘,阵列会恢复数据到新插入的硬盘,也就是重建阵列,性价比很低,即使100块硬盘做RAID1,也只算一块硬盘的容量。如果两块盘大小不一样,木桶效应以最小的为准。
图: RAID1
图:RAID0和RAID1比较
3.3 RAID5
RAID5将校验数据分散存在各个硬盘,每个硬盘都有校验数据,当一块硬盘损坏,所有其他盘里的数据配合校验信息,就可以进行恢复,至少需要三块硬盘,其中三分之一进行冗余,存放校验数据,另外三分之二空间存放原始数据,RAID5读写速度和RAID0相近,写入速度不及RAID0,但三分之一是校验数据,允许阵列损坏一块盘的情况下,实现数据完全恢复,安全性比RAID0高出很多。
图:RAID5
3.4 RAID10
RAID10至少需要四块硬盘,其中先两两组成RAID1,然后把两组RAID1组成RAID0,RAID10是先RAID1然后RAID0。RAID10的优点是,RAID10阵列建成后,再添加一组RAID1,总容量就可以轻松扩大;如果坏了一块硬盘,RAID10重建只需要对坏盘进行重建;假设两块硬盘有问题,只要坏的盘不在同一RAID1,阵列就不会坏掉,坏第二块盘导致阵列坏掉的概率是三分之一。
3.5 RAID01
RAID01相较于RAID10的特点,RAID01阵列建成后,再添加一组RAID0,总容量没有变化;如果坏了一块硬盘,RAID01重建需要对两块硬盘进行恢复;假设两块硬盘有问题,只要另一组RAID0任意一块硬盘损坏,整个阵列就会坏掉,坏第二块盘导致阵列坏掉的概率是三分之二,
四、构建软RAID5磁盘阵列
1.创建软RAID磁盘阵列步骤
1.检查是否安装mdadm软件包
rpm -q mdadm
yum install -y mdadm
2.使用fdisk工具将新的磁盘设备划分出主分区并把分区类型的ID标记号改为“fd”
fdisk /dev/sdb
fdisk /dev/sdc
fdisk /dev/sdd
fdisk /dev/sde
3.创建RAID设备
mdadm -C -v /dev/md0 -15 -n3 /dev/sd[bcd]1 -x1 /dev/sde1
-C | 表示新建 |
-v | 显示创建过程中的详细信息 |
/dev/md0 | 创建的RAID名称 |
-l | 指定RAID的级别,l5表示创建RAID5 |
-n | 指定使用几块硬盘创建RAID |
/dev/sd[bcd]1 | 指定使用这3块盘创建RAID |
-x | 指定使用几块硬盘做RAID的热备用盘,x1表示保留一块空闲的硬盘作备用 |
/dev/sde1 | 指定用于作备用的磁盘 |
表:创建命令的各字段含义
mdadm命令选项:
-r | 移除设备 |
-a | 添加设备 |
-S | 停止RAID |
-A | 启东RAID |
-f |
模拟故障 |
-D | 显示RAID详细信息 |
表:mdadm命令选项
2.需求描述
为Linux服务器添加四块SCSI硬盘,使用mdadm软件包,构建软RAID5磁盘阵列,提高磁盘存储的性能和可靠性
3.构建过程
1.添加四块硬盘
2.重启后可以看到新加的硬盘,或者刷新端口
3.创建分区,分区类型为fd
保存退出,其他三块盘一样的操作,最后使用fdisk -l查看
4.创建
5.格式化
6.挂载
上面这些操作就已经创建好了RAID5,我们往里面写入文件
7.模拟故障
实验结束
五、总结
RAID级别 | 硬盘数量 | 磁盘利用率 | 是否有校验 | 允许损坏情况 | 写能力 |
RAID0 | n>=1 | 全部 | 无 | 无 | 单个硬盘的n倍 |
RAID1 | n是偶数 | n/2 | 无 | 允许一块硬盘损坏 | 等于单块硬盘 |
RAID5 | n>=3 | (n-1)/2 | 有 | 允许一块硬盘损坏 | 不及RAID0 |
RAID10 | n>=4的偶数 | n/2 | 无 | 最多坏两块盘且不在同一组RAID1 | n/2块盘同时写入 |