脸书庞大的帝国需要存储的数据不断爆炸。比如现在每天要分享20亿张照片,而且需求还在增加,只有不断建设和扩大存储和数据中心才能满足。
我们之前多次介绍过脸书的数据中心(见揭秘脸书新数据中心,再探脸书数据中心),包括俄勒冈州的普林维尔、北卡罗来纳州的森林、瑞典的卢莱欧、爱荷华州的阿尔图纳等。不仅如此,脸书还用自己的技术建造了它,并开放这一经验与大家分享。最先进的是最新的Altuna数据中心,它使用由廉价交换机组成的网状连接交换架构来提高性能。脸书称之为下一代数据中心-数据中心结构。
上述解决方案在提高网络性能、降低成本和提高数据中心能效方面发挥了关键作用。然而,不断增长的存储需求是没有办法的,脸书需要研究其他对策。最近,脸书披露了其冷藏系统如何解决这个问题。
顾名思义,冷库存储不常用的数据,比如几年前的历史数据。对于历史数据,传统的解决方案是使用磁带库、光盘等廉价介质来存储,但这种介质的缺点是访问速度太慢。谷歌不久前推出的云存储服务GoogleCloud Storage Nearline很好地解决了这个问题。
设计原则
然而,脸书团队决定从一个新的角度来看待这个问题。他们从头开始,以端到端的方式重新设计了软件和硬件。
1)节能降耗
在这个以存储为核心的冷库系统中,存储资源按需启动,并放弃冗余的发电机或备用电池来提高能效。因为冷库使用的是低端商用硬盘,硬件限制要求命令批处理要非常小心,牺牲时间延迟换取效率。它对物理磁盘的访问是基于未能控制硬盘占空比之间的平均时间。
2)智能管理
因为为了省电和降低成本放弃了待机电源,所以要求软件能够随时应对哪怕是最小的电源中断,避免数据丢失。
此外,数据应该是持久的,并确保其完整性。为了保证耐久性,系统设计的各个方面都要考虑耐久性,消除单点故障,用尽可能少的步骤恢复整个系统。冷存储即使是多带带管理元数据的系统也是可选的。也就是说,数据本身是可以自我描述的,不需要外部协助就可以辅助恢复。这样做的原因是,在其他系统出现数据丢失的情况下,冷库是最后一道防线。
3)面向未来
考虑到脸书的数据设计,我们也需要考虑未来。当许多系统的规模扩大或利用率提高时,许多系统的性能往往会下降或出错,因此在一开始设计这个脸书系统时,应该考虑如何避免这个问题。
普林维尔脸书的冷藏设施。
基于上述考虑,脸书在普林维尔和森林建立了两个冷藏系统,存储了数百千兆字节(100万)的数据。然而,如此高的容量,其能耗仅为传统存储解决方案的1/4。而且,与一般系统不同,这种系统的性能不会随着规模的扩大而下降。相反,系统越大,性能越好。最后值得注意的是,脸书的存储系统采用了非常经济高效的冗余备份方式,可以实现系数低于2的数据冗余。从以上几点来看,作为一个半在线半离线的仓储系统,冷库表现出非常理想的特点。当然,如果你想充分利用这个系统,你需要脸书开放计算系统的其他组件的配合,比如开放机架、网络、数据中心等。对于普通人来说,学习并不容易。
冷库系统是基于OpenVault存储的。这是专为开放式机架(开放式计算机架标准)设计的简单高效的存储解决方案。它采用模块化的输入输出拓扑。2U机架可以容纳30个硬盘(每个托盘15个硬盘,水平放置而不是垂直放置),并且几乎可以与任何服务器互操作。冷库是在这样一套高密度JBOD(只是一堆磁盘,只是一堆磁盘)存储的基础上进行改造的。
冷藏架
硬盘按需启动,电耗降到1/4
降低功耗是系统最初的设计目标之一。据介绍,该系统功耗极低,降低到传统数据中心的1/6。手段之一就是用空间换取消费减少。数据中心占地面积非常大,每个数据大厅满负荷可支持1000PB的存储容量。未来随着单盘容量的增加,其存储规模可以进一步扩大。
同时,由于冷库系统存储的是历史数据,而不是活跃的生产数据,因此脸书还取消了冗余电力系统(不间断电源、发电机、备用电池等)。),从而进一步提高能效。
在机架内部,每2U放置30个硬盘,电源插头盒放置在中间位置。
为了尽可能降低能耗,Cold Storage允许服务器在没有硬盘的情况下启动,然后软件控制繁忙。
闲度。不过这样就要求对Open Vault存储规范进行修改。其最大的改动是每次只允许每托盘有一块硬盘上电。为了避免软件bug错将所有硬盘上电导致数据中心保险烧坏,Facebook甚至还专门修改了硬盘驱动器的固件。此外,由于不必每次都要给所有硬盘供电,每个存储节点散热风扇的数量也从6个降到了4个,供电机框数从3个降到了1个,供电单元数从7个降到了5个,Open Rack机架母线数特从3条降到了1条。这样的调优令机架的存储密度大大增加,每机架可容纳2PB的存储容量(4TB硬盘),与传统存储服务器相比,其耗电只有后者的1/4。
2U机箱,5*3块硬盘,绿色的是SAS扩展板
用经济的方式保证数据安全
传统上为了保证数据的安全,一般会采用多副本技术来避免硬件故障,但这么做需要拷贝几份数据,造成了资源的浪费,能不能在存放的数据不多于两份的情况下避免数据丢失呢?
尤其是Cold Storage采用的都是些廉价硬盘,而且又没有备用电池,故障中断等情况都是难免的。
怎么解决呢?Facebook采用了Reed Solomon Coding纠删码技术。纠删码是存储领域常用的数据冗余技术,其基本原理是将原始数据切分为n块,然后根据这几块生成m个校验块。利用算法,从从n个原始数据块和m 个校验块中任取n块就能解码出原始数据,也就是说进行这样的处理后,哪怕有m块数据同时丢失数据仍能恢复。通过将这些数据分到不同的故障域(如硬盘),Cold Storage就可以以较小的成本实现数据的保护。显然,校验块越多,可容忍的数据块出错数也就越多。当然,其代价是额外需要的硬盘也越多。
那多少才合适呢?这需要对硬盘的失败特征进行调查和建模才能确定数据分块数和校验块数。F优艾设计网_设计百科acebook目前的配置是10:4(每10块硬盘配4块校验盘)。也就是说,用1.4GB的空间实现对1GB数据的备份,这种情况下可忍受4块硬盘同时坏掉。但是这种配比也会随着硬件特性以及对安全性的要求而变化的,因此Facebook开发了数据重新编码服务,这样就可以根据情况变化(存储媒体的可靠性)来重新灵活组织数据。
RS纠删码技术,把1GB数据切分为10块分别放在10块硬盘,另用4块硬盘放校验,可容忍4块硬盘同时坏掉
与以往模式相比,这种备份方式效率显然高得多,而且数据的持久性也大为增长。不过纠删码只能应付数据丢失,但是对于篡改却无能为力。为此,Facebook通过创建、维护及检查校验和来验证数据的完整性。而且这些校验和就挨着数据存放,一旦发现错误就马上从别处复制一份过来。
俗话说大脑越用越灵,不用则衰,存储也是这样。完全闲置或者不动的数据容易损坏,这就是所谓的“位衰减”。为此,Facebook在后台开启了一个“反熵”进程,专门用来定期扫描所有硬盘上的数据,从中检测数据畸变并报告。这个频率是每30天一次全扫描。一旦发现错误,另一个进程就会接管,然后读取足够多的数据去重建丢失的数据,并将其写入到新的硬盘上。由于整个过程将检测、失败分析与重构及保护分离开来,重构的耗时从小时级降到了分钟级。
Facebook还对数据存取进行了彻底改造。由于大多数现代文件系统在设计上的缺陷,这些文件系统基本上无法胜任短时间内进行大量频繁的加载与卸载操作。而且而且由于文件系统处在非常底层的位置,导致错误调试非常困难。Facebook的做法是跳过文件系统,将所有硬盘移植为“裸盘”。这样的好处是可以掌控整个数据流,从而进一步保证数据的持久性。
规模越大性能越好
传统系统往往规模越大性能就开始下降。Facebook希望避免这一点,甚至定下了越大越好的目标。其做法是每次增加容量时软件都要对现有数据进行再平衡—即将原有数据分配到新的硬件上,并释放之前用过的空间。这个过程并非实时进行,十分适合于在用系统的逐步移植,即既不影响系统的使用,又能逐步将数据迁移到新硬件上。如果把Cold Storage看作一块大硬盘的话,你可以把这种再平衡的做法视为智能硬盘整理程序。
未来计划
通过将冷数据(历史数据)与热数据(生产数据)分离、用冷存储系统处理冷数据的做法,Facebook得以实现降低能耗及节省其他资源节省的同时服务好数据请求。不过尽管目前Facebook的两套cold storage系统已经有数百PB的数据,但是这还只是整个数据量的1%,而且Facebook的数据每天还在不断增加。因此,社交巨头还需要继续扩大自己系统的规模,同时还将探索闪存、蓝光盘等各种存储媒介的利用,以及研究跨数据中心分布式存储文件数据的方法以改进持久性。
精彩评论