0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

事務(wù)性日志結(jié)構(gòu)文件系統(tǒng)的設(shè)計(jì)及實(shí)現(xiàn)

SSDFans ? 來(lái)源:SSDFans ? 2023-10-16 16:01 ? 次閱讀

本文發(fā)表于FAST 2022,探討日志結(jié)構(gòu)文件系統(tǒng)層面的事務(wù)支持。本文主要對(duì)F2FS進(jìn)行了支持事務(wù)的修改,實(shí)現(xiàn)了支持ACID事務(wù)特性的文件系統(tǒng)層面支持。本文通過(guò)實(shí)驗(yàn)測(cè)試了SQLite和ROCKSDB在支持事務(wù)的日志結(jié)構(gòu)文件系統(tǒng)上的運(yùn)行效率,結(jié)果顯示本文實(shí)現(xiàn)的事務(wù)支持可以簡(jiǎn)化應(yīng)用編程復(fù)雜度,顯著提高應(yīng)用性能。

01背景及動(dòng)機(jī)

目前的應(yīng)用程序在運(yùn)行涉及多個(gè)文件修改的事務(wù)時(shí)對(duì)于系統(tǒng)的沖突一致性有很高的要求。但是由于在文件系統(tǒng)層面的事務(wù)支持的缺失,現(xiàn)在的應(yīng)用必須在上層使用復(fù)雜的協(xié)議來(lái)保證事務(wù)在涉及多個(gè)文件的更新操作時(shí)的一致性,從而引入了更多的寫請(qǐng)求和同步命令,對(duì)于應(yīng)用的運(yùn)行性能會(huì)造成很大影響。

當(dāng)前的事務(wù)支持非常有限,部分解決方案只能滿足事務(wù)ACID(原子性、一致性、孤立性、持久性)的部分特性,一些方法以犧牲應(yīng)用性能為代價(jià)來(lái)支持事務(wù)的全部特性,還有一些方案依賴硬件上的配合來(lái)實(shí)現(xiàn)事務(wù)的支持,因此本文想要實(shí)現(xiàn)一種不對(duì)性能產(chǎn)生影響,也不需要底層硬件配合的操作系統(tǒng)層面的事務(wù)支持。

02exF2FS的設(shè)計(jì)及實(shí)現(xiàn)

本文定義了事務(wù)性日志結(jié)構(gòu)文件系統(tǒng)應(yīng)該滿足的三條限制并在F2FS中進(jìn)行了逐個(gè)實(shí)現(xiàn):

1. Membership-Oriented Transaction

a)功能解釋:文件系統(tǒng)支持每個(gè)事務(wù)可以涉及多個(gè)文件的修改,而不局限于在一個(gè)事務(wù)中只能進(jìn)行一個(gè)事務(wù)的修改。

b)實(shí)現(xiàn)方法:在內(nèi)核中新定義一個(gè)事務(wù)文件組的對(duì)象,對(duì)一個(gè)事務(wù)涉及的所有文件和臟頁(yè)進(jìn)行管理,具體架構(gòu)如下圖所示

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

新定義了一個(gè)內(nèi)核實(shí)體:事務(wù)文件組,包含一個(gè)事務(wù)涉及的所有需要修改的文件、需要寫回的臟頁(yè)(數(shù)據(jù)頁(yè)+結(jié)點(diǎn)頁(yè)),用于優(yōu)化頁(yè)面寫回和垃圾回收的塊重定位記錄的鏈表和用于事務(wù)持久化的主提交塊。

exF2FS通過(guò)事務(wù)文件組這個(gè)對(duì)象,應(yīng)用可以指定需要包含在一個(gè)事務(wù)中的文件,從而支持可以涉及多個(gè)文件的修改的事務(wù)。

2. Stealing enabled Transaction

a)功能解釋:允許未提交事務(wù)的臟頁(yè)的寫回,可以用比較小的內(nèi)存占用實(shí)現(xiàn)涉及數(shù)據(jù)量比較大的事務(wù)。

b)實(shí)現(xiàn)方法:

i.延遲被寫回的頁(yè)面的非法化,防止垃圾回收將舊位置的數(shù)據(jù)刪除;

ii.將涉及未提交事務(wù)的節(jié)點(diǎn)頁(yè)保留在內(nèi)存中,進(jìn)行標(biāo)記防止檢查點(diǎn)在事務(wù)提交之前將其持久化。

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

3. Shadow Garbage Collection

a)功能解釋:垃圾回收模塊可以透明地遷移選中的回收塊,對(duì)進(jìn)行中的事務(wù)不會(huì)造成任何影響。

b)實(shí)現(xiàn)方法:保留一塊專門的頁(yè)緩存區(qū)域用于與事務(wù)相關(guān)的頁(yè)面的垃圾回收,同時(shí)針對(duì)選中的被回收塊類型的不同采用不同的回收策略。

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

03實(shí)驗(yàn)評(píng)估

1. 設(shè)備IO請(qǐng)求次數(shù)的減少

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

從實(shí)驗(yàn)結(jié)果可以看出,原始的F2FS支持的SQLite事務(wù)在進(jìn)行執(zhí)行三條插入操作的事務(wù)時(shí)會(huì)引入32次寫請(qǐng)求和15次的同步請(qǐng)求,整個(gè)事務(wù)的執(zhí)行時(shí)間需要耗時(shí)55ms;而對(duì)于優(yōu)化后的exF2FS,其產(chǎn)生的寫請(qǐng)求只有三次,且事務(wù)的執(zhí)行時(shí)間縮短到了1.6ms,在執(zhí)行時(shí)間和請(qǐng)求次數(shù)的減少上體現(xiàn)出了很明顯的優(yōu)化效果。

2. 吞吐量的提升

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

以執(zhí)行插入操作為例,exF2FS的事務(wù)執(zhí)行的吞吐量可以達(dá)到原始F2FS在持久化日志模式(圖中F2FS PERSISTENT)下的24倍。

3. 每個(gè)事務(wù)產(chǎn)生的寫量的減少

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

在全部的六種事務(wù)支持方法中,exF2FS產(chǎn)生了最少的總寫量,與原始F2FS在持久化日志模式的事務(wù)支持相比,exF2FS的多文件事務(wù)的寫量可以減少5/6.

04總結(jié)

這項(xiàng)工作成功地解決了日志結(jié)構(gòu)文件系統(tǒng)中事務(wù)支持的三個(gè)主要問(wèn)題:多文件支持、內(nèi)存占用的節(jié)省和透明垃圾回收。使用本文提出的事務(wù)日志結(jié)構(gòu)文件系統(tǒng),我們可以大大簡(jiǎn)化應(yīng)用程序編程,并可以在包括 SQLite、RocksDB 和應(yīng)用程序安裝在內(nèi)的許多流行應(yīng)用程序中顯著提高應(yīng)用程序性能。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 文件系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    283

    瀏覽量

    19860
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    37

    文章

    3221

    瀏覽量

    57499
  • 日志
    +關(guān)注

    關(guān)注

    0

    文章

    131

    瀏覽量

    10616
  • SQlite
    +關(guān)注

    關(guān)注

    0

    文章

    78

    瀏覽量

    15871

原文標(biāo)題:聊聊日志結(jié)構(gòu)文件系統(tǒng)層面的事務(wù)支持

文章出處:【微信號(hào):SSDFans,微信公眾號(hào):SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    嵌入式文件系統(tǒng)μC/FS的日志使用

    ,基于FAT的文件系統(tǒng)解決方案可能是增加系統(tǒng)可靠的一個(gè)的來(lái)源,為了提供掉電保護(hù),F(xiàn)AT實(shí)現(xiàn)需配備日志模塊。
    發(fā)表于 09-19 16:41

    Arm事務(wù)性內(nèi)存擴(kuò)展概述

    本指南介紹事務(wù)性內(nèi)存,它允許自動(dòng)執(zhí)行代碼,而無(wú)需始終實(shí)現(xiàn)限制性能的同步方法。 ARM事務(wù)內(nèi)存擴(kuò)展(TME)是事務(wù)內(nèi)存的ARM實(shí)現(xiàn)。 現(xiàn)代復(fù)雜
    發(fā)表于 08-17 07:57

    XfS文件系統(tǒng),XfS文件系統(tǒng)是什么意思

    XfS文件系統(tǒng),XfS文件系統(tǒng)是什么意思 XfS文件系統(tǒng)是SGI開(kāi)發(fā)的高級(jí)日志文件系統(tǒng),XFS極具伸縮
    發(fā)表于 03-29 10:39 ?4243次閱讀

    FAT文件系統(tǒng)的組織結(jié)構(gòu)

    FAT文件系統(tǒng)的組織結(jié)構(gòu),很好的學(xué)習(xí)資料,快來(lái)下載吧
    發(fā)表于 02-16 16:35 ?2次下載

    Linux日志文件系統(tǒng)解析

    時(shí),如何提供更好的完整。此外本文還介紹了現(xiàn)行的幾種日志文件 系統(tǒng)和下一代日志文件系統(tǒng)。 定義
    發(fā)表于 11-01 15:23 ?0次下載
    Linux<b class='flag-5'>日志</b><b class='flag-5'>文件系統(tǒng)</b>解析

    可以了解的Linux 文件系統(tǒng)結(jié)構(gòu)

    Linux中的文件是什么?它的文件系統(tǒng)又是什么?那些配置文件又在哪里?我下載好的程序保存在哪里了?在 Linux 中文件系統(tǒng)是標(biāo)準(zhǔn)結(jié)構(gòu)的嗎?
    發(fā)表于 04-27 14:06 ?691次閱讀
    可以了解的Linux <b class='flag-5'>文件系統(tǒng)</b><b class='flag-5'>結(jié)構(gòu)</b>

    Linux系統(tǒng)日志文件中的JFS文件系統(tǒng)

    嵌入式linux中文站向大家介紹一下JFS文件系統(tǒng)。Linux系統(tǒng)日志文件中的JFS系統(tǒng), JFS 由IBM 公司開(kāi)發(fā),最初出現(xiàn)在AIX 操
    發(fā)表于 05-05 14:10 ?4981次閱讀
    Linux<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>日志</b><b class='flag-5'>文件</b>中的JFS<b class='flag-5'>文件系統(tǒng)</b>

    汽車電子系統(tǒng)中閃存文件系統(tǒng)的應(yīng)用設(shè)計(jì)與研究

    事務(wù)文件系統(tǒng)可以通過(guò)處理設(shè)備中的事務(wù)日志來(lái)動(dòng)態(tài)建立文件系統(tǒng)的層次結(jié)構(gòu)。這種操作發(fā)生在
    的頭像 發(fā)表于 04-06 15:11 ?1795次閱讀
    汽車電子<b class='flag-5'>系統(tǒng)</b>中閃存<b class='flag-5'>文件系統(tǒng)</b>的應(yīng)用設(shè)計(jì)與研究

    文件系統(tǒng)中的日志系統(tǒng)是如何實(shí)現(xiàn)

    日志 本文來(lái)聊聊文件系統(tǒng)中的日志系統(tǒng),來(lái)看一個(gè)簡(jiǎn)單的日志系統(tǒng)是如何
    的頭像 發(fā)表于 09-29 11:04 ?2125次閱讀
    <b class='flag-5'>文件系統(tǒng)</b>中的<b class='flag-5'>日志</b><b class='flag-5'>系統(tǒng)</b>是如何<b class='flag-5'>實(shí)現(xiàn)</b>的

    xv6的文件系統(tǒng)是如何實(shí)現(xiàn)

    文件系統(tǒng) 。本文直接來(lái)看 xv6 的文件系統(tǒng)這部分是如何實(shí)現(xiàn)的。 文件系統(tǒng)布局 再來(lái)系統(tǒng)的看看 xv6
    的頭像 發(fā)表于 10-12 18:00 ?2403次閱讀
     xv6的<b class='flag-5'>文件系統(tǒng)</b>是如何<b class='flag-5'>實(shí)現(xiàn)</b>的

    FATFS文件系統(tǒng)詳解

    采用的獨(dú)特的文件系統(tǒng)結(jié)構(gòu)CDFS:CDFS是大部分的光盤的文件系統(tǒng)exFATFATFS文件系統(tǒng)FATFS是一個(gè)完全免費(fèi)開(kāi)源的FAT 文件系統(tǒng)
    發(fā)表于 11-29 09:51 ?29次下載
    FATFS<b class='flag-5'>文件系統(tǒng)</b>詳解

    基于OpenHarmony3.1的LittleFS文件系統(tǒng)hdf驅(qū)動(dòng)實(shí)現(xiàn)

    ?? ? LittleFS是一個(gè)小型的Flash文件系統(tǒng),它結(jié)合日志結(jié)構(gòu)(log-structured)文件系統(tǒng)和COW(copy-on-write)
    的頭像 發(fā)表于 09-30 18:32 ?1542次閱讀

    基于OpenHarmony3.1的LittleFS文件系統(tǒng)hdf驅(qū)動(dòng)實(shí)現(xiàn)

    一、簡(jiǎn)介L(zhǎng)ittleFS是一個(gè)小型的Flash文件系統(tǒng),它結(jié)合日志結(jié)構(gòu)(log-structured)文件系統(tǒng)和COW(copy-on-write)
    的頭像 發(fā)表于 06-22 09:42 ?835次閱讀
    基于OpenHarmony3.1的LittleFS<b class='flag-5'>文件系統(tǒng)</b>hdf驅(qū)動(dòng)<b class='flag-5'>實(shí)現(xiàn)</b>

    【嵌入式SD NAND】基于FATFS/Littlefs文件系統(tǒng)日志框架實(shí)現(xiàn)

    文章目錄 【嵌入式】基于FATFS/Littlefs文件系統(tǒng)日志框架實(shí)現(xiàn) 1. 概述 2. 設(shè)計(jì)概要 3. 設(shè)計(jì)實(shí)現(xiàn) 3.1 初始化 `init` 3.2
    的頭像 發(fā)表于 03-14 18:13 ?968次閱讀
    【嵌入式SD NAND】基于FATFS/Littlefs<b class='flag-5'>文件系統(tǒng)</b>的<b class='flag-5'>日志</b>框架<b class='flag-5'>實(shí)現(xiàn)</b>

    【嵌入式SD NAND】基于FATFS/Littlefs文件系統(tǒng)日志框架實(shí)現(xiàn)

    文章目錄【嵌入式】基于FATFS/Littlefs文件系統(tǒng)日志框架實(shí)現(xiàn)1.概述2.設(shè)計(jì)概要3.設(shè)計(jì)實(shí)現(xiàn)3.1初始化`init`3.2日志
    的頭像 發(fā)表于 03-14 18:12 ?1063次閱讀
    【嵌入式SD NAND】基于FATFS/Littlefs<b class='flag-5'>文件系統(tǒng)</b>的<b class='flag-5'>日志</b>框架<b class='flag-5'>實(shí)現(xiàn)</b>