Facebook存储解析:管理最复杂的系统
Rob 发表于:09年02月01日 20:18 [原创] 存储在线
截止到去年,全球著名的SNS社区网站Facebook拥有150万的活跃用户,根据分析机构comScore的统计,Facebook现在已经跃然稳坐全球社交网站的第一把交椅,目前,其在Alexa的排行榜上排在第五位。
Facebook的用户现在每个月都上传超过800万张数码照片,截至去年夏天,Facebook是全球排名第一的网络照片存储网站,共存储了6.5亿张图片,同时,Facebook还拥有500多万部影片,以及其他内容,其中包括约20万件网络新闻、博客文章以及报告和评论,总计存储的数据量达到数个PB,所有这些数据都需要安全的存储,而且需要马上就进行检索。而这,是一个极为艰巨的任务。
事实上,Facebook就像是一个传奇,很难相信,前哈佛大学二年级学生Mark Zuckerberg创建的Facebook到目前为止仅仅只有5岁,在如此短的时间内积累下如此庞大的数据简直让人不可思议,但是,这的确是事实。
其实,Facebook的增长一直这么快且乐观,在2007年12月,该公司在美国加州的数据中心达到了满载的容量,幸运的是,Facebook的存储管理团队已经看到了存储的未来,并且在数据增长的过程中在美国东海岸的弗吉尼亚州建立了一个数据中心,并在几周前正式上线。不过,能够积极地管理PB级别的数据是很不容易的事情,因此,Facebook的团队一直在寻找可行之道。
“对于存储容量来说,我每天早餐的时候都会看到一个图表,那上面显示着我们正在做的。”Facebook公司存储工程经理Anoop Nagwani表示,他已经在Facebook工作了一年半,“我们每个月都会评价整个我们的组织机构,然后每周都会有一个小组讨论。”
MySQL越来越庞大
Facebook的用户数据存储在MySQL数据库上,Facebook拥有一个全球最大的MySQL数据库系统,骑在超过1800台服务器上运行着MySQL数据库。Facebook选择了MySQL的开放性,因为其代码的可修改性是必要的。Facebook同时还是用了大量的内存缓存服务器(Memcached Server),其速度大幅度超过了MySQL服务器,从而能够更好的跟上存储数据副本的要求。此外,每个晚上,Facebook都会进行数据复制,将Facebook在西海岸数据中心的数据复制到东海岸的数据中心中,并进行一次数据转储,这些数据通过重复数据删除技术专业厂商Data Domain的技术进行重复数据删除后进行长期存储。
Facebook处理图片和视频略有不同,其使用NetApp的NFS系统以及SATA硬盘来进行存储,因为NetApp能够在一个很大的容器中存储很大的对象。但是,随着Facebook上存储的照片数量的增长,NetApp的系统因由元数据已经不堪重负,造成了带宽的瓶颈。
因此,今年晚些时候,Facebook计划推出自己的对象存储系统“Haystack”,该系统被其描述为“一个标示数据所在的用户级别的抽象对象都存储在一个单一的文件中(类似于LUN)”。
Facebook也使用NFS来存储视频,“因为我们有许多设备要存储相同的数据在一线系统,这事最具成本效益和高性能的方式做到这一点。”Nagwani谈到。Facebook的系统正在像Isilon的集群存储系统一样良好工作着。但是Nagwani和他的团队仍然在积极寻找其他平台,比如Sun的Storage 7410统一存储系统,其能够扩展到576TB。