frangipani 论文笔记

Frangipani: A Scalable Distributed File System

Abstract

Frangipani 是一个两层架构的文件系统:

  • 底层为Petals :一个分布式虚拟磁盘
  • 顶层为Frangipani file system,在每台机器上运行同样的代码,利用分布式锁来保证一致性

系统中的节点相互之间拥有信任权限,分享虚拟磁盘

对外界根据协议暴露接口,可通过网络调用访问文件

1. Introduciton

  • 面对逐日增长的文件存储需求,增加机器是必须要做的事。这就引出了一下问题:机器的人工管理

  • Frangipani是一种新的可扩展分布式文件系统,将多台计算机上的磁盘集合作为共享存储池进行管理。

请添加图片描述

2. System Structure

请添加图片描述

Figure 2 :一种典型的机器功能分配,实际上Frangipani不是必须与Petal分离

2.1 Components

  • 如图2所示, 用户程序通过标准操作系统接口访问Frangipani

  • 所有部署了Frangipani的机器看到的文件是一致的

  • Frangipani 对于程序访问做出类似本地 Unix 文件系统的保证:

    • 对于文件内容的更改在本地内核缓冲池缓冲,在下一次调用 fsyncsync 前不保证数据的持久性
    • 但元数据的更改会写入日志
    • 可以选择在系统调用返回时保证持久性
  • Frangipani 与本地文件系统有一点不同的是:Frangipani 记录对文件的访问次数, 以免每次读取文件都要修改元数据

  • Frangipani 在机器的内核中运行。它将在内核中注册为可选的文件系统。

  • 每个服务器保存自己的 redo logPetal 上,以便在故障时可被其他服务器恢复

  • 服务器间不会直接通信,而是通过 Petal 间接通信

2.2 Security and the Client/Server Configuration

  • Frangipani 出于安全性考虑,最好只在被信任的机器上部署 Frangipani server

请添加图片描述

2.3 Discussion

Frangipani 仍然存在的三个问题:

  1. 在Petal上使用有时会导致两次日志:一次在Frangipani中,一次在Petal中
  2. Frangipani不能使用磁盘位置信息来存放数据,因为Petal虚拟整合了所有磁盘
  3. Frangipani在必须时为所有文件和目录上锁而不是获取某些粒度更细的锁(individual blocks)

3. Disk Layout

请添加图片描述

  • Petal 虚拟磁盘拥有 64位的空间地址,并只在写入数据时才将虚拟空间地址映射到实际的物理磁盘(像内存的页式管理)

  • 为了保持其内部数据结构的小型,Petal将实际块大小分配为64KB

  • 对于第五部分 Small blocks ,当文件的前64KB的内容会被储存在这里, 对于剩余的部分则会储存在 Large blocks

  • 单个文件最大位 64KB + 1TB

4. Logging and Recovery

  • Frangipani 使用元数据的WAL来简化故障恢复和改善性能,用户数据并不写入日志

为了确保日志记录和恢复在存在多个日志的情况下正常工作,Frangipani 做了如下保证:

  1. Frangipani 的锁协议保证了对于同一数据的修改操作序列化
  2. 恢复工作只会恢复那些服务器持有锁期间进行的修改:Frangipani 通过绝不重新应用已提交的日志来保证。

​ 为了完成这个工作, Frangipani 为每个512字节的元数据块记录了版本号。通过版本号控制。

  1. 元数据块空间只能被元数据重用:以保证用户数据放到元数据块空间后被版本控制影响。
  2. 同一时间只有一个服务器的恢复工作在进行。

5. Synchronization and Cache Coherence

  • Frangipani 使用 多读者/单写 锁来扩展必须的同步

  • 读锁可以读取数据, 当读锁被要求放弃锁时,必须先使其cache中的数据副本无效才能放弃

  • 写锁可以读写数据, 只有持有写锁时cache中的数据副本才有可能与磁盘不同

  • 写锁降级为读锁可以无需无效cache的数据副本,放弃锁必须无效数据副本

  • 当写锁降级或释放时, 除了将脏数据写回磁盘, 我们还可以选择直接把数据传回请求者?(这点没看懂)

  • 有的操作需要原子地修改多个锁保护的数据结构, Frangipani 通过全局排序这些锁和两阶段获取锁来防止死锁:

    • 阶段一:根据位图地址排序并以此获取锁
    • 阶段二:检查是否持有所有锁,如果有就进行操作,否则释放所有锁回到阶段一

6. The Lock Service

几类锁:简单的锁服务,分布式锁服务等等

7. Adding and Removing Servers

  • 新增一台 Frangipani 服务器只需与 Petal 和 Lock 沟通即可
  • 删除则直接关机

8. Backup

  • snapshot 是 copy-on-write
    and Removing Servers

  • 新增一台 Frangipani 服务器只需与 Petal 和 Lock 沟通即可

  • 删除则直接关机

8. Backup

  • snapshot 是 copy-on-write
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值