本文来自知乎大神“阵列存储专家”,原文戳→。
关于raid的历史,我不去赘述,很多资料可以看。给大家一个某百科的链接,可以学习最基础的信息。虽然这个某百科的信息也不够端正丰满,但是基础信息还是足够的。
我是反对现在把raid称为廉价磁盘冗余阵列的,因为现在的raid早就不再“廉价”。它是一个非常高级的工具,在我们看不到的背后,有大量的raid在参与到我们的日常生活和工作,固态硬盘的内部,手机的存储,到处都是“raid”的身影。raid就应该叫做独立磁盘冗余阵列,简称磁盘阵列。叫它廉价XXX实际上影响了大多数人对它的认知。百科们应该把“廉价”的称呼定语去掉了。
百科们应该把“廉价”的称呼定语去掉了
最初的时候,磁盘阵列的确使用相对廉价的方式提供大容量的存储和一定得容灾能力。本质上是对磁盘使用更加高级的管理方式提高存储环节的生产效率。这种管理方式和企业内对人员管理提高效率的原理都是一样的。所以它确实有用。而随之产生的raid5和后来的raid6也的确给人类的生产生活做出了巨大的贡献。
但是,很长一段时间以来,中文互联网大量充斥着对raid5的偏见和诋毁,有大量的人因为只学习到了皮毛然后又不愿花时间深入学习raid,发出大量“我把raid看透了,它很差,特别是raid5是最差的”这类的得不到就拉仇恨声音。这些人都是使用放大个别缺点,歪曲正常状态,然后攻击整体的手段。都是互联网上常见的抹黑方式。曾经甚至有人叫嚣,单盘2T组建的raid5重建失败率大于98%。真心不懂这些人怎么就能愚昧到这种程度呢?它那套公式计算出来的结果明明和现实大相径庭,但是依然嘴比补天石还硬。看来就像某位知名人士说的,“不要低估有些知识分子的愚蠢和坏,否则是要吃大亏的”。不过最近我看到某些人开始说raid5的重建失败率在百分之几到十几了,这是不是也能算一种进步呢?不置可否啊。
本质上,raid是一种对磁盘的管理方式,raid5和6更是目前最先进的磁盘管理方式之二,他们的效率是目前最高的,当然还有延伸出来的raid50和raid60。我们应该像发明并改进raid的科学家致敬,是他们让我们可以更加放心的存储数据,也让我们有机会去“不后悔”。让我们可以更好的保存我们不想丢失的照片,视频,以及其他文件,至少在我们有生之年,让我们把自己的一生都保存好。
下面稍微深入说一下raid5,中文互联网中的那些嘴硬份子攻击最多的就是raid5,它们攻击的方向主要是两个,一个是raid5写入慢,一个是raid5如果出现一盘损坏后重建失败率高,特别是重建失败率是攻击的重灾区。我下面就一个个来说。
说raid5写入慢,是因为raid5有写惩罚,即使是新的数据写入,raid5也需要数据拆分,xor计算,写入数据,写入检验数据,这些步奏,这些操作会导致机械盘的延迟被触发,而这个延迟对机械盘体系来说就是致命的速度降低了,如果是读改写那么写惩罚甚至是4倍,同时每一倍之间都有个机械盘的寻道时间在降低速度,所以raid5的写入会慢。关于这方面大家有兴趣也可以搜索并深度了解一下,不过中文的这方面知识依然不是很准确,甚至没人去解释清楚,为什么软阵列的raid5,即使是全新写入也会那么慢。就raid5来说,不管是教科书还是中文网,只要说到raid5就会说到写惩罚,一片raid5写入性能差的声音。但是没人告诉你,管理手段是可以升级的,raid5的写惩罚是可以得到有效解决的。当硬件性能足够,管理方法效率足够的时候,可以让你体会不到raid5的写惩罚。比如,硬阵列卡,硬阵列卡其实是一套嵌入式系统,它的核心是roc芯片,和手机的soc类似。同时和手机soc有视频编解码引擎一样,roc有专门的xor计算引擎,高效率的进行xor运算。硬阵列卡上还有ram,这个ram很关键,它实际上是阵列卡这个嵌入式系统的内存,而不仅仅是大家口中的“缓存”。这套系统可以让我们获得raid5或者6从头到尾的高速写入,而不是“缓存”那种用尽就掉速的体验。为什么?因为和写惩罚有关的操作都在阵列卡的内存里完成了,内存的速度和机械硬盘相比完全无视这个2到4倍的“写惩罚”。而不是有些半吊子误导大家的它仅仅是“缓存”。同时,阵列卡的内存是ecc内存,基本解决了内存出错的问题,阵列卡还支持意外断电保护内存数据的技术,这同样是先进的“管理方式”。只有这样我们才能放心的使用高速raid5。
软阵列的raid5,理论上也能实现这种性能,代价就是CPU的大量占用和内存的占用,但是现实中大家常用的nas也好,其他系统也好都没有软阵列能达到或者接近硬阵列的速度,因为相对于硬阵列来说,常见的电脑系统稳定性差的太远,根本不能保证数据安全达到一定级别,同时系统的CPU还得要去处理优先级更高的需求,比如你在打游戏,那么首先要保证游戏的流畅,比如你的nas在处理大量的网络io,那么要保证网络io的流畅,这才是nas的核心。他们的核心从来不是给你最快速的raid5写入体验,差不多能用就行,从来不是让你用的好,用的爽。
实际上pure storage的全闪存服务器就是专门针对闪存设计的阵列,固态和机械盘有本质的不同,它不存在阵列卡,整套系统就是一个大的“阵列卡”。很牛。回头。
再说raid5重建失败,我就很疑惑,为什么一个个都要先设定raid5坏了,再来质疑它的可靠性?是不是有点不正常?任何系统出现故障以后肯定都不再像故障前可靠了,有什么疑问呢?质疑一个故障的设备,还要显得自己很雕,这不是NC吗?raid5出现一盘损坏,可靠性就和raid0类似了,自然变得不那么可靠了,但是raid5没出现故障的时候,你敢说它可靠性差?raid5难道不比单盘更安全吗?不比raid0更是安全的多吗?raid5给了你保护数据的机会,你却像它捅了你的菊花一样仇视它,这是不是可以叫忘恩负义呢?
raid5给了你保护数据的机会
当然,肯定有人说,raid5不就是单盘坏了才体现价值的吗?没错啊,仅仅单盘坏了它价值不在吗?数据依然可以读写,你读出来备份不就完了。它的价值有没有体现?你还要再假设重建中再故障,这不是NC是什么。有这种想法,你用raid6不就完了。如果raid6都不够你对安全的追求,还有3-2-1的备份体系,你还可以每个体系都用raid6去备份,如果还不够,还有3-2-1-1的备份体系,你有多大需求就有多大的方案。
下面再说说raid5重建失败怎么来的,还有正确的raid5使用姿势,大家坐好,听讲,要记得,听人劝吃饱饭!
raid5重建失败大多数是人为原因。主要是两个方面,一个是垃圾佬的整套硬件本身不稳定,特别是供电,垃圾佬的供电五花八门,一个个基本原理都不懂,盲目使用各种便宜货,各种矿电。硬盘是计算机中对供电最敏感的设备,对波纹承受能力极低,重建高压工作,供电不好,必然出事。二是,用户不做检查,盲目重建,特别是软阵列,很多时候软件缺乏初始化,缺乏巡读和一致性检查,如果raid5故障后,剩下的盘本身就不健康,用户还硬是去重建,这也是自寻死路。要知道,软阵列不能完全解决写惩罚,重建速度是非常慢的。高压力工作时间更长,更容易二次故障。
下面说raid5的正确使用姿势,raid5是一种先进的硬盘管理和使用技术,但是任何技术都只能给你帮助,让你的存储更可靠,更高速,更大。但是它不可能给你绝对的安全,如果希望追求更安全,那么就要加上人类的自我管理。如果是Windows,对于硬阵列,有类似硬盘哨兵这样的软件可以用,定期检查raid中的硬盘健康状态,一周一次,一月一次都可以,发现坏道盘就尽早更换。如果raid5掉了一个盘就抓紧看看其他盘的健康状态,如果有不健康的,那就必须先备份数据。如果是nas之类的软阵列,也一样定期查看硬盘smart信息,坏道盘和警告盘一定要抓紧换,别等着彻底故障。二是,所有软阵列一旦出现故障,都最好第一时间备份数据,至少是重要数据,然后重建阵列,甚至删除阵列再重新建立阵列。不管软硬raid5都建议进行初始化,虽然花时间但是更加安全可靠!
最后,硬盘的供电一定要重视!