Facebook在OSDI 2014上发表论文f4: Facebook’s Warm BLOB Storage System,这个系统主要目的就是降低存储成本,在容忍磁盘,主机,机架,数据中心的同时提供2.1倍的存储因子(用户存储的1bit数据实际上占用磁盘2.1bit空间)。本文只讨论f4系统的核心Erasure Code部分,如何降低存储因子。

Facebook热的blob数据依然存在Haystack中,访问不那么频繁的数据(Warm)放入存储系统f4中。Haystack存储blob的思路就是将多个这样的blob数据聚合在一个文件中,每个blob在文件中的位置信息存储在内存中,为了容错,这些位置信息同时会持久化在硬盘上,叫做index file. 和大部分文件系统一样,为了容错,每个数据文件都是3备份,同时单机上做了RAID6(1.2X),这样实际上,存储因子是3 * 1.2 = 3.6倍。也就是说,逻辑上1个bit的数据实际上在磁盘上存了3.6个bit。对于facebook这样数据量级的公司成本还是太高了。实际上,根据facebook的统计,很多数据比如photo和video随着时间的推移,访问的频度越来越小。对于这样的数据,读性能不需要那么高。facebook的做法就是将这些个访问不那么频繁的数据做EC编码,在单数据中心内,facebook选择经典的Reed-solomon编码,n=10,k=4,f4将数据文件切成一个个的1GB大小的block,对连续的10个data block生成4个parity block,一共14个block,可以同时容忍最多4个block,如果读请求涉及的data block没有丢失,直接访问这个block即可,不需要recover。如果data block丢失,需要访问其他block中任意10个进行恢复。为了容忍机架故障,facebook将这14个block放在不同的机架上。这样,单数据中心内,磁盘,主机,机架故障都可以容忍,这时的存储因子是14/10=1.4。为了容忍数据中心故障,所有的block包括parity block在另外一个数据中心也复制一份,这样下来,整个的存储因子是2.8. 由于数据中心故障比较少见,为了进一步降低成本,f4在数据中心之间使用XOR编码,即3个数据中心A,B,C,数据中心A和B分别各自存储各自的data block和parity block,数据中心A的block和B的block进行XOR编码结果block存在数据中心C中。这样,任意一个数据中心挂掉,数据都可以从另外两个数据中心恢复,存储因子(1.4 * 2 + 1.4)/2=2.1。

参考资料

f4: Facebook’s Warm BLOB Storage System

Haystack

f4: Facebook’s Warm BLOB Storage System——Erasure Code的更多相关文章

  1. Azure Blob Storage 基本用法 -- Azure Storage 之 Blob

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure Table storage ...

  2. blob storage第一次亲密接触

    由于azure上各个云服务都是分开的,所以当一个地方生成文件后,我在别的地方想要读取他就变得困难,不过azure上面有解决方案,就是azure blob storage. 在现有的订阅账号下,新建一个 ...

  3. hadoop(四): 本地 hbase 集群配置 Azure Blob Storage

    基于 HDP2.4安装(五):集群及组件安装 创建的hadoop集群,修改默认配置,将hbase 存储配置为 Azure Blob Storage 目录: 简述 配置 验证 FAQ 简述: hadoo ...

  4. Azure 基础:Blob Storage

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在前文中介绍了 Table Storage 的基本 ...

  5. Azure Storage用法:使用Blob Storage

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在C# 消息队列-Microsoft Azure ...

  6. [Windows Azure] How to use the Windows Azure Blob Storage Service in .NET

    How to use the Windows Azure Blob Storage Service in .NET version 1.7 version 2.0 This guide will de ...

  7. GFS, HDFS, Blob File System架构对比

    分布式文件系统很多,包括GFS,HDFS,淘宝开源的TFS,Tencent用于相册存储的TFS (Tencent FS,为了便于区别,后续称为QFS),以及Facebook Haystack.其中,T ...

  8. [转]windows azure How to use Blob storage from .NET

    本文转自:http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/?rnd=1 ...

  9. Blockstack: A Global Naming and Storage System Secured by Blockchains

    作者:Muneeb Ali, Jude Nelson, Ryan Shea, and Michael Freedman Blockstack Labs and Princeton University ...

随机推荐

  1. 每日英语:What To Expect To Wear When You're Expecting

    AT THE ACADEMY AWARDS earlier this month, Kerry Washington, the star of the ABC-TV series 'Scandal,' ...

  2. 由于源码使用是c\c++与oc混编导致Unknown type name 'NSString'

    今天看到个问题,编辑工程提示Unknown type name 'NSString',如下图 解决方案三: 将Compile Sources As 改为 Objective-C++

  3. oracle小数点前零丢失的问题

    1.问题起源        oracle  数据库 字段值为小于1的小数时,使用char类型处理,会丢失小数点前面的0        例如0.2就变成了.2 2.解决办法: (1)用to_char函数 ...

  4. SecureCrt设置字符编码

    SecureCrt设置字符编码,参考:http://www.2cto.com/os/201412/365535.html

  5. 修改 上传图片按钮input-file样式。。

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  6. nginx server_name

    在我的机子了nginx的  server_name要配制成127.0.0.1才能用,否则就报错,刚试用nginx还不知道为什么,先记下来

  7. Linux 学习碎片

    1.登录远程机器: ssh 远程机器用户名@远程机器IP ssh root@192.168.1.101 2.不同机器之前拷贝文件 #拷贝本机单个文件到远程服务器 scp /home/user1/tb. ...

  8. Android开发艺术探索笔记—— View(一)

    Android开发艺术探索笔记 --View(一) View的基础知识 什么是View View是Android中所有控件的基类.是一种界面层控件的抽象. View的位置参数 参数名 获取方式 含义 ...

  9. MyBatis知多少(22)MyBatis删除操作

    本节从表中使用MyBatis删除记录. 我们已经在MySQL下有EMPLOYEE表: CREATE TABLE EMPLOYEE ( id INT NOT NULL auto_increment, f ...

  10. SpringMVC学习系列(12) 完结篇 之 基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现

    到这里已经写到第12篇了,前11篇基本上把Spring MVC主要的内容都讲了,现在就直接上一个项目吧,希望能对有需要的朋友有一些帮助. 一.首先看一下项目结构: InfrastructureProj ...