facebook 照片存储系统haystack的学习

之前的solution是POSIX based filesystem: 一些NAS(Network attached storage) 设备mount 到NFS上



主要问题:per file metadata 导致过多的disk operation because of metadata lookup。

读取一个文件一般至少3个步骤

1)一次或者多次disk operation 访问到directory 的metadata, 从文件名得到文件的的inode

2) 把文件的inode从磁盘读入,得到文件的metadata/file handle(物理地址信息,size等)

3)读文件本身

实际情况:读一个文件可能涉及10次disk operation

一个简单的优化:不要让一个目录装太多文件,100来个比较好,这样一页可以装下目录的metadata,使得访问目录metadata只需要一次IO,这样访问一个文件只需要3次IO


Haystack的主要设计目标就是使得读一个照片只需要一次disk operation,就是读文件本身的IO,所有metadata都在memory里。

要把所有metadata都放到memory里,需要reduce整体metadata的大小,方法就改变per file metadata的结构,多个照片文件放到一个大文件里,维护一个in-memory的 mapping: photo id -> {file, offset, size},这样物理file的个数(同时inode的数目)大大减少了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值