与管理传统的大型数据基础设施相比,管理与大数据相关的拍字节级数据存储是一种全新的方式。目前在线照片分享网站Shutterfly管理着30拍字节的数据。Shutterfly在这里与我们分享了他们驯服“数据野兽”的经验。
目前,每个人都在谈论大数据分析方法和相关的商务智能成果。但是在公司能够利用这些数据前,他们必须想办法解决存储问题。管理拍字节级甚至更大规模的数据存储与管理传统大型数据集有着本质的区别。
Shutterfly为一家在线照片分享网站。他们并不限制用户存储照片的数量,并且允许用户存储原始分辨率的照片,用户在存储时可以不用降低照片的分辨率。Shutterfly还曾承诺永远不会删除任何照片。
Shutterfly 高级副总裁兼首席技术官Neil Day称:“我们的照片存档大小已经超过了30拍字节。存储池的增长速度远远高于用户群的增长速度。在我们吸引到客户后,他们做的第一件事就是向我们上传大量照片。在他们喜欢上我们之后,他们做的第一件事就是再次上传大量照片。”
为了有一个直观的印象,大家可以想像一下,1拍字节等于100太字节,等于1百万吉字节。美国宇航局哈勃太空望远镜前20年的观测数据存档也仅为45太字节多一点。以128 kB/s速率压缩的1太字节音频数据可以存储17000小时的音频
拍字节级基础设施的特点
Day称:“拍字节级基础设施与传统存储设施完全不同。建立和维护它们非常困难。与传统大型数据集的管理压力相比,一个拍字节或多个拍字节基础设施的管理压力完全是天壤之别。它们之间的差异就如同在笔记本电脑上处理数据和在RAID阵列上处理数据一样。”
Day在2009年进入Shutterfly网站。当时存储已经成为了公司最大的开销,并且这一开销仍然在飞速地增长。这些开销的增长速度并不是根据原始容量的增长速度而增长,而是根据员工数量的增长速度而增长。
Day 称:“存储每增长n个拍字节就意味着我们需要增加一名存储管理员,以及相应的物理和逻辑基础设施。有了这些大型存储,数据量不断创下新高。实际管理这些大型存档的人必须不断的解决硬件故障问题。每个人都想解决这一基本问题,因为大家都清楚硬盘方面的任何一个故障都会导致服务中断。那么你如何确保数据能够被持续获取,如何保证性能不会下降?”
扩展RAID是一个棘手的问题
失效备援的标准解决方案是进行复制,通常是以RAID阵列的形式进行。但是如果规模庞大,那么RAID产生的问题将比解决的问题更多。在传统的RAID数据存储方案中,为了保证完整性和可用性,每个数据的拷贝都会被做成镜像,存储在不同的磁盘阵列上。不过,这也意味着每份被存储和被做成镜像的数据将导致存储容量膨胀五倍。随着RAID阵列中的磁盘容量越来越大,将故障磁盘中的内容恢复到新磁盘上所需要的时间也越来越长。
Day 称:“实际上,我们在RAID上并没有遇到操作问题。我们遇到的问题是,磁盘容量越来越大,如果磁盘组件出现故障,切换至冗余系统的时间将越来越长。奇偶校验与生成的数据集的大小是成正比的。目前我们已经开始在基础设施中使用1太字节和2太字节的磁盘,这导致切换到冗余系统的时间更长。目前的发展趋势并没有朝着正确的方向发展。”
可靠性和可用性对于Shutterfly来说非常关键,这也是企业级存储的需求。Day称,快速增长的存储成本使得商品化服务越来越具有吸引力。在Day和他的团队对一些能够让Shutterfly控制成本的潜在技术解决方案进行投资的过程中,他们接触到了一种名为纠删码的技术。这一技术引起了他们的兴趣。
利用纠删码创建下一代存储
Reed-Solomon纠删码最初是作为前身纠错(FEC)代码,用于在不可靠的信道中发送数据,例如深空探测任务中的数据传输。这一技术还被广泛的应用在CD和DVD上,以处理灰尘和划痕等光盘损伤问题。目前几家存储厂商已经开始展开合作,将纠删码整合到他们的解决方案中。通过纠删码,数据段能够被分解为多个小块,每一小块数据本身都是没用的。然后,这些数据块被分散到不同的硬盘上或是服务器上。只需要部分数据块,数据就能够随时被重新恢复,甚至当硬盘故障导致多个数据块丢失后,数据仍然能够被完整地拼凑起来。换句话说,你不再需要创建多份数据拷贝,单个实例就能够保证数据的完整性和可用性。