把旧数据“冷冻”起来,Facebook这是在干吗?

当有人提到“可持续发展”这个词语的时候,第一个出现在你脑海里的肯定不会是数据中心。而实际上,这些有着庞大的计算机组、网络架构以及存储设备的大楼却是典型的耗电大户。原因就在于,为了保障这些设备正常运转,必须要有一个巨型的冷却系统来保证其一直在低温状态下运行。它们的配电系统会在这一制冷过程中损失近千瓦的电力。并且,为了保障设备不受突发状况导致的停电所影响,这些大厦往往还需要配备有备用电池和柴油发电机。而很明显,这两者并不是什么清洁能源,会严重影响周围的环境。

许多互联网巨头都在想办法改善这一状况——建设自己的数据中心。他们自己搭建自己的硬件系统,努力使得他们的数据中心更加环保。这样做对他们来说最直观的益处就是能够降低运营成本,并且运转起来相对也更加的便捷。很明显,有一些公司在环保方面下的力度很大,其中一个典型例子就是Facebook。Facebook大量采用自己自家的技术来搭建绿色环保的数据中心,并且把这种经验开放出来跟大家共享。Facebook最先进的阿尔图纳数据中心就采用了由廉价交换机组成的网状连接交换架构来提升性能,Facebook称之为下一代的数据中心——Data Center Fabric。这对于提升数据中心的网络性能、降低成本以及提高能效起到了非常关键的作用。

所有这一切都开始于8年前,当时Facebook正在着手设计其位于Prineville的第一个数据中心。Facebook自那时开始,就已经聘用了专门负责可持续发展的董事Bill Weihl,他直接对Facebook的环保工作负责。在此期间,Facebook已经做了很长时间的实验,来研究如何设计建立用可持续能源来供电的绿色数据中心。

冷存储(cold storage)

如今,Facebook的数据库中有数十亿的图片,而你肯定无法想像为了存储这些图片将会消耗掉多少电力。在2013年,Facebook的图片存储系统HayStack一共产生了1EB的数据流量。(1EB=1024PB;1PB=1024TB;1TB=1024GB)这个数字是非常惊人的。虽然这些图片在大多数情况下在被分享几周之后就很少再会被查看了,但是Facebook仍然需要保存他们,而且必须要确保即使是在硬盘出现故障的情况下也要保障图片文件的完整性。

这就意味着Facebook需要在数据中心保存大量的数据,为了保证这一点就需要其提供大量的电力。而Facebook的工程师则巧妙的利用了“负瓦特”,开发了一个名叫"Cold Storage"的系统。Cold Storage能够允许Facebook数据中心内超过一半的磁盘在任何时候关机,从而实现大幅降低功耗。现在,Facebook的存储团队正在考虑进一步节约能源,比如将老旧的图像拷入蓝光磁盘内。

目前Facebook已经在Prineville及 Forest 两个中心建设了两套cold storage系统。cold storage系统的每个服务器机柜可容纳1.92 PB的数据。因此,在完全架设完毕的情况下,每一个数据中心可以存储1EB的数据。而且Facebook在设计时还考虑到了未来。很多系统在规模扩大或者利用率上升时往往就会出现性能下降的问题,而Facebook的这套系统则从一开始设计时就考虑到了。Facebook的做法是每次增加容量时,都将软件对现有数据进行再平衡。也就是说将原有数据分配到新的硬件上,并释放之前用过的空间。这个过程并非实时进行,十分适合用于系统的逐步移植。这样既不影响系统的使用,又能逐步将数据迁移到新硬件上。如果把Cold Storage看作一块大硬盘的话,这种再平衡的做法就可以视为智能硬盘整理程序。

降低耗电是开发Cold Storage系统的主要目的之一。据介绍这套系统的耗电极低,仅需消耗传统数据中心 1/6的电量。其主要手段就是以空间换功耗——Facebook的数据中心占地面积非常大。但是随着以后单盘容量的提升,其存储规模还可以进一步扩大。同时由于cold storage存放的不是活跃数据,而是历史数据,所以 Facebook可以把冗余电力系统(不间断电源、柴油发电机、备用电池等)也抛弃了,从而进一步提升了能效。

为了尽可能降低能耗,Cold Storage 允许服务器不带硬盘一起启动,之后将由软件来控制其闲时时段。不过这样就要求Facebook对Open Vault的存储规范进行修改。Facebook最大的改动就是——每次只允许为每个托盘上的一块硬盘供电。为了避免软件bug错将所有硬盘都供电,导致数据中心保险烧坏,Facebook甚至还专门修改了每一块硬盘驱动器的固件。此外,由于不需要每次都给所有硬盘供电了,Facebook还通过一系列的优化成功使得机架的存储密度大大增加,与传统存储服务器相比,其耗电只有后者的 1/4。

提升能源使用效率

在2012年,纽约时报的一篇报道揭露了IT业数据中心效率低下,耗电量惊人的问题。自此之后,降低数据中心能耗效率值(PUE)便成了考核数据中心的热门指标之一。(PUE指数据中心总耗电量与IT设备耗电量的比值,这个值越接近1,数据中心的能耗效率就越高)。

而Facebook位于北卡莱罗纳的数据中心仅通过使用自然风制冷,并提高服务器硬件的耐热性能,就打造出了PUE能耗效率值仅为1.07的超级绿色数据中心。这个数值也大大超过了Google数据中心PUE能耗效率值——1.12。据介绍,Facebook使用Bin Maker软件分析天气数据,预测出北卡莱罗纳的温度和湿度,然后通过美国采暖、制冷和空调工程师协会(ASHRAE)的数据来判断是否需要使用空调。

此外,Facebook还根据其发布的Open Compute标准开发出了能耐受更高室内温度和湿度的服务器硬件,并通过改善传统数据中心电力供应链来减少在电力转换过程中的能源损失。对传统服务器来说,如果一个UPS坏了或者电源部件坏了,整个数据中心就瘫痪了,而对Open Compute来说,只是某个部分不能继续使用罢了。另外,在维修传统服务器时,维修人员必须将整个服务器拿出来,用工具拆开后才可以修理;而Open Compute则采用了通用电源插座,维修时直接通过滑轨拉出来就可以实现在线维修。为了进一步提高能源使用效率,甚至连数据中心楼道里的灯都是只有在人通过的情况下才会亮。Facebook在提高数据中心能源使用效率上下的功夫可见一斑。

原文发布时间为:2015-11-12

时间: 2024-09-25 12:07:56

把旧数据“冷冻”起来,Facebook这是在干吗?的相关文章

把旧数据“冷冻”起来 Facebook这是在干吗?

当有人提到"可持续发展"这个词语的时候,第一个出现在你脑海里的肯定不会是数据中心.而实际上,这些有着庞大的计算机组.网络架构以及存储设备的大楼却是典型的耗电大户.原因就在于,为了保障这些设备正常运转,必须要有一个巨型的冷却系统来保证其一直在低温状态下运行.它们的配电系统会在这一制冷过程中损失近千瓦的电力.并且,为了保障设备不受突发状况导致的停电所影响,这些大厦往往还需要配备有备用电池和柴油发电机.而很明显,这两者并不是什么清洁能源,会严重影响周围的环境. 许多互联网巨头都在想办法改善这

c#-C#静态变量重新赋值 旧数据还是会占用内存么

问题描述 C#静态变量重新赋值 旧数据还是会占用内存么 如题 如果我的程序中有30个静态变量 而且频繁的对其进行赋值(几乎3秒一次) 那么之前的值(数据) 还是会占用内存么 这样挂起 会导致cpu飙高么? 解决方案 旧数据不会占用内存. 解决方案二: 看什么类型,如果是引用类型,会消耗一些内存.值类型直接覆盖. 引用类型,如果之前的对象没有其它引用,会被gc回收,但是如果你的内存比较大,未必会马上回收. 解决方案三: 如果你不断生成新的datatable,datatable又很大,不断赋值,那么

lucene怎样在做增量索引的同时更新旧数据?

问题描述 现在的项目要求做近实时索引,大约15分钟更行一次.数据会不断新增,而旧数据也会经常被修改.我计划用增量索引来做,根据数据库的更新时间来添加文档.但被更新的文档可能索引里已经有了,添加之后数据可能会重复.请问如何消除这种重复的可能性,是每添加一个document时都先查一下索引里是不是已经有,还是记录数据库所有的修改操作并将id放到队列里,跑索引的时候一起更新?请问lucene有没有更好的内部机制解决这个问题,比如能不能像数据库一样指定unique的字段? 解决方案 方案1: 你修改的数

EMC蔡汉辉:打造大数据时代的"Facebook"

本文讲的是EMC蔡汉辉:打造大数据时代的"Facebook",数据大爆炸的时代已经来临,Oracle.IBM.HP.微软等IT巨头都将目光聚焦到了大数据,专事数据存储的EMC不可能没有大动作. 2010年,EMC斥资收购了Isilon和Greenplum,前者以横向扩展架构解决大数据存储与访问问题,后者则侧重数据挖掘与分析,且在业内首次实现结构化数据与非结构化数据的统一管理.此外,EMC还对其原有的Atmos产品线进行进一步完善,并收购了敏捷软件开发服务和工具提供商Privotal L

2月美国搜索数据公布:Facebook搜索量增10%

北京时间3月11日晚间消息,据国外媒体报道,美国市场研究公司ComScore周三公布了美国市场2月份搜索排名数据.虽然五大主要搜索引擎的排名和市场份额并没有出现明显变化,但最令人意外的变化是,2月份Facebook搜索量强劲增长10%,达到4.36亿次. 谷歌仍然以65.5%的市场份额高居首位,雅虎与微软分别以16.8%和11.5%的市场占有率分列二三位.谷歌和微软当月市场份额分别增长了0.1和0.2个百分点. 2月份美国市场搜索量总计145亿次,较1月份减少5%.谷歌.雅虎和微软的搜索量依次为

改变数据中心格局 Facebook服务器方案解读

Facebook总部的17号楼坐落在Sun Microsystems原来的园区,因为形似加利福尼亚州昆廷监狱(San Quentin)而被戏称为"Sun Quentin".现在,在这座大楼里办公的是Facebook电力实验室的一个Facebook工程师团队.在每一个工作日里,他们都在推进这家公司有关数据中心硬件应如何构建的想法.这些工程师会不断地对自主开发的服务器硬件的设计进行台架测试--基本上来说,Facebook自主设计的服务器硬件与我们平常所知的硬件大有不同. ArcTechni

判断字段是否被更新 新旧数据写入Audit Log表中_MsSql

Insus.NET解决这个问题,只有创建另外一个表,将存储用户决定要跟踪的表,以及这个表中需要跟踪的字段. 还要创建另外一个表[Audit],就是存储跟踪记录的表: 复制代码 代码如下: Audit SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[Audit]( [Audit_nbr] [int] IDENTITY(1,1) NOT NULL, [AuditTy

PostgreSQL 如何实现upsert与新旧数据自动分离

很多业务也行有这样的需求,新的数据会不断的插入,并且可能会有更新. 对于更新的数据,需要记录更新前的记录到历史表. 这个需求有点类似于审计需求,即需要对记录变更前后做审计. 我以前有写过使用hstore和触发器来满足审计需求的文档,有兴趣的同学可以参考 http://blog.163.com/digoal@126/blog/static/163877040201252575529358/本文的目的并不是审计,而且也可能不期望使用触发器. 还有什么方法呢? PostgreSQL 这么高大上,当然有

判断字段是否被更新 新旧数据写入Audit Log表中

Insus.NET解决这个问题,只有创建另外一个表,将存储用户决定要跟踪的表,以及这个表中需要跟踪的字段. 还要创建另外一个表[Audit],就是存储跟踪记录的表: 复制代码 代码如下: Audit SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[Audit]( [Audit_nbr] [int] IDENTITY(1,1) NOT NULL, [AuditTy