Dec 30.2010

 

       在当今的企业中,很少有IT部门有迫切的需要考虑除了上述这四种RAID之外的驱动器配置,不管他们是否已经部署RAID软件或者硬件。以前,RAID阵列决策中最主要的一个考虑因素是可用容量。这是因为以前驱动器不仅昂贵而且容量很小。
  现在,驱动器都很大因此存储容量基本不是什么问题,至少不再像几年前那样,而且成本也大幅度降低,购买更多驱动器以获得更高冗余度也不是什么难事。当容量是主要考虑因素的时候,RAID 5是一个比较受欢迎的选择,因为相比其他阵列类型来说,RAID 5损失的容量最少。
  我们可以接受三个驱动器中丢失任何一个驱动器。与丢失两个驱动器中任何一个相比这并没有那么令人害怕。但如果是一个大型阵列呢,例如16个驱动器?能够安全地损失16个驱动器中的一个,这的确会让我们质疑可靠性。
  这时候RAID 6填补了这一空白。RAID 6常被用于大型阵列中,损失的存储容量和性能非常小,而且接受丢失任何两个驱动器。带校验码的条带化RAID的支持者经常引用这些数字来安抚管理层,称RAID 5/6可以提供足够“物廉价美”的存储子系统。但是用户还有其他因素需要考虑。
  RAID 10应用
  在谈论RAID可靠性(很少被提及的一个话题)中,有一个几乎被忽略掉的问题,那就是校验计算可靠性。
  对于RAID 1和RAID 10来说,不需要通过计算来创建带校验的条带。数据只是以一种稳定的方式被写入。当一个驱动器发生故障,它的另一个配对驱动器就会接过负载,在更换驱动器之前驱动器性能可能会有一些降低。既没有影响现有驱动器数量的重建流程,也没有校验条带的重建。
  带校验的RAID阵列操作中包括计算出结果是什么以及应该把哪些放到驱动器上。虽然这种计算很简单,但是也有可能出错。
  RAID 1或者RAID 10出现阵列控制故障从理论上来说可能是向驱动器内容中写入坏数据,但是控制器中并没有一个能对其本身进行驱动器更改的流程。因此这种情况发生的几率非常低,因为除了创建镜像之外系统没有一个“重建”流程。
  当带有检验的阵列执行重建操作的时候,他们通常会实施一个复杂的流程,逐步检查阵列的所有内容,将丢失数据写回到被替代的驱动器上。对其本身来说这是非常简单的,而且不需要有什么担心。
  我和其他人首先注意到一个有些不同的场景,由于与阵列的连接器松动所导致的磁盘连接性的丢失。随着时间的推移,服务器中的驱动器有可能会松动,尤其是在一个持续运行的系统中服务好几年以后。
  在极端的情况下,当阵列控制器认为一个或者多个驱动器连续发生故障,驱动器的好数据会被坏校验数据所覆盖,然后重新在线并进行重建。在这种情况下,驱动器本身并没有发生故障,而且也没有数据丢失。理论上来时需要的只是重新调整驱动器的位置就可以。
  在热插拔系统中,驱动器重建管理往往是根据故障驱动器的移除或者更换规则而实现自动化的。因此,这种丢弃和更换驱动器的流程可以在没有任何人为干预的情况下进行。在这个过程中,驱动器系统面临风险,如果驱动器阵列再次发生这种情况,根据驱动器的状况,系统开始对坏数据进行条带化,覆写好的文件系统。
  从理论上来说,这种情况是不会发生的,而且有专门的人员会预防这种情况的发生。但是判断底层驱动器控制器当前和过去的情况以及保存数据的质量并非表面上看到的那样容易,而且有可能会发生错误。
  虽然不太可能,但是这种情况还是会发生的,同时也让RAID 5和RAID 6系统风险计算变得难上加难。除了阵列可以接受驱动器故障之外,我们必须考虑校验故障的风险。随着驱动器可靠性不断提高,校验故障风险的重要性也突显出来。
  除此之外,因为校验计算的缘故,RAID 5和RAID 5校验还给系统带来更多开销。校验计算一般是通过高级RAID硬件来处理的。这种计算给驱动器子系统带来了延迟,这种延迟很大程度上取决于硬件和软件两个方面。这使得不同类型RAID之间性能水平对比变得更加困难,因为每一种部署都是独一无二的。
  现在,RAID选择中一个最大的问题可能就是我们可以方便地获得存储效率和驱动器容错的测量标准,但是可靠性和性能方面的指标却非常几乎没有。测量标准所带来的危险之一就是,人们将重点关注那些很容易测量的项目上,而忽略了那些不方便测量的项目,尽管这些因素可能会有很重要的影响。
  虽然现在所有类型的RAID都找到了自己的一席之地,但关键的是要结合使用背景以及可接受的风险范围来进行考虑。我们应该努力将整个行业从默认RAID 5引导到默认RAID 10上来。驱动器很便宜了,但是数据丢失的代价很高。