如今,大家都在谈论大数据、数据分析和与之相关的商业智能,但企业在充分利用这些数据之前,必须先弄清楚如何存储这些海量数据。管理一个庞大的数据集(PB级或更大)与管理传统的大型数据集完全不是一码事。在线照片网站Shutterfly就是一个典型的例子。
Shutterfly是一家在线照片网站,它与众不同之处在于允许用户存储照片的数量不受限制,这些照片以原始分辨率来保存,不用降低分辨率,而且它还保证从不删除用户的一张照片。Shutterfly公司高级副总裁兼CTO Neil Day说:“我们的照片库的数据量超过了30PB,其增长速度比客户数的增长速度还快。我们每获得一个客户,他们做的头一件事就是向我们网站上传一堆照片,然后,等他们喜欢上我们的服务后,他们做的头一件事就是上传另一堆照片。”
我们不妨了解一下数据规模:1PB相当于1000TB或100万GB。美国宇航局哈勃太空望远镜前20年观测到的图像数据量大约为45TB,而以128kB/s速度记录的1TB压缩音频含有大约1.7万小时的音频。
PB级基础设施
Neil Day说:“PB级数据量对基础设施的要求完全不一样,很难构建和维护。PB级基础设施面临的管理负担与传统大规模数据集相比简直有天壤之别,其不同就像处理笔记本电脑上的数据和RAID阵列上的数据一样。”
Neil Day在2009年加入Shutterfly时,存储就已成为该公司最大的开支项目之一,而且飞速增长,不仅原始存储容量猛增,所配备的人员也激增。Neil Day说:“每当增加几个PB的存储量,就意味着我们需要增加一个存储管理员来支持该物理和逻辑基础设施。”他表示,由于数据集庞大,“系统出现问题的频率也增加许多,超大存储库的管理人员经常要处理硬件故障。大家最困扰和需要解决的根本问题是,一些磁盘在使用一段时间后会出故障,你如何确保数据仍然可用,而性能又不会降低?”
标准的故障切换解决之道是复制,通常采用RAID阵列的形式。Neil Day表示,其实面对大规模数据,RAID所带来的问题比它能解决的问题还要多。在传统的RAID数据存储方案中,每个数据的副本都被镜像,并存储在阵列的不同磁盘上,以确保数据的完整性和可用性。但这意味着每个被镜像和存储的数据都变大了,需要比数据本身大5倍多的存储容量。随着RAID阵列中使用的磁盘容量越来越大(从密度和功耗的角度看,3TB容量的磁盘很有吸引力),让替换故障磁盘的正常磁盘恢复到完全奇偶校验所需的时间也变得越来越长。
Neil Day说:“实际上,我们的RAID还没有遇到过任何操作问题。我们看到的是,随着磁盘容量变得越来越大,当我们遇到任何部件故障时,恢复到完全冗余系统所需的时间增加了,生成奇偶校验与相应数据集的大小成正比。我们在基础设施中开始使用1TB和2TB磁盘后看到,恢复到完全冗余状态的时间变得相当长。趋势没有朝着正确的方向发展。”
采用纠删码的存储
对像Shutterfly这样的公司而言,可靠性和可用性至关重要,它需要企业级存储。Neil Day表示,急剧增长的存储成本使价格实惠的大众化系统变得极具吸引力。当Neil Day及其团队在市场上调查潜在的技术解决方案,以控制Shutterfly的存储成本时,他们对一项名为纠删码(erasure code)的技术产生了兴趣。
早期提供基于纠删码的解决方案厂商之一是总部设在美国芝加哥的Cleversafe公司,它添加了位置信息,以创建其所谓的分散编码(dispersal coding),让用户可以在不同的地理位置(如多个数据中心)存储数据块(chunk),即该公司所说的数据片(slice)。
每个数据片本身从数学上来讲毫无用处,这就能确保隐私性和安全性。Cleversafe公司表示,由于信息分散技术只使用一个数据实例来确保数据的完整性和可用性,而不是像RAID那样使用多个数据副本,这样就可以节省多达90%的存储成本。
Cleversafe公司的产品策略、市场营销和客户解决方案副总裁Russ Kennedy说:“当你重组数据时,不一定需要有每一块数据。我们把生成的数据块的数量称为宽度,把重组数据所需的最小数量称为阈值。生成的数据块的数量与重组需要的最小数量之间的差异决定了其可靠性。同时,即使丢失了节点和磁盘,仍能恢复数据原来的形状。通过RAID所能获得的最高可靠性是双奇偶校验,也就是说,可以丢失两个磁盘;而借助我们的解决方案,最多可以丢失6个磁盘。”
纠删码是一种基于软件的技术,这意味着它可以与大众化硬件结合使用,从而进一步降低扩展成本。
构建下一代存储
基础设施
Neil Day说:“当确定了合适的技术后,我们比较了在这个领域能提供解决方案的多家厂商。我们开始曾考虑自己来构建,但是觉得如果我们能找到一家完全满足我们的要求,并且系统又相当可靠的公司,那么对我们来说更合适。”
在Shutterfly的实验室里,他们对4家厂商的解决方案进行了评估,并为其数据中心所需的存储设备建立了原型。Neil Day表示,他关注的是性能、可用性、容错性和可管理性方面。对此,他解释说:“我们有一个工作人员专门管理照片库,但2010年后面临的最大问题之一是我们发现照片库越来越庞大。因此,我们不得不扩大员工队伍,但这并不是最好的办法。”后来他发现Cleversafe最能满足Shutterfly的需求,这主要是由于该公司愿意与Shutterfly合作,并根据Shutterfly的需求来定制解决方案。于是这两家公司开始进行了一系列概念证明测试,包括在Shutterfly实验室进行的负载和性能测试。Neil Day和同事们熟悉了操作和性能方面的特点后,在生产环境中部署了一套并行存储基础设施,由其来模拟处理Shutterfly的全部流量。
Neil Day说:“上传的每张照片都写入到我们原有的基础设施和Cleversafe基础设施。这套系统我们运行了6个月,包括节假日。”节假日对Shutterfly来说是高峰期,许多用户利用节假日建立照片簿。
Shutterfly在2011年将Cleversafe的存储解决方案完全投入到了生产环境,用于其照片库,并且从此以后,一直将其用于主照片存储库。
初见成效
Neil Day说:“纠删码从根本上说是一种软件解决方案,使我们可以部署具有成本效益的硬件。从总体拥有成本的角度来看,这给我们带来了巨大的变化。我们与硬件厂商打交道时有了更大的灵活性,并可以保证我们买来的磁盘和支持它们的基础设施的价格最实惠。”他同时表示,管理存储池的工作也大大简化了,“我们只要添加一批新的存储系统,它就会自动添加到指定的任何存储池中,可之前我们每次添加新的存储容量,就不得不做一些相当复杂的管理工作。”
现在,磁盘一旦出现故障或停止运行,Shutterfly的存储基础设施就能将其标记为不可用,将数据改而存储到其他磁盘,同时透明地恢复该磁盘上的数据。Neil Day表示,现在发现故障后,他们可以按照预定的维护时间表更换受影响的基础设施,而不用像以前那样,一个或一组磁盘出现故障后,“全体人员都忙得团团转。”他说,“我们不用再像以前那样迅速增加人员了,虽然我们现在人员仍在增加,但已经比之前使用前一代系统时慢多了,日常维护的工作量也有所下降。管理员能够把更多的时间花在那些有意思的创新项目上,也就是转移到可增值的工作上。这从业务发展的角度和工作满意度来看是好事。”
Shutterfly这家互联网公司处理的数据量比如今大多数企业所要处理的数据量大多了。Neil Day表示,“5年后,会有相当多的公司或机构的数据量达到像我们现在照片库的规模。眼下我们看到,在过去几年里许多应用软件和技术出现,使我们有可能处理非常大的数据集,更深入地了解自身业务。”
Neil Day说:“这是业界迈出的非常可喜的一步。我们正处在大数据的早期阶段。一个值得关注的因素是,随着企业更注重与客户实时交互,更注重在线和移动,更多的海量数据将生成,分析这些数据,将获得真正的商业洞察力。而这一切都有赖于我们能够可靠地存储海量数据。”
链 接
纠删码介绍
里德-所罗门纠删码(Reed-Solomon erasure code)最初作为一种前向纠错码(FEC)来使用,用于通过不太可靠的通道来传送数据,比如外层空间探测器的数据传输。这项技术还与CD和DVD结合使用,处理光盘上的瑕疵,如灰尘和划痕。现在已有几家存储厂商开始将纠删码运用到自己的解决方案中。使用纠删码,可以将一个数据细分成多块,每一块数据本身毫无用处,它们被分散到不同的磁盘驱动器或服务器中。数据随时可以用一小部分数据块来完全重组,哪怕多个数据块因磁盘故障而丢失。换句话说,不需要创建多个数据副本,一个数据实例就可以确保数据的完整性和可用性。