0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

事务性日志结构文件系统的设计及实现

SSDFans 来源:SSDFans 2023-10-16 16:01 次阅读

本文发表于FAST 2022,探讨日志结构文件系统层面的事务支持。本文主要对F2FS进行了支持事务的修改,实现了支持ACID事务特性的文件系统层面支持。本文通过实验测试了SQLite和ROCKSDB在支持事务的日志结构文件系统上的运行效率,结果显示本文实现的事务支持可以简化应用编程复杂度,显著提高应用性能。

01背景及动机

目前的应用程序在运行涉及多个文件修改的事务时对于系统的冲突一致性有很高的要求。但是由于在文件系统层面的事务支持的缺失,现在的应用必须在上层使用复杂的协议来保证事务在涉及多个文件的更新操作时的一致性,从而引入了更多的写请求和同步命令,对于应用的运行性能会造成很大影响。

当前的事务支持非常有限,部分解决方案只能满足事务ACID(原子性、一致性、孤立性、持久性)的部分特性,一些方法以牺牲应用性能为代价来支持事务的全部特性,还有一些方案依赖硬件上的配合来实现事务的支持,因此本文想要实现一种不对性能产生影响,也不需要底层硬件配合的操作系统层面的事务支持。

02exF2FS的设计及实现

本文定义了事务性日志结构文件系统应该满足的三条限制并在F2FS中进行了逐个实现:

1. Membership-Oriented Transaction

a)功能解释:文件系统支持每个事务可以涉及多个文件的修改,而不局限于在一个事务中只能进行一个事务的修改。

b)实现方法:在内核中新定义一个事务文件组的对象,对一个事务涉及的所有文件和脏页进行管理,具体架构如下图所示

71ca11d0-64a1-11ee-939d-92fbcf53809c.png

新定义了一个内核实体:事务文件组,包含一个事务涉及的所有需要修改的文件、需要写回的脏页(数据页+结点页),用于优化页面写回和垃圾回收的块重定位记录的链表和用于事务持久化的主提交块。

exF2FS通过事务文件组这个对象,应用可以指定需要包含在一个事务中的文件,从而支持可以涉及多个文件的修改的事务。

2. Stealing enabled Transaction

a)功能解释:允许未提交事务的脏页的写回,可以用比较小的内存占用实现涉及数据量比较大的事务。

b)实现方法:

i.延迟被写回的页面的非法化,防止垃圾回收将旧位置的数据删除;

ii.将涉及未提交事务的节点页保留在内存中,进行标记防止检查点在事务提交之前将其持久化。

71ee2c96-64a1-11ee-939d-92fbcf53809c.png

3. Shadow Garbage Collection

a)功能解释:垃圾回收模块可以透明地迁移选中的回收块,对进行中的事务不会造成任何影响。

b)实现方法:保留一块专门的页缓存区域用于与事务相关的页面的垃圾回收,同时针对选中的被回收块类型的不同采用不同的回收策略。

7211b27e-64a1-11ee-939d-92fbcf53809c.png

03实验评估

1. 设备IO请求次数的减少

722aac3e-64a1-11ee-939d-92fbcf53809c.png

从实验结果可以看出,原始的F2FS支持的SQLite事务在进行执行三条插入操作的事务时会引入32次写请求和15次的同步请求,整个事务的执行时间需要耗时55ms;而对于优化后的exF2FS,其产生的写请求只有三次,且事务的执行时间缩短到了1.6ms,在执行时间和请求次数的减少上体现出了很明显的优化效果。

2. 吞吐量的提升

72405a0c-64a1-11ee-939d-92fbcf53809c.png

以执行插入操作为例,exF2FS的事务执行的吞吐量可以达到原始F2FS在持久化日志模式(图中F2FS PERSISTENT)下的24倍。

3. 每个事务产生的写量的减少

724de80c-64a1-11ee-939d-92fbcf53809c.png

在全部的六种事务支持方法中,exF2FS产生了最少的总写量,与原始F2FS在持久化日志模式的事务支持相比,exF2FS的多文件事务的写量可以减少5/6.

04总结

这项工作成功地解决了日志结构文件系统中事务支持的三个主要问题:多文件支持、内存占用的节省和透明垃圾回收。使用本文提出的事务日志结构文件系统,我们可以大大简化应用程序编程,并可以在包括 SQLite、RocksDB 和应用程序安装在内的许多流行应用程序中显着提高应用程序性能。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 文件系统
    +关注

    关注

    0

    文章

    273

    浏览量

    19676
  • 应用程序
    +关注

    关注

    37

    文章

    3136

    浏览量

    56391
  • 日志
    +关注

    关注

    0

    文章

    126

    浏览量

    10525
  • SQlite
    +关注

    关注

    0

    文章

    78

    浏览量

    15764

原文标题:聊聊日志结构文件系统层面的事务支持

文章出处:【微信号:SSDFans,微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    VxWorks文件系统、Flash的TFFS设计与实现

    0 引言在VxWorks的应用系统中,基于flash的文件系统通常都采用DOS+FAT+FTL的结构。一般情况下,磁盘文件系统大多是基于sector的
    发表于 06-18 16:23 2274次阅读
    VxWorks<b class='flag-5'>文件系统</b>、Flash的TFFS设计与<b class='flag-5'>实现</b>

    嵌入式文件系统µC/FS的日志使用

    ,基于FAT的文件系统解决方案可能是增加系统可靠的一个的来源,为了提供掉电保护,FAT实现需配备日志模块。
    发表于 09-19 16:41

    Arm事务性内存扩展概述

    本指南介绍事务性内存,它允许自动执行代码,而无需始终实现限制性能的同步方法。 ARM事务内存扩展(TME)是事务内存的ARM实现。 现代复杂
    发表于 08-17 07:57

    基于VxWorks的文件系统的研究与实现

    详细介绍TrueFFS的结构,以AM29LV160BT为例,在Flash上建立文件系统。利用VxWorks下的文件系统TrueFFS实现对Flash上数据的管理和VxWorks映像的加
    发表于 12-28 10:55 35次下载

    XfS文件系统,XfS文件系统是什么意思

    XfS文件系统,XfS文件系统是什么意思 XfS文件系统是SGI开发的高级日志文件系统,XFS极具伸缩性,非常健壮。所幸的是SGI将其移植
    发表于 03-29 10:39 4076次阅读

    Linux日志文件系统解析

    在近代历史上,日志文件系统被认为十分奇特,主要是处于研究阶段。而如今,日志文件系统(ext3)已经成为 Linux的缺省文件系统。本文向大家
    发表于 11-01 15:23 0次下载
    Linux<b class='flag-5'>日志</b><b class='flag-5'>文件系统</b>解析

    可以了解的Linux 文件系统结构

    Linux中的文件是什么?它的文件系统又是什么?那些配置文件又在哪里?我下载好的程序保存在哪里了?在 Linux 中文件系统是标准结构的吗?
    发表于 04-27 14:06 610次阅读
    可以了解的Linux <b class='flag-5'>文件系统</b><b class='flag-5'>结构</b>

    你了解过Linux日志文件系统

    最早的日志文件系统是 IBM® Journaled File System(JFS)。JFS 于 1990 年首次发行,而当前 Linux 支持的版本是后期开发的 JFS2。1994 年,Silicon Graphics 为 IRIX 操作
    发表于 04-29 16:59 3823次阅读
    你了解过Linux<b class='flag-5'>日志</b><b class='flag-5'>文件系统</b>?

    Linux系统日志文件中的JFS文件系统

    嵌入式linux中文站向大家介绍一下JFS文件系统。Linux系统日志文件中的JFS系统, JFS 由IBM 公司开发,最初出现在AIX 操
    发表于 05-05 14:10 4743次阅读
    Linux<b class='flag-5'>系统</b><b class='flag-5'>日志</b><b class='flag-5'>文件</b>中的JFS<b class='flag-5'>文件系统</b>

    汽车电子系统中闪存文件系统的应用设计与研究

    事务文件系统可以通过处理设备中的事务日志来动态建立文件系统的层次结构。这种操作发生在
    的头像 发表于 04-06 15:11 1668次阅读
    汽车电子<b class='flag-5'>系统</b>中闪存<b class='flag-5'>文件系统</b>的应用设计与研究

    文件系统中的日志系统是如何实现

    日志 本文来聊聊文件系统中的日志系统,来看一个简单的日志系统是如何
    的头像 发表于 09-29 11:04 1909次阅读
    <b class='flag-5'>文件系统</b>中的<b class='flag-5'>日志</b><b class='flag-5'>系统</b>是如何<b class='flag-5'>实现</b>的

    xv6的文件系统是如何实现

    文件系统 。本文直接来看 xv6 的文件系统这部分是如何实现的。 文件系统布局 再来系统的看看 xv6
    的头像 发表于 10-12 18:00 2156次阅读
     xv6的<b class='flag-5'>文件系统</b>是如何<b class='flag-5'>实现</b>的

    第1期Ubuntu入门篇:【8】Ubuntu文件系统结构

    文章目录简介目标阅读基础环境说明参考资料Linux 文件系统简介实现数据的查询和存储不同的物理结构需要不同的文件系统Linux磁盘分割Linux磁盘格式化Linux磁盘访问Linux
    发表于 12-07 18:06 8次下载
    第1期Ubuntu入门篇:【8】Ubuntu<b class='flag-5'>文件系统</b><b class='flag-5'>结构</b>

    基于OpenHarmony3.1的LittleFS文件系统hdf驱动实现

    一、简介LittleFS是一个小型的Flash文件系统,它结合日志结构(log-structured)文件系统和COW(copy-on-write)
    的头像 发表于 06-22 09:42 512次阅读
    基于OpenHarmony3.1的LittleFS<b class='flag-5'>文件系统</b>hdf驱动<b class='flag-5'>实现</b>

    【嵌入式SD NAND】基于FATFS/Littlefs文件系统日志框架实现

    文章目录【嵌入式】基于FATFS/Littlefs文件系统日志框架实现1.概述2.设计概要3.设计实现3.1初始化`init`3.2日志
    的头像 发表于 03-14 18:12 714次阅读
    【嵌入式SD NAND】基于FATFS/Littlefs<b class='flag-5'>文件系统</b>的<b class='flag-5'>日志</b>框架<b class='flag-5'>实现</b>