exF2FS:Transaction Support in Log-Structured Filesystem-论文读后感

提示:写论文读后感,主要是用于记录自己的学习和思考过程,如有侵权请联系本人删除,谢谢~

exF2FS:Transaction Support in Log-Structured Filesystem-论文读后感

背景

大约在15年,三星提出了专门的针对NVM的文件系统-F2FS,其确实对于基于NVM的系统文件系统性能有很大提升。但其存在三个问题:
1、不支持设计多文件的事务;
2、不支持对未提交事务的页面进行换出;
3、垃圾回收机制和未提交的事务之间存在冲突,在进行前台GC时,未提交的事务会被终止。

可能的原因

1、目前的事务设计相对简单,把多文件的事务原子性留给了用户进行实现;
2、操作系统置换出页面后会持久化新的页,从而造成旧页无效:在journaling filesystem日志记录文件系统中,旧页会被覆盖;在lFS(日志结构文件系统中),因为文件map会指向新的页,从而造成旧页不可访问;
3、文件系统机制设置较简单,未考虑垃圾回收时进行搬迁的块地址对事务进行更新,造成事务不能够找到元数据。

解决方案

在这里插入图片描述
1、针对问题1-----提出以成员归属为导向的事务模型,支持多个把多个文件加入到一个事务中,生成事件文件组结构体,它包括所有归属文件的脏页链(dirty-page-list)、脏节点页链(dirty-node-page-list)、重定位链(relocation-list)和主提交块的页面缓存项(page cache entry of Master Commit Block)。同一个事务对所有文件的修改都在同一个链表中,可以实现一起提交或撤销。这样就可以一个事务关联多个文件。
exF2FS中多文件事务的提交过程:
1)、首先将dirty-page-list中的脏页在磁盘中找到相应位置并持久化到磁盘中;
2)、将dirty-page-list中的脏页的磁盘持久化位置更新到dirty-node-page-list中的dirty-node-page中;同时确定各个dirty-node-page的磁盘位置;
3)、在page-cache-entry of Master commit block中更新各个dirty-node-page的位置;
4)、在page-cache-entry of Master commit block中设置FSYNC-BIT标志;
5)、持久化脏页、脏节点页和Master commit block,在这个过程中保证Master commit Block是最后一个持久化的。
6)、当这些完成后,文件系统会去扫描relocation-list,将其中旧的磁盘位置设置为无效,这样才能进行垃圾回收。同时正是因为这时才置无效,所以其旧磁盘在这之前不会被回收,所以能够进行未提交事务的页面换出。

2、针对问题2----根据重定位链提出了延迟无效(Delay Invalidation)和节点页固定(Node page pinning)来支持未提交事务脏页换出机制。由于延迟无效的存在,文件的旧数据块就不会被GC,同时由于重定位链的存在,系统可以很快捷的找到事务所涉及文件的元数据和新数据,这样就可以实现未提交事务修改文件的换出了。

3、针对问题3-----主要的解决思想是让事务知道GC对其所涉及事务的搬迁。其提出了shadow page cache region(影子页缓冲区)的概念。
注意:GC的机制是把需要搬迁的数据拷贝到page cache中,让操作系统进行搬迁。
它把GC涉及到的事务的数据块分为3类:
CO(cache old):未提交事务要修改过的,在page cache缓存有修改后数据副本(未换出),存在于NVM中的旧数据块;
EO(evicted old):未提交事务修改过的,在page cache缓存有修改后数据副本(已换出),存在于NVM中的旧数据块;
EN(evicted new):未提交事务修改过的,在page cache缓存有修改后数据副本(已换出),存在于NVM中的旧数据块;
针对CO:在进行GC时,其不管page cache中已经存在需要搬迁的数据块的最新cache,而是把这个数据块刷到影子页缓冲区中,让GC进行搬迁,同时会修改器relocation-list中设计到的位置数据;
针对EO和EN,其不用使用影子页缓冲区(因为他们在缓冲区中不存在缓存),直接按照正常的GC流程进行搬迁即可,知识也需要修改relocation-list中设计到的位置数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值