首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >RAID技术详解:从基础到实战的存储指南

RAID技术详解:从基础到实战的存储指南

原创
作者头像
Lethehong
发布2025-03-09 11:50:46
发布2025-03-09 11:50:46
6070
举报
文章被收录于专栏:热度文章热度文章

一、RAID的本质:存储界的瑞士军刀

RAID(Redundant Array of Independent Disks)不是简单的磁盘堆叠,而是通过算法将多块物理硬盘虚拟化为逻辑存储单元的核心技术。其核心价值体现在:

  • 性能加速:读写速度提升2-10倍(视RAID级别而定)
  • 数据保护:最高可承受同时损坏2块硬盘(如RAID6)
  • 容量优化:多块小容量硬盘合并为超大存储池

二、主流RAID级别性能矩阵

RAID级别

最小磁盘数

可用容量

读写性能

冗余能力

典型场景

RAID0

2

N×单盘容量

极佳

视频编辑缓存

RAID1

2

50%总容量

读快写慢

允许1盘故障

数据库日志

RAID5

3

(N-1)×单盘容量

读快写慢

允许1盘故障

文件服务器

RAID6

4

(N-2)×单盘容量

读快写慢

允许2盘故障

医疗影像存储

RAID10

4

50%总容量

读写俱佳

允许多盘每组镜像故障

虚拟化平台

三、技术细节:RAID5的异或运算原理

RAID5的分布式校验算法是其核心技术:

代码语言:bash
复制
# 三块磁盘数据块示例
disk1 = 0b1100
disk2 = 0b1010
# 校验块计算
parity = disk1 ^ disk2  # 0b0110
 
# 磁盘2损坏时恢复数据
recovered_disk2 = disk1 ^ parity  # 0b1010

这种算法使校验数据均匀分布在各磁盘,避免写入热点问题。

四、必须知道的RAID陷阱

UER问题(不可恢复读错误) 机械硬盘UER率为10^14,RAID5阵列在12TB硬盘重建时失败率高达22%

写惩罚(Write Penalty)

RAID级别

写放大系数

RAID1

2

RAID5

4

RAID6

6

容量规划公式

代码语言:bash
复制
实际可用空间 = (单盘容量 × 磁盘数) × 冗余系数
冗余系数:RAID1=0.5, RAID5=0.8, RAID6=0.67

五、新型存储方案冲击下的RAID

  • 对象存储:Ceph、MinIO的EC编码方案替代传统RAID
  • SSD阵列:基于NVMe-oF的JBOF设备提供更高性能
  • 云存储:AWS EBS自动多AZ冗余

但RAID仍是本地化存储的黄金标准,2023年全球RAID控制器市场规模达48.7亿美元(数据来源:Gartner)。

永远记住:RAID不是备份!需配合3-2-1备份策略

六、三个实例(raid1、raid5、raid10)

1、创建raid1,并测试

这里我就没有演示如何去分区了,直接使用fdisk命令即可。测试的方法有很多,这里就没有去比较三者的速率了

使用cat /proc/mdstat查看一下创建情况

使用mdadm -D /dev/md1

-D:打印阵列设备的详细信息

使用mkfs.ext4 /dev/md1将md1进行格式化

使用mkdir新建一个u10的文件,然后mount  /dev/md1 /u10进行挂载

现在开始测试,mdadm /dev/md1 -f /dev/sdb5

-f:表示无效

这里为什么是sdb5,因为我将一块硬盘,全部进行了扩展分区,然后将扩展分区里面的所有空间分成了若干个相同大小的逻辑分区,然后将逻辑分区模拟单个盘进行实验

使用cat  /proc/mdstat进行查看情况,这里可以发现sdb5后面跟了个(F),说明sdb5处于故障状态

使用mdadm -D /proc/mdstat查看设备详细信息

使用madam /dev/md1 -r /dev/sdb5移除sdb5盘

再次使用mdadm -D /dev/md1查看一次有什么变化,发现sdb5被移除

最后使用mdadm /dev/md1 -a /dev/sdb5将sdb5加回来

继续查看cat /proc/mdstat ,发现加回来了,没有问题

 2、创建raid5,并测试

mdadm -C /dev/md5 -l 5 -n 3 -x 1 /dev/sdb{7,8,9,10}

-x 指定热备盘

cat /proc/mdstat

mdadm -D /dev/md5

mkfs.ext4 /dev/md5

mkdir /u05

mount /dev/md5 /u05

mdadm /dev/md5 -f /dev/sdb7

cat /proc/mdstat这里可以看到图中的sdb7后面有一个“(F)”

mdadm -D /dev/md5

mdadm /dev/md5 -r /dev/sdb7先移除

cat /proc/mdstat在查看,可以看到sdb7已经没有了

mdadm /dev/md5 -a /dev/sdb7把这个加回来看看效果

cat /proc/mdstat可以看到sdb7回来了,并且后面还跟了一个“(S)”,S表示备份盘

3、创建raid10,并测试

mdadm -C /dev/md10 -l 10 -n 4 /dev/sdb{11,12,13,14}

mkfs.ext4 /dev/md10

mount/dev/md10/u10前面已经新建了u10

Lsblk查看,发现上面的riad1、riad5、riad10都挂载成功了

我们先干掉第一块盘

干掉12,发现干不掉(因为没有做备份盘)

七、总结

类型

读写性能

可靠性

磁盘利用率

成本

RAID0

最好

最低

100%

较低

RAID1

读正常;写两份数据

50%

RAID5

读:近似RAID0 写:多了校验

RAID0<RAID5<RAID1

(n-1)/n

RAID0<RAID5<RAID1

RAID6

读:近似RAID0 写:多了双重校验

RAID6>RAID5

RAID6<RAID5

RAID6>RAID1

RAID10

读:RAID10=RAID0 写:RAID10=RAID1

50%

最高

mdadm命令常见参数解释:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、RAID的本质:存储界的瑞士军刀
  • 二、主流RAID级别性能矩阵
  • 三、技术细节:RAID5的异或运算原理
  • 四、必须知道的RAID陷阱
  • 五、新型存储方案冲击下的RAID
  • 六、三个实例(raid1、raid5、raid10)
    • 1、创建raid1,并测试
    •  2、创建raid5,并测试
    • 3、创建raid10,并测试
  • 七、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档