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

    文章

    297

    浏览量

    20430
  • 应用程序
    +关注

    关注

    38

    文章

    3338

    浏览量

    59143
  • 日志
    +关注

    关注

    0

    文章

    144

    浏览量

    10891
  • SQlite
    +关注

    关注

    0

    文章

    81

    浏览量

    16424

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    Arm事务性内存扩展概述

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

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

    XfS文件系统,XfS文件系统是什么意思 XfS文件系统是SGI开发的高级日志文件系统,XFS极具伸缩
    发表于 03-29 10:39 ?4404次阅读

    FAT文件系统的组织结构

    FAT文件系统的组织结构,很好的学习资料,快来下载吧
    发表于 02-16 16:35 ?2次下载

    Linux日志文件系统解析

    时,如何提供更好的完整。此外本文还介绍了现行的几种日志文件 系统和下一代日志文件系统。 定义
    发表于 11-01 15:23 ?0次下载
    Linux<b class='flag-5'>日志</b><b class='flag-5'>文件系统</b>解析

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

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

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

    嵌入式linux中文站向大家介绍一下JFS文件系统。Linux系统日志文件中的JFS系统, JFS 由IBM 公司开发,最初出现在AIX 操
    发表于 05-05 14:10 ?5389次阅读
    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 ?2124次阅读
    汽车电子<b class='flag-5'>系统</b>中闪存<b class='flag-5'>文件系统</b>的应用设计与研究

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

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

    FATFS文件系统详解

    采用的独特的文件系统结构CDFS:CDFS是大部分的光盘的文件系统exFATFATFS文件系统FATFS是一个完全免费开源的FAT 文件系统
    发表于 11-29 09:51 ?30次下载
    FATFS<b class='flag-5'>文件系统</b>详解

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

    ?? ? LittleFS是一个小型的Flash文件系统,它结合日志结构(log-structured)文件系统和COW(copy-on-write)
    的头像 发表于 09-30 18:32 ?2051次阅读

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

    一、简介LittleFS是一个小型的Flash文件系统,它结合日志结构(log-structured)文件系统和COW(copy-on-write)
    的头像 发表于 06-22 09:42 ?1631次阅读
    基于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:13 ?1405次阅读
    【嵌入式SD NAND】基于FATFS/Littlefs<b class='flag-5'>文件系统</b>的<b class='flag-5'>日志</b>框架<b class='flag-5'>实现</b>

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

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