RAID阵列常用方案

439 阅读5分钟

什么是RAID

"RAID"一词是由David Patterson, Garth A. Gibson, Randy Katz 于1987年在加州大学伯克利分校发明的。在1988年6月SIGMOD会议上提交的论文"A Case for Redundant Arrays of Inexpensive Disks”"中提出,当时性能最好的大型机不断增长的个人电脑市场开发的一系列廉价驱动器的性能所击败。尽管故障与驱动器数量的比例会上升,但通过配置冗余,阵列的可靠性可能远远超过任何大型单个驱动器的可靠性。

独立硬盘冗余阵列RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列Redundant Array of Inexpensive Disks),简称磁盘阵列。利用虚拟化存储技术把多个硬盘组合起来,成为一个或多个硬盘阵列组,目的为提升性能或数据冗余,或是两者同时提升。RAID 层级不同,数据会以多种模式分散于各个硬盘,RAID 层级的命名会以 RAID 开头并带数字,例如:RAID 0、RAID 1、RAID 5、RAID 6、RAID 7、RAID 01、RAID 10、RAID 50、RAID 60。每种等级都有其理论上的优缺点,不同的等级在两个目标间获取平衡,分别是增加数据可靠性以及增加存储器群)读写性能。

简单来说,RAID把多个硬盘组合成为一个逻辑硬盘,因此,操作系统只会把它当作一个实体硬盘。RAID常被用在服务器电脑上,并且常使用完全相同的硬盘作为组合。由于硬盘价格的不断下降与RAID功能更加有效地与主板集成,它也成为普通用户的一个选择,特别是需要大容量存储空间的工作,如:视频与音频制作。

RAID功能实现

  • 提高IO能力,磁盘并行读写
  • 提高耐用性,磁盘冗余算法来实现

RAID实现的方式

  • 外接式磁盘阵列:通过扩展卡提供适配能力
  • 内接式RAID:主板集成RAID控制器,安装OS前在BIOS里配置
  • 软件RAID:通过OS实现,比如:群晖的NAS

目前已有的RAID磁盘阵列的方案至少有十几种,常见的有以下五种

RAID 0

兼顾了读写性能,是所有raid当中性能最好的,实现成本低;但是没有冗余和错误修复能力,任何一块硬盘出现故障数据就会丢失,并且无法恢复。

  • 读、写性能提升可用空间:N*min(S1,S2,...)
  • 无容错能力
  • 最少磁盘数:1+

Snipaste_2022-08-04_11-21-49.png RAID 1

读写性能强,是所有raid当中冗余性最好的;但是性能只有当个磁盘的性能,且成本高。 读性能提升、写性能略有下降

  • 可用空间:1*min(S1,S2,...)
  • 磁盘利用率 50%
  • 有冗余能力
  • 最少磁盘数:2n

Snipaste_2022-08-04_11-21-59.png RAID 5

弥补了raid0和raid1的缺点,提高性能的同时也兼顾了冗余性,相对raid0可靠性强,比raid1性能要好,是一种折中的方式

  • 读、写性能提升
  • 可用空间:(N-1)*min(S1,S2,...)
  • 有容错能力:允许最多1块磁盘损坏
  • 最少磁盘数:3, 3+

Snipaste_2022-08-04_11-22-08.png RAID 6

可以说是raid5的升级版,弥补了raid只能单块磁盘故障,提高了可靠性

Snipaste_2022-08-04_11-22-15.png RAID 10

RAID 1+RAID 0技术的一个“组合体”。如图所示,RAID 10技术需要至少4块硬盘来组建,其中先分别两两制作成RAID 1磁盘阵列,以保证数据的安全性;然后再对两个RAID 1磁盘阵列实施RAID 0技术,进一步提高硬盘设备的读写速度。这样从理论上来讲,只要坏的不是同一组中的所有硬盘,那么最多可以损坏50%的硬盘设备而不丢失数据。由于RAID 10技术继承了RAID 0的高读写速度和RAID 1的数据安全性,在不考虑成本的情况下RAID 10的性能都超过了RAID 5,因此当前成为广泛使用的一种存储技术。

  • 读、写性能提升
  • 可用空间:N*min(S1,S2,...)/2
  • 有容错能力:每组镜像最多只能坏一块
  • 最少磁盘数:4, 4+

Snipaste_2022-08-04_11-22-28.png

配置软件raid

1. 新建磁盘

根据事实情况分区 Snipaste_2022-08-04_09-37-56.png 建立磁盘之后可以关机重启或者在终端中用命令刷新磁盘信息

Snipaste_2022-08-04_09-42-58.png

常用命令

  1. 使用mdadm创建并定义RAID设备
  • mdadm -C /dev/md0 -l 5 -n 3 -x 1 /dev/sd{b,c,d,e}1
  • 命令 raid名 级别 盘数 热备
  1. 用文件系统对每个RAID设备进行格式化
  • mkfs.xfs /dev/md0
  1. 使用mdadm检查RAID设备的状况
  • mdadm --detail /dev/md0 -mdadm -D /dev/md0
  1. 增加新的成员
  • mdadm -G /dev/md0 -n4  -a /dev/sdf1
  1. 模拟磁盘故障
  • mdadm /dev/md0  -f /dev/sda1
  1. 移除磁盘
  • mdadm   /dev/md0 -r /dev/sda1
  1. 在备用驱动器上重建分区
  • mdadm /dev/md0  -a /dev/sda1
  1. 系统日志信息
  • cat /proc/mdstat

2. 创建rail

2.1 创建raid Snipaste_2022-08-04_10-03-03.png 查看状态

Snipaste_2022-08-04_10-06-38.png 2.2 用文件系统对每个raid盘进行格式化

Snipaste_2022-08-04_10-07-44.png 验证raid

Snipaste_2022-08-04_10-12-26.png 2.3 模拟磁盘故障

Snipaste_2022-08-04_10-15-26.png 移除硬盘

Snipaste_2022-08-04_10-31-36.png 添加硬盘

Snipaste_2022-08-04_10-32-54.png

RAID的实现

RAID的实现方式有两种:

1、 软件RAID

通过系统功能或ID软件实现RAID,没有独立硬件和接口,需要占用一定的系统资源(CPU、硬盘接口速度),并且受操作系统稳定性影响;

2、 硬件RAID

通过独立的ID硬件卡实现,有些主板集成ID硬件,有些需要购买独立的ID硬件卡,硬件RAID不需要占用其他硬件资源,稳定性和速度都比软件RAID要强

结束语:工作中常用[硬件raid](硬件RAID配置 - 掘金 (juejin.cn))。配置了解软件raid。