记得之前在idc做私有运维的时候,凌晨3点,我正在家里睡得香甜,突然被电话铃声吵醒。公司的监控系统疯狂报警,说是数据库服务器出问题了。我迷迷糊糊爬起来远程一看,好家伙,硬盘直接罢工了。不过还好,当初配置服务器的时候做了RAID,数据一点都没丢,系统照样跑得欢快。

这件事让我想起来,很多朋友对RAID这个东西还是一知半解的。今天就跟大家聊聊这个能让你数据"死不了"的神器到底是怎么回事。

RAID到底是个啥玩意?

1988 年美国加州大学伯克利分校的 D. A. Patterson 教授等首次在论文 “A Case of Redundant Array of Inexpensive Disks” 中提出了 RAID 概念 [1] ,即廉价冗余磁盘阵列( Redundant Array of Inexpensive Disks )。由于当时大容量磁盘比较昂贵, RAID 的基本思想是将多个容量较小、相对廉价的磁盘进行有机组合,从而以较低的成本获得与昂贵大容量磁盘相当的容量、性能、可靠性。随着磁盘成本和价格的不断降低, RAID 可以使用大部分的磁盘, “ 廉价 ” 已经毫无意义。因此, RAID 咨询委员会( RAID Advisory Board, RAB )决定用 “ 独立 ” 替代 “ 廉价 ” ,于时 RAID 变成了独立磁盘冗余阵列( Redundant Array of Independent Disks )。但这仅仅是名称的变化,实质内容没有改变。

RAID 这种设计思想很快被业界接纳, RAID 技术作为高性能、高可靠的存储技术,已经得到了非常广泛的应用。 RAID 主要利用数据条带、镜像和数据校验技术来获取高性能、可靠性、容错能力和扩展性,根据运用或组合运用这三种技术的策略和架构,可以把 RAID 分为不同的等级,以满足不同数据应用的需求。 D. A. Patterson 等的论文中定义了 RAID1 ~ RAID5 原始 RAID 等级, 1988 年以来又扩展了 RAID0 和 RAID6 。近年来,存储厂商不断推出诸如 RAID7 、 RAID10/01 、 RAID50 、 RAID53 、 RAID100 等 RAID 等级,但这些并无统一的标准。目前业界公认的标准是 RAID0 ~ RAID5 ,除 RAID2 外的四个等级被定为工业标准,而在实际应用领域中使用最多的 RAID 等级是 RAID0 、 RAID1 、 RAID3 、 RAID5 、 RAID6 和 RAID10 。

从实现角度看, RAID 主要分为软 RAID 、硬 RAID 以及软硬混合 RAID 三种。

  • 软 RAID 所有功能均有操作系统和 CPU 来完成,没有独立的 RAID 控制 / 处理芯片和 I/O 处理芯片,效率自然最低。
  • Setup RAID0 in Linux
  • 硬 RAID 配备了专门的 RAID 控制 / 处理芯片和 I/O 处理芯片以及阵列缓冲,不占用 CPU 资源,但成本很高。

image-20250816163502352

  • 软硬混合 RAID 具备 RAID 控制 / 处理芯片,但缺乏 I/O 处理芯片,需要 CPU 和驱动程序来完成,性能和成本 在软 RAID 和硬 RAID 之间。

RAID 每一个等级代表一种实现方法和技术,等级之间并无高低之分。在实际应用中,应当根据用户的数据应用特点,综合考虑可用性、性能和成本来选择合适的 RAID 等级,以及具体的实现方式。

你可以把RAID想象成一个团队合作的概念。就像一个人搬砖可能很慢,但是几个人一起搬就快多了;或者一个人生病了,其他人还能顶上去继续干活。RAID就是让硬盘们团结起来,发挥集体的力量。

干过idc的都知道"硬盘不是会不会坏的问题,而是什么时候坏的问题。"这话听起来有点悲观,但确实是事实。机械硬盘里面有那么多精密的机械部件,天天转个不停,迟早会出问题的。

常见的RAID级别都有哪些?

RAID 0 - 性能狂魔

RAID 0是最简单的一种,它把数据分成小块,然后分别写到不同的硬盘上。比如你要存一个文件,RAID 0会把这个文件切成几段,第一段存到硬盘A,第二段存到硬盘B,以此类推。

这样做的好处是读写速度飞快,因为多块硬盘同时工作嘛。如果你有两块硬盘做RAID 0,理论上速度能翻倍。我之前给一台视频编辑工作站配过RAID 0,4K视频剪辑那叫一个流畅。

但是RAID 0有个致命缺点:任何一块硬盘坏了,整个阵列的数据就全完蛋了。而且因为用的硬盘多了,坏的概率反而增加了。所以RAID 0适合那些对性能要求极高,但对数据安全性要求不高的场景。

image-20250816163827174

RAID 1 - 安全第一

RAID 1就是镜像,简单粗暴。你写什么数据,两块硬盘都会存一份完全一样的。就像照镜子一样,左边写个A,右边也有个A。

这种方式最大的优点就是安全,一块硬盘坏了,另一块还有完整的数据。而且读取性能还能提升一些,因为系统可以从两块硬盘中选择响应更快的那个来读数据。

缺点也很明显:浪费空间。你买了两块1TB的硬盘,实际只能用1TB的空间,另外1TB都用来做备份了。对于个人用户来说,这个成本有点高。

我家里的NAS就用的RAID 1,虽然空间利用率只有50%,但是睡觉都踏实。毕竟里面存的都是家庭照片和重要文档,丢了可就真的找不回来了。

image-20250816163849733

RAID 5 - 平衡之道

RAID 5算是比较经典的一种配置了,至少需要3块硬盘。它的原理稍微复杂一点,不是简单的镜像或者条带化,而是用了一种叫做"奇偶校验"的技术。

简单来说,RAID 5会把数据分成块存储在不同硬盘上,同时还会计算出一个校验信息,也分散存储。这样任何一块硬盘坏了,都可以通过其他硬盘的数据和校验信息把丢失的数据算出来。

举个例子,假设你有A、B、C三个数据块,RAID 5会把A存在硬盘1,B存在硬盘2,C存在硬盘3,然后把A+B+C的校验信息分散存在三块硬盘上。如果硬盘1坏了,系统可以通过B、C和校验信息重新计算出A。

RAID 5的好处是在性能、容量和安全性之间找到了一个平衡点。3块硬盘的情况下,你能用到2块硬盘的容量,还能承受1块硬盘的故障。读取性能也不错,因为可以并行读取。

但是RAID 5也有个问题,就是写入性能相对较差。因为每次写数据都要重新计算校验信息,这个过程比较耗时。而且如果在重建阵列的过程中又坏了一块硬盘,那就彻底完蛋了。

How to Recover Data from RAID 5: configuration differences, functional problems and their solutions

RAID 6 - 双重保险

RAID 6可以看作是RAID 5的加强版,它使用两种不同的校验算法,可以同时承受两块硬盘的故障。最少需要4块硬盘才能组建。

这种配置在企业环境中比较常见,特别是那些对数据安全性要求极高的场景。虽然写入性能比RAID 5还要差一些,但是安全性确实提高了不少。

我之前在一家金融公司工作的时候,他们的核心数据库就用的RAID 6。虽然成本高一些,但是考虑到数据的重要性,这点投入还是值得的。

image-20250816164201460

RAID 10 - 土豪专用

RAID 10其实是RAID 1和RAID 0的组合,先做镜像再做条带化。至少需要4块硬盘,而且必须是偶数块。

这种配置的性能和安全性都很好,但是成本也很高。4块硬盘只能用到2块的容量,空间利用率只有50%。一般只有那些不差钱的企业才会用。

image-20250816164248870

RAID的实现方式

硬件RAID

硬件RAID是通过专门的RAID卡来实现的,这种卡有自己的处理器和内存,可以独立处理RAID相关的计算,不占用服务器的CPU资源。

硬件RAID的性能通常比较好,特别是在写入密集的场景下。而且即使操作系统崩溃了,RAID功能也不会受影响。不过硬件RAID卡的价格不便宜,好一点的卡要几千块钱。

软件RAID

软件RAID是通过操作系统来实现的,比如Linux的mdadm,Windows的动态磁盘等。这种方式不需要额外的硬件,成本比较低。

软件RAID的灵活性比较好,可以随时调整配置。而且现在的CPU性能都很强,软件RAID的性能也不差。特别是对于RAID 1这种简单的配置,软件RAID完全够用。

不过软件RAID有个缺点,就是依赖于操作系统。如果系统出问题了,RAID功能可能也会受影响。而且在系统启动的时候,RAID还没有初始化完成,可能会有一些兼容性问题。

主板集成RAID

现在很多主板都集成了RAID功能,通常叫做"假RAID"或者"混合RAID"。说它是假RAID,是因为它实际上是软件RAID,只不过驱动程序比较底层,看起来像硬件RAID。

这种RAID的性能一般,功能也比较有限,通常只支持RAID 0、1、10等简单配置。不过对于个人用户来说,也算是够用了。

RAID配置的一些坑

硬盘选择很重要

做RAID的时候,最好选择同样型号、同样容量的硬盘。虽然理论上不同的硬盘也能组RAID,但是性能会受到最慢那块硬盘的限制。

我之前见过有人用一块7200转的硬盘和一块5400转的硬盘做RAID 1,结果整个阵列的性能都被5400转的硬盘拖累了。

而且最好是同一批次购买的硬盘,这样可以避免因为固件版本不同导致的兼容性问题。

定期检查很必要

RAID不是配置好了就万事大吉的,需要定期检查阵列的状态。特别是RAID 5和RAID 6,如果有硬盘出现坏道但还没有完全失效,可能会影响整个阵列的性能。

我建议至少每个月检查一次RAID状态,有条件的话可以设置监控脚本,一旦发现问题立即报警。

重建时间要考虑

当RAID阵列中有硬盘故障的时候,需要进行重建。这个过程可能会很长,特别是现在硬盘容量越来越大。我之前遇到过一个4TB的RAID 5重建,整整跑了16个小时。

在重建过程中,阵列的性能会明显下降,而且风险也比较高。如果这时候再坏一块硬盘,数据就真的救不回来了。所以一定要及时更换故障硬盘,不要拖延。

有些人觉得RAID 5坏了一块硬盘还能正常工作,就不着急换。这种想法很危险,我见过好几次因为拖延更换硬盘导致数据丢失的案例。

热备盘的作用

如果条件允许,建议配置热备盘。热备盘就是一块待机的硬盘,平时不参与数据存储,一旦有硬盘故障,它会自动顶上去开始重建。

这样可以大大缩短故障恢复时间,降低数据丢失的风险。虽然会增加一些成本,但是对于重要的系统来说,这个投入是值得的。

RAID的性能特点

不同的RAID级别在性能上差别还是挺大的。RAID 0的读写性能都很好,因为可以并行访问多块硬盘。RAID 1的读性能不错,但写性能没什么提升,因为要同时写两块硬盘。

RAID 5的读性能还可以,但写性能比较差。每次写数据都要重新计算校验信息,这个过程比较耗时。特别是小文件的随机写入,性能下降会比较明显。

我之前做过一个测试,同样的硬盘配置,RAID 0的写入速度能达到200MB/s,RAID 1大概是120MB/s,而RAID 5只有80MB/s左右。当然这个数据仅供参考,实际性能还要看具体的硬件配置和应用场景。

image-20250816164621136

企业级应用的考虑

在企业环境中,选择RAID配置要考虑的因素更多。数据库服务器通常对随机读写性能要求比较高,RAID 10是个不错的选择。虽然成本高一些,但是性能和可靠性都有保障。

文件服务器主要是顺序读写,对容量要求比较大,RAID 5或者RAID 6比较合适。Web服务器如果主要是静态内容,RAID 1就够用了。

还有一个需要注意的是,企业级硬盘和消费级硬盘在RAID环境下的表现差别很大。企业级硬盘通常有更好的错误恢复机制,在RAID环境下更稳定。

消费级硬盘在遇到坏道的时候,可能会花很长时间尝试恢复,这会导致RAID控制器认为硬盘已经失效,从而踢出阵列。而企业级硬盘会快速放弃无法恢复的扇区,避免影响整个阵列的性能。

SSD时代的RAID

现在SSD越来越普及,SSD的RAID配置和传统机械硬盘有一些不同的考虑。

首先,SSD的随机读写性能本来就很好,做RAID 0的性能提升可能没有机械硬盘那么明显。而且SSD的可靠性相对较高,做RAID 1的必要性也没那么大。

不过SSD有个特点就是写入寿命有限,做RAID 5的话,频繁的校验计算会增加写入量,可能会缩短SSD的使用寿命。

我个人觉得,如果用SSD做RAID,RAID 1是个比较好的选择。既能提高可靠性,又不会过度增加写入量。

监控和维护

RAID配置好了之后,监控和维护工作也很重要。大部分RAID卡都有自己的监控软件,可以实时查看阵列状态、硬盘健康度等信息。

我建议设置邮件报警,一旦有硬盘出现问题,立即通知管理员。有些高端的RAID卡还支持SNMP,可以集成到企业的监控系统中。

定期的维护也不能少,比如检查硬盘的SMART信息,看看有没有预警信号。有些硬盘在完全失效之前会有一些征兆,比如坏道数量增加、读取错误率上升等。

还有就是要定期测试数据恢复流程,确保在真正出问题的时候能够快速恢复。我见过一些公司,RAID配置得很好,但是从来没有测试过恢复流程,真正出问题的时候手忙脚乱。

备份还是王道

虽然RAID能提高数据的安全性,但它不能替代备份。RAID只能防止硬盘故障,但防不了误删除、病毒感染、火灾水灾等其他风险。

我一直坚持3-2-1备份原则:至少3份数据副本,存储在至少2种不同的介质上,其中至少1份存储在异地。RAID只是这个备份策略中的一环。

有些人觉得做了RAID就万无一失了,这种想法很危险。我之前遇到过一个案例,公司的服务器做了RAID 5,但是因为机房进水,整台服务器都报废了。幸好他们还有异地备份,才没有造成重大损失。

成本效益分析

做RAID肯定是要增加成本的,不管是硬件成本还是管理成本。在决定是否使用RAID之前,要做好成本效益分析。

对于个人用户来说,如果只是存储一些娱乐内容,可能没必要做RAID。但是如果存储的是工作文档、家庭照片等重要数据,做个RAID 1还是很有必要的。

对于企业用户,要根据数据的重要性和业务需求来选择。核心业务系统肯定要做RAID,而且要选择可靠性高的配置。一般的办公系统可能就没必要了。

实际部署建议

如果你准备部署RAID,我建议先从简单的配置开始。RAID 1是个不错的入门选择,配置简单,可靠性高。

选择硬件的时候,不要贪便宜。好的RAID卡和企业级硬盘虽然贵一些,但是稳定性要好很多。我见过太多因为使用劣质硬件导致的问题。

配置完成后,一定要做充分的测试。模拟各种故障场景,确保RAID能够正常工作。还要测试性能,看看是否达到预期。

文档也很重要,要记录详细的配置信息和操作步骤。万一出问题的时候,这些文档能帮你快速定位和解决问题。

最后

RAID技术发展到现在已经很成熟了,是提高数据安全性和系统性能的重要手段。不过它不是万能的,需要根据实际需求选择合适的配置,并且要配合完善的备份策略。

记住,硬盘一定会坏,这是不可避免的。我们能做的就是在它坏之前做好准备,让数据的损失降到最低。RAID就是这个准备工作中很重要的一环。

最后提醒一句:配置RAID之前一定要备份数据。虽然出问题的概率不大,但万一呢?安全第一,小心驶得万年船。

如果这篇文章对你有帮助,别忘了点赞转发支持一下!想了解更多运维实战经验和技术干货,记得关注微信公众号@运维躬行录,领取学习大礼包!!!我会持续分享更多接地气的运维知识和踩坑经验。让我们一起在运维这条路上互相学习,共同进步!

公众号:运维躬行录

个人博客:躬行笔记

标签: none