本文發(fā)表于FAST 2022,探討日志結構文件系統(tǒng)層面的事務支持。本文主要對F2FS進行了支持事務的修改,實現(xiàn)了支持ACID事務特性的文件系統(tǒng)層面支持。本文通過實驗測試了SQLite和ROCKSDB在支持事務的日志結構文件系統(tǒng)上的運行效率,結果顯示本文實現(xiàn)的事務支持可以簡化應用編程復雜度,顯著提高應用性能。
01背景及動機
目前的應用程序在運行涉及多個文件修改的事務時對于系統(tǒng)的沖突一致性有很高的要求。但是由于在文件系統(tǒng)層面的事務支持的缺失,現(xiàn)在的應用必須在上層使用復雜的協(xié)議來保證事務在涉及多個文件的更新操作時的一致性,從而引入了更多的寫請求和同步命令,對于應用的運行性能會造成很大影響。
當前的事務支持非常有限,部分解決方案只能滿足事務ACID(原子性、一致性、孤立性、持久性)的部分特性,一些方法以犧牲應用性能為代價來支持事務的全部特性,還有一些方案依賴硬件上的配合來實現(xiàn)事務的支持,因此本文想要實現(xiàn)一種不對性能產(chǎn)生影響,也不需要底層硬件配合的操作系統(tǒng)層面的事務支持。
02exF2FS的設計及實現(xiàn)
本文定義了事務性日志結構文件系統(tǒng)應該滿足的三條限制并在F2FS中進行了逐個實現(xiàn):
1. Membership-Oriented Transaction
a)功能解釋:文件系統(tǒng)支持每個事務可以涉及多個文件的修改,而不局限于在一個事務中只能進行一個事務的修改。
b)實現(xiàn)方法:在內核中新定義一個事務文件組的對象,對一個事務涉及的所有文件和臟頁進行管理,具體架構如下圖所示
新定義了一個內核實體:事務文件組,包含一個事務涉及的所有需要修改的文件、需要寫回的臟頁(數(shù)據(jù)頁+結點頁),用于優(yōu)化頁面寫回和垃圾回收的塊重定位記錄的鏈表和用于事務持久化的主提交塊。
exF2FS通過事務文件組這個對象,應用可以指定需要包含在一個事務中的文件,從而支持可以涉及多個文件的修改的事務。
2. Stealing enabled Transaction
a)功能解釋:允許未提交事務的臟頁的寫回,可以用比較小的內存占用實現(xiàn)涉及數(shù)據(jù)量比較大的事務。
b)實現(xiàn)方法:
i.延遲被寫回的頁面的非法化,防止垃圾回收將舊位置的數(shù)據(jù)刪除;
ii.將涉及未提交事務的節(jié)點頁保留在內存中,進行標記防止檢查點在事務提交之前將其持久化。
3. Shadow Garbage Collection
a)功能解釋:垃圾回收模塊可以透明地遷移選中的回收塊,對進行中的事務不會造成任何影響。
b)實現(xiàn)方法:保留一塊專門的頁緩存區(qū)域用于與事務相關的頁面的垃圾回收,同時針對選中的被回收塊類型的不同采用不同的回收策略。
03實驗評估
1. 設備IO請求次數(shù)的減少
從實驗結果可以看出,原始的F2FS支持的SQLite事務在進行執(zhí)行三條插入操作的事務時會引入32次寫請求和15次的同步請求,整個事務的執(zhí)行時間需要耗時55ms;而對于優(yōu)化后的exF2FS,其產(chǎn)生的寫請求只有三次,且事務的執(zhí)行時間縮短到了1.6ms,在執(zhí)行時間和請求次數(shù)的減少上體現(xiàn)出了很明顯的優(yōu)化效果。
2. 吞吐量的提升
以執(zhí)行插入操作為例,exF2FS的事務執(zhí)行的吞吐量可以達到原始F2FS在持久化日志模式(圖中F2FS PERSISTENT)下的24倍。
3. 每個事務產(chǎn)生的寫量的減少
在全部的六種事務支持方法中,exF2FS產(chǎn)生了最少的總寫量,與原始F2FS在持久化日志模式的事務支持相比,exF2FS的多文件事務的寫量可以減少5/6.
04總結
這項工作成功地解決了日志結構文件系統(tǒng)中事務支持的三個主要問題:多文件支持、內存占用的節(jié)省和透明垃圾回收。使用本文提出的事務日志結構文件系統(tǒng),我們可以大大簡化應用程序編程,并可以在包括 SQLite、RocksDB 和應用程序安裝在內的許多流行應用程序中顯著提高應用程序性能。
審核編輯:湯梓紅
-
文件系統(tǒng)
+關注
關注
0文章
294瀏覽量
20293 -
應用程序
+關注
關注
38文章
3322瀏覽量
58747 -
日志
+關注
關注
0文章
143瀏覽量
10823 -
SQlite
+關注
關注
0文章
81瀏覽量
16315
原文標題:聊聊日志結構文件系統(tǒng)層面的事務支持
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
嵌入式文件系統(tǒng)μC/FS的日志使用
Arm事務性內存擴展概述
XfS文件系統(tǒng),XfS文件系統(tǒng)是什么意思
Linux日志文件系統(tǒng)解析

可以了解的Linux 文件系統(tǒng)結構

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

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

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

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

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

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

評論