本文發(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)如下圖所示
新定義了一個(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ù)提交之前將其持久化。
3. Shadow Garbage Collection
a)功能解釋:垃圾回收模塊可以透明地遷移選中的回收塊,對(duì)進(jìn)行中的事務(wù)不會(huì)造成任何影響。
b)實(shí)現(xiàn)方法:保留一塊專門的頁(yè)緩存區(qū)域用于與事務(wù)相關(guān)的頁(yè)面的垃圾回收,同時(shí)針對(duì)選中的被回收塊類型的不同采用不同的回收策略。
03實(shí)驗(yàn)評(píng)估
1. 設(shè)備IO請(qǐng)求次數(shù)的減少
從實(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. 吞吐量的提升
以執(zhí)行插入操作為例,exF2FS的事務(wù)執(zhí)行的吞吐量可以達(dá)到原始F2FS在持久化日志模式(圖中F2FS PERSISTENT)下的24倍。
3. 每個(gè)事務(wù)產(chǎn)生的寫量的減少
在全部的六種事務(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)用程序性能。
審核編輯:湯梓紅
-
文件系統(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)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論