BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Facebook冷存储系统

| 作者 张天雷 关注 4 他的粉丝 发布于 2015年5月15日. 估计阅读时间: 7 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

作为排名世界领先的社交网站,Facebook经历了迅速崛起的过程。从2004年上线开始,其用户数量在2007年7月已经达到三千四百万。时至今日,Facebook每月的活跃用户量已经超过20亿,占全球总人口的三分之一。同时,作为一个全球排名领先的照片分享站点,网站每天会收到上亿张照片。伴随着用户数量以及用户上传资源的增多,Facebook网站的后台服务器数量也从1台迅速增加到数十万台。为了满足长期发展需求,Facebook于2010年在美国俄勒冈州的Prineville建设了第一个数据中心。之后,该公司又分别在美国的北卡罗来纳州和爱荷华州等地方建立了若干个数据中心。这些高性能数据中心很好的解决了网站发展的迫切需求。即使是在西方的万圣节,服务器也可以完美支持用户成功上传10亿到20亿张图片。然而,这些数据中心在满足用户需求的同时,也给公司带来了巨大的花销。除却构建基础设施(包括机房、服务器等)的庞大花费,Facebook数据中心每年消耗的上亿度电就是一笔很大的开销。因此,Facebook从2011年开始考虑冷存储技术,来解决硬件花销及能源消耗问题。

Facebook的冷存储技术起源于对自身数据存储方式及数据访问模式的思考。在以往,网站对于所有的照片、个人资料等基本采用同样的方式进行存储。但是,不同的数据在访问频率、访问次数等方面存在很大的不同。例如,用户在万圣节上传的大量照片基本上在几天或几周之后就不会再被访问。而用户主页的资料则是经常被访问的内容。鉴于这种情况,Facebook提出冷存储的计划以更低能耗、更低成本和不变的响应时间来存储这些“冷”照片数据。经过几年的筹划,Facebook目前已经建成了扩建了两个数据中心,用来放置包含全新设计的硬件和软件的冷存储系统。尽管行业界对于数据中心相关的技术都讳莫如深,Facebook却成立开放计算项目(OCP),公布了定制数据中心和服务器的一系列设计细节。近期, Facebook员工Krish Bandaru和Kestutis Patiejunas更是在博客中透露了新的冷存储系统在设计时遇到的各种难题,以及系统的一些设计细节。接下来,本文就从硬件、软件以及系统的可靠性和可扩展性等方面对Facebook的冷存储系统进行介绍。

首先,在硬件方面,新建的存储系统只配备了原本系统1/6的电量供应。此时,每个数据机柜机房仍然要能够支持1000PB的数据存储。为了到达这样的目标,Facebook在Open Vault OCP标准的基础上,进行了修改。其中,最大的改变在于每个面板只支持一个驱动器的供电。为此,公司特别修改了电路设计,使得即使会出现系统启动时没有加载任何驱动器的情况,也绝对不会有多个驱动器在同时运行的情况。在此基础上,每个存储节点的风扇数量从6个减少到了4个,同时电源架数量从3个减少到了1个,电源架上的电源个数也从7个减少到了5个。这些变化使得Open Rack的总线数量从3个减少到1个。最终,反映到功耗方面,一个2PB的机柜可以在原来四分之一功耗的情况下正常工作。此外,数据中心还移除了无间断电源(DCUPS)以及发电机等来减少硬件开销。在设计这个全新的存储系统时,Facebook的设计师遇到了很多前所未有的困难和问题。例如,在测试中,设计师才发现全新设计的机柜在携带480个4TB驱动器时竟然重达1100千克。之前一直在使用的运输车根本不能负载这么重的货物。

然后,另外一方面重要的工作就是设计一个能够支持冷存储的软件系统。鉴于硬件设计中已经去除了电池和不间断电源,软件需要在随时可能断电的情况下保证数据的完整性和持久性。根据设计目标,Facebook在软件设计阶段坚持了几个准则。第一,数据的持久性是软件系统必须要保证的内容。尤其是对于冷存储系统,很多照片或其他数据可能只在该系统中保留有备份。作为数据恢复的最后一道防线,该系统一定要保证数据不会丢失或损坏。第二,硬件方面的约束使得软件设计要十分小心。非企业级的硬件配置、随时可能掉电的电源配置等情况都是软件需要应对的问题。最后,软件一定要考虑未来大规模系统的需求,保证硬件扩展后系统还可以高效率工作。

在硬件和软件设计基本确定以后,Facebook仍然需要解决硬盘失效以及数据中心电源不稳定等带来的可靠性问题。该公司采用了传统的数据冗余备份的方式来增加可靠性。其中,所采用的冗余备份策略为Reed-Solmon错误检测编码。例如,一个1GB大小的文件会被分割成10个100MB的文件。然后,这个10个文件的Reed-Solmon编码会将其转变成14个文件互相冗余的文件。通过这种转换,Reed-Solmon编码保证通过其中任意10个文件仍然能够将原来的数据成功恢复。因此,只要把这些文件分开存储,即使其中4个文件损坏,系统仍然能够正确恢复数据。数据中心根据存储媒介的失效率等参数调整编码方式中冗余数据的个数,即可完成系统对可靠性的要求。此外,数据中心会紧挨着数据本身存储一份校验和,来方便检查数据的完整性,及时发现数据完整性问题。

Facebook数据中心关心的另外一个问题就是“bit rot”问题。之前,该公司就发现在大规模存储系统中存在无访问的情况下数据失效的问题。为了应对该问题,冷存储的数据中心采用了定期对所有数据进行扫描的策略。目前,服务器一个月左右会把所有的数据扫描一遍并向软件汇报相应情况。针对发现的数据失效问题,软件会利用备份的数据片重新构建数据,并放置到一个新的地方进行存储。通过这种方法,数据中心保证所有的数据都可以得以完整保存。

最后,为了应对扩展服务器的问题,系统软件一直均衡所有服务器的负载。对于新加入的服务器,软件会迅速把数据转移到该机器,实现所有服务器负载均衡。这样,即保证了数据存储的平等,也保证了服务器使用率的平衡。据Krish Bandaru和Kestutis Patiejunas表示,Facebook的冷存储系统会在将来继续升级,所涉及的方面包括新型媒介(如flash和蓝光光盘等)的使用和应对频繁映射/反映射的文件系统升级等。


感谢崔康对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

冷数据如何访问时重点怎么没说啊 by fu yuhui

如果大部分硬盘都没加载,那么需要访问没加载硬盘的时候要怎么处理?要等待多久?业务上允许这么长时间吗?

渣排版 by 唐 鹏

看到这排版,完全没心思看

渣排版 by 唐 鹏

看到这排版,完全没心思看

渣排版 by 唐 鹏

看到这排版,完全没心思看

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

4 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT