您现在的位置是:首页 > IT基础架构 > 计算存储 >
四大RAID存储详解
摘要早在我还是一个服务技术新手的时候,我对系统管理一无所知,我们一直想要了解的话题之一就是RAID——廉价冗磁盘阵列(Redundant Array of Inexpensive Disks)。...
早在我还是一个服务技术新手的时候,我对系统管理一无所知,我们一直想要了解的话题之一就是RAID——廉价冗磁盘阵列(Redundant Array of Inexpensive Disks)。
它是解决我们所有存储难题的钥匙。有了RAID,我们可以扩大文件系统,获得更好的吞吐量甚至是增加冗余性,让我们幸免于磁盘丢失事件,尤其是在那些经常发生此类事件的日子里。
随着NAS和SAN存储应用的出现,使用物理存储的技巧和利用这些技巧来满足系统需求快速地消失了。这并不是一件好事。因为我们将存储卸载到外置设备上的做法并没有改变这样一个事实,我们需要从根本上了解我们的存储情况,通过配置存储来满足系统的特定需求。
最近五到十年似乎出现这样一种误解,认为RAID可以等同于系统备份。而事实并非如此。RAID只是容错的一种形式。
备份和容错从概念上来讲是完全不同的。备份让我们可以在灾难发生之后实施恢复。而容错旨在降低灾难发生的几率。容错就像是在悬崖上搭建一个防护网,而备份就像是悬崖下面建造一座医院。你恐怕永远也不希望既没有防护网也没有医院,但他们是完全不同的两个事物。
一旦我们为驱动器部署了RAID,不管是本地附加还是在存储网络中的远程应用,现在我们有四种主要的RAID解决方案可以用于业务中:RAID 1(镜像)、RAID 5(带校验的磁盘条带)、RAID 6(带双重校验的磁盘条带)以及RAID 10(带有条带的镜像)。
还有其他类型的等解决方案,例如RAID 0,但如果你真正了解你的驱动器子系统需求,那么你就知道这些只能用于少数环境中。另外人们使用的还有RAID 50和RAID 51,但是更加少见,而且效率并不那么高。十年前,RAID 1和RAID 5是很常见的,但是今天我们已经有了更多的选择。
下面让我们来逐个分析这些选择并讨论一些基本的数据。在我们的例子中,我们将使用“n”来代表阵列中的驱动器数量,“s”代表任何单个驱动器的大小,以此来表示一个阵列的可用存储空间,更直观地进行存储容量对比。
RAID 1
这种类型的RAID是对驱动器进行镜像。你有两个驱动器,它们同时在一起做所有事情,因此称做“镜像”。因为这个过程非常简单,所以镜像是非常稳定的,但是如果你之前从来没有使用过RAID的话,这就要求你必须购买是实际需要两倍的驱动器,因为第二个驱动器作为冗余之用。
RAID 1的好处在于你可以确保写入到磁盘中的每个字位都被写入两遍以达到保护的目的。因此,使用RAID 1我们的存储容量应该是(n*s/2)。RAID 1比非RAID驱动器性能要略高一些,写入速度接近于非RAID系统,而读取速度几乎是大多数情况下的两倍,因为在读取操作过程中驱动器可以并行地进行访问,从而提高了吞吐量。RAID 1限制于两个驱动器。
RAID 5
带校验的磁盘条带。在这种类型的RAID中,数据以复杂条带的形式写入到阵列中的所有驱动器中,同时所有驱动器中都有分布数校验块。这样RAID 5就可能使用三个或者更多磁盘组成的任意大小的阵列,只牺牲相当于一个磁盘的存储容量用于校验。但是这种校验是分布式的,并不单独存在于任何一个物理磁盘中。
RAID 5由于在大型阵列中牺牲的存储容量较少,所以它具有成本效益的特点,从而被人们所广泛使用。与镜像不同的是,带有校验的条带要求必须在磁盘之间进行针对每个写入条带的计算,这造成了一部分的开销。因此,吞吐量并不总是一个容易计算的项目,它在很大程度上取决于系统在做校验计算时候的计算能力。
计算RAID 5的容量非常简单:就是((n-1)*s)。RAID 5阵列可以避免这列中任何单个磁盘的丢失。
RAID 6
带双重校验的磁盘条带。RAID 6与RAID 5非常相似,但它的每个条带使用两个校验块,而不是一个,这加强了应对磁盘故障的保护能力。
RAID 6是RAID家族中的新成员。RAID 6是其他几个RAID类型实现标准化几年之后增加的。RAID 6比较特殊,因为它可以承受阵列中任意两个驱动器的故障,同时防止数据丢失。但是为了配合额外的冗余度,RAID 6阵列需要牺牲阵列中相当于两个驱动器的容量,并要求真列中最少有四个驱动器。RAID 6的容量可以用((n-2)*s)来计算。
RAID 10
带条带的镜像。从技术上来说,RAID 10是一种混合的RAID,包括存在于一个非校验条带(RAID 0)中的一对RAID镜像。
当一个阵列中只有两个驱动器的时候,很多厂商会称其为RAID 10(或者RAID 10+),但从技术上来说这应该是RAID 1,因为阵列中至少有四个驱动器才会发生条带化。对于RAID 10来说,驱动器必须是一对一对添加的,因此阵列中的驱动器数量只可能是偶数。
RAID 10可以在丢失近半数驱动器组的情况下正常运转,同是最多只能承受每个驱动器中一个驱动器发生故障或者丢失。RAID 10不包含校验计算,这使得它相对RAID 5和RAID 6来说具有一定的性能优势,而且阵列对计算能力的要求也更低。RAID 10提供了超过任何一种常见类型RAID的读取性能,因为在读取操作中阵列中的所有驱动器都可同时使用。但是RAID 10的写入性能要低很多。RAID 10的容量计算方法和RAID 1相同,都是(n*s/2)。
在当今的企业中,很少有IT部门有迫切的需要考虑除了上述这四种RAID之外的驱动器配置,不管他们是否已经部署RAID软件或者硬件。以前,RAID阵列决策中最主要的一个考虑因素是可用容量。这是因为以前驱动器不仅昂贵而且容量很小。
现在,驱动器都很大因此存储容量基本不是什么问题,至少不再像几年前那样,而且成本也大幅度降低,购买更多驱动器以获得更高冗余度也不是什么难事。当容量是主要考虑因素的时候,RAID 5是一个比较受欢迎的选择,因为相比其他阵列类型来说,RAID 5损失的容量最少。
现在我们还有其他方面的顾虑,主要集中在数据安全和性能方面。多花一些钱来加强数据保护应该是一个显而易见的选择。RAID 5只能接受损失一个驱动器。对于只有三个驱动器的阵列来说,这相比RAID 1所提供的保护能力来说还要更危险一些。
我们可以接受三个驱动器中丢失任何一个驱动器。与丢失两个驱动器中任何一个相比这并没有那么令人害怕。但如果是一个大型阵列呢,例如16个驱动器?能够安全地损失16个驱动器中的一个,这的确会让我们质疑可靠性。
这时候RAID 6填补了这一空白。RAID 6常被用于大型阵列中,损失的存储容量和性能非常小,而且接受丢失任何两个驱动器。带校验码的条带化RAID的支持者经常引用这些数字来安抚管理层,称RAID 5/6可以提供足够“物廉价美”的存储子系统。但是用户还有其他因素需要考虑。
(本文不涉密)
责任编辑:
下一篇:选择灾难恢复外包的10个理由