那曲檬骨新材料有限公司

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

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

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

F2FS文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)

Linux閱碼場 ? 來源:Linux閱碼場 ? 作者:Linux閱碼場 ? 2022-09-15 09:06 ? 次閱讀

一、概述

F2FS是Flash Friendly File System的簡稱。該文件系統(tǒng)是由韓國三星電子公司于2012年研發(fā),只提供給運行Linux內(nèi)核的系統(tǒng)使用,這種文件系統(tǒng)對于NAND閃存類存儲介質(zhì)是非常友好的。并且F2FS是專門為基于 NAND 的存儲設(shè)備設(shè)計的新型開源 flash 文件系統(tǒng)。特別針對NAND 閃存存儲介質(zhì)做了友好設(shè)計。F2FS 于2012年12月進入Linux 3.8 內(nèi)核。目前,F(xiàn)2FS僅支持Linux操作系統(tǒng)

根據(jù)內(nèi)部幾何結(jié)構(gòu)和閃存管理機制(FTL),閃存存儲設(shè)備有很多不同的屬性,所以F2FS的設(shè)計者增加了多種參數(shù),不僅用于配置磁盤布局,還可以選擇分配和清理算法,優(yōu)化性能(并行IO提高性能)

F2FS早期開發(fā)者為Jaegeuk Kim,當時是三星員工,但是三星自家的機器沒有直接使用F2FS,而是CM開源ROM組有做相關(guān)的適配。后來這個開發(fā)者被MOTO挖走,于是我們見到了用F2FS的MOTO X系列。后來又去了華為,故而有了全線F2FS的EMUI5.0,號稱流暢度提升20%華為的P9和Mate9都使用F2FS,流暢度明顯提升。當然F2FS倒沒什么版權(quán)糾紛,Linux體系下的東西自然遵守開源協(xié)定。

對于F2FS,官方文檔和其他博主大都從原理和代碼的角度來分析,我今天會從實戰(zhàn)橫向?qū)Ρ菶XT4文件系統(tǒng)的視角,帶你感受真實的F2FS!

二、F2FS架構(gòu)

F2FS文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)說明:
F2FS使用三種node:inode,直接node,間接node。F2FS分配4KB的空間給一個inode,其中包括929個數(shù)據(jù)塊索引指針,兩個一級索引塊(直接node)指針,兩個二級索引塊(間接node)指針,以及一個三級索引塊(二級間接node)指針。

一個一級索引塊包含1018個數(shù)據(jù)塊指針,一個二級索引塊包含1018個一級索引塊指針,一個三級索引塊包含1018個二級索引塊指針。可以索引到一個文件的最大大小是:

4 KB * (929 + 2*1018 + 2*1018*1018 + 1018*1018*1018) := 3.94 TB

F2FS文件系統(tǒng)的標準磁盤布局:
9f10b528-348b-11ed-ba43-dac502259ad0.png
F2FS文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)(node結(jié)構(gòu)):
9fa55124-348b-11ed-ba43-dac502259ad0.png

三、F2FS和EXT4文件系統(tǒng)比較

碎片整理
EXT4文件系統(tǒng):按照EXT文件系統(tǒng)的作者所說的,在分區(qū)的空余空間在2%以上的情況下EXT分區(qū)是不會產(chǎn)生碎片的。
F2FS文件系統(tǒng):為管理磁盤上的大的連續(xù)的空間以便快速寫入數(shù)據(jù),使用Segment Cleaner從重度碎片化的Segment中轉(zhuǎn)移出有效信息,然后將該Segment清理干凈用于后續(xù)寫入數(shù)據(jù)。

占用空間
通過DiskInfo可以明確的顯示,當Data分區(qū)的文件系統(tǒng)格式分別為EXT4和F2FS時所占空間的大小對比:9ffa8824-348b-11ed-ba43-dac502259ad0.png從Android系統(tǒng)的角度來看,相同的安卓ROM包,在F2FS文件系統(tǒng)下占用閃存的容量會多一些。

F2FS文件系統(tǒng)在每一個文件索引節(jié)點塊中包含了如下f2fs_inode和node_footer。其中f2fs_inode結(jié)構(gòu)中的數(shù)據(jù)索引區(qū)又存在923個數(shù)據(jù)塊指針,每個指針對應(yīng)一個大小為4KB的數(shù)據(jù)塊,但是在通常情況下系統(tǒng)文件索引并不需要用到所有數(shù)據(jù)塊,在最極端情況下文件大小為4KB時,只需要用到一個數(shù)據(jù)塊,剩下的數(shù)據(jù)塊則處于閑置狀態(tài),這就造成了存儲容量在一定程度上的空間浪費,也就是同樣一部手機,在相同的安卓系統(tǒng)中,F(xiàn)2FS文件系統(tǒng)下,閃存容量的占用會相對高一些。

數(shù)據(jù)恢復(fù)
數(shù)據(jù)恢復(fù)機制和數(shù)據(jù)寫入磁盤的方式密切相關(guān)。對于Linux系統(tǒng),其頁緩存機制采用推遲寫入的方式寫入數(shù)據(jù),在內(nèi)存中被標記為臟的頁并不會立即寫回磁盤,以確保系統(tǒng)的性能。因此,存在于內(nèi)存頁中的數(shù)據(jù)在系統(tǒng)發(fā)生意外情況時就會丟失。

對于一種情況,即sync操作時發(fā)生在數(shù)據(jù)寫入磁盤后而在元數(shù)據(jù)寫入磁盤前的系統(tǒng)意外,其數(shù)據(jù)已經(jīng)寫入磁盤但由于沒有索引而無法找回,而F2FS提供了相應(yīng)的恢復(fù)機制找回這些文件數(shù)據(jù)。

集成情況
現(xiàn)在不管是手機或者其他Android設(shè)備集成F2FS比較普遍,但是早期為了兼容性和性能,會把data分區(qū)使用F2FS,而系統(tǒng)和緩存都還是EXT4,這樣F2FS只會影響到第三方應(yīng)用一段時間內(nèi)首次讀寫文件時的速度,這只是使用流暢度的一部分而已。此外比較重要的系統(tǒng)和較小的緩存分區(qū)仍采用EXT4。

讀寫速度
a062a18e-348b-11ed-ba43-dac502259ad0.png左邊EXT4文件系統(tǒng), 右邊F2FS文件系統(tǒng)

連續(xù)讀寫:
二者的連續(xù)讀寫性能沒有太大的變化。

隨機讀寫:
F2FS比EXT4的隨機讀取性能提升了25%左右;但是隨機寫入速度,F(xiàn)2FS比EXT4文件系統(tǒng)有了飛躍的提升,隨機寫入性能提升了三倍還多。

由于隨機寫入的性能大大提升了,在類似軟件安裝和系統(tǒng)重啟中,要大量寫入小文件的情況下,F(xiàn)2FS文件系統(tǒng)下有非常喜人的變化。

四、性能測試

使用工具AdroBench.apk和安兔兔測試

a09a1e3e-348b-11ed-ba43-dac502259ad0.png

不同場景測試

a0e3545a-348b-11ed-ba43-dac502259ad0.png

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

    關(guān)注

    37

    文章

    6892

    瀏覽量

    123738
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3402

    瀏覽量

    42711
  • 數(shù)據(jù)結(jié)構(gòu)

    關(guān)注

    3

    文章

    573

    瀏覽量

    40230

原文標題:橫向?qū)Ρ菶XT4,帶你感受真實的Linux文件系統(tǒng)F2FS

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    用于管理文件方法和數(shù)據(jù)結(jié)構(gòu)案例分析

    文件系統(tǒng)是在存儲設(shè)備中(SD Card、NAND Flash…)組織文件的方法和數(shù)據(jù)結(jié)構(gòu),用于管理文件。AWorks定義了文件系統(tǒng)的通用接口
    的頭像 發(fā)表于 08-03 09:28 ?8843次閱讀

    面向AWorks框架管理文件的方法和數(shù)據(jù)結(jié)構(gòu)

    文件系統(tǒng)是在存儲設(shè)備中(SD Card、NAND Flash…)組織文件的方法和數(shù)據(jù)結(jié)構(gòu),用于管理文件。AWorks定義了文件系統(tǒng)的通用接口
    的頭像 發(fā)表于 06-05 09:18 ?5655次閱讀
    面向AWorks框架管理<b class='flag-5'>文件</b>的方法和<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>

    基于Buildroot的Linux系統(tǒng)構(gòu)建之根文件系統(tǒng)

    基本的Linux根文件系統(tǒng)是Unix文件夾目錄層次結(jié)構(gòu),skeleton是構(gòu)建根文件系統(tǒng)的基礎(chǔ)。   skeleton配置入口:   System configuration --
    發(fā)表于 04-01 10:46 ?2636次閱讀

    嵌入式Linux啟動時間優(yōu)化的秘密之二文件系統(tǒng)

    +SquashFS 對于塊文件系統(tǒng),特性各異: ext4:最適合較大的分區(qū),良好的讀寫性能。 xfs,jfs,reiserfs:在某些讀或?qū)憟鼍爸幸部赡芎芎谩?btrfs,f2fs:利用閃存塊設(shè)
    發(fā)表于 04-03 17:28 ?5212次閱讀
    嵌入式Linux啟動時間優(yōu)化的秘密之二<b class='flag-5'>文件系統(tǒng)</b>

    Linux平臺/proc虛擬文件系統(tǒng)詳解

    Linux 內(nèi)核提供了一種通過 /proc 文件系統(tǒng),在運行時訪問內(nèi)核內(nèi)部數(shù)據(jù)結(jié)構(gòu)、改變內(nèi)核設(shè)置的機制。proc文件系統(tǒng)是一個偽文件系統(tǒng)(即虛擬文件
    發(fā)表于 06-08 10:49 ?1578次閱讀
    Linux平臺/proc虛擬<b class='flag-5'>文件系統(tǒng)</b>詳解

    FATfs文件系統(tǒng)解析

    文件系統(tǒng)所用的數(shù)據(jù)結(jié)構(gòu)和各種函數(shù)聲明,再就是diskio.h,了解與介質(zhì)相關(guān)的數(shù)據(jù)結(jié)構(gòu)和操作函數(shù)。ff.c這個文件相對較大,可以在最后將所實現(xiàn)的函數(shù)大致掃描一遍,之后根據(jù)用戶應(yīng)用層程序
    發(fā)表于 07-18 11:13

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

    ,基于FAT的文件系統(tǒng)解決方案可能是增加系統(tǒng)可靠性的一個的來源,為了提供掉電保護,F(xiàn)AT實現(xiàn)需配備日志模塊。日志模塊通過將更改的意圖記錄在 “日記”數(shù)據(jù)結(jié)構(gòu)中,來跟蹤尚未提交文件系統(tǒng)
    發(fā)表于 09-19 16:41

    怎樣將userdata區(qū)文件系統(tǒng)f2fs換為Ext4呢

    怎樣將userdata區(qū)文件系統(tǒng)f2fs換為Ext4呢?有什么方法嗎?
    發(fā)表于 02-17 07:35

    怎樣將RK3399中data文件系統(tǒng)分區(qū)的格式由原先的f2fs格式變至ext4格式呢

    最近應(yīng)需求修改了AIO-3399C中/data文件系統(tǒng)分區(qū)的格式,由原先的f2fs格式變至ext4格式。可是明明f2fs格式分區(qū)的性能與IO讀取速率都更優(yōu)于ext4。現(xiàn)將鄙人的一些小心得分享于大家
    發(fā)表于 06-24 10:37

    Linux虛擬文件系統(tǒng)實現(xiàn)技術(shù)探討

    文章論述了 Linux 文件系統(tǒng)的邏輯關(guān)系和邏輯結(jié)構(gòu),對VFS 中幾個主要的數(shù)據(jù)結(jié)構(gòu)進行了分析,剖析了Linux 文件系統(tǒng) 中一個物理文件系統(tǒng)
    發(fā)表于 06-08 17:51 ?32次下載
    Linux虛擬<b class='flag-5'>文件系統(tǒng)</b>實現(xiàn)技術(shù)探討

    STM32F10x_3.5版固件的模塊、數(shù)據(jù)結(jié)構(gòu)和索引、文件列表等資料

    本文檔的主要內(nèi)容詳細介紹的是STM32F10x_3.5版固件的模塊、數(shù)據(jù)結(jié)構(gòu)和索引、文件列表等資料。
    發(fā)表于 10-17 16:53 ?0次下載
    STM32<b class='flag-5'>F</b>10x_3.5版固件的模塊、<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>和索引、<b class='flag-5'>文件</b>列表等資料

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

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

    Debian可以從F2FS文件系統(tǒng)運行了

    不少用戶希望通過將 Flash-Friendly File-System (F2FS) 作為根文件系統(tǒng)來啟動和運行 Debian,現(xiàn)在這個目標將有望達成了。
    的頭像 發(fā)表于 01-13 14:37 ?2674次閱讀

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

    本文發(fā)表于FAST 2022,探討日志結(jié)構(gòu)文件系統(tǒng)層面的事務(wù)支持。本文主要對F2FS進行了支持事務(wù)的修改,實現(xiàn)了支持ACID事務(wù)特性的文件系統(tǒng)層面支持。本文通過實驗測試了SQLite和
    的頭像 發(fā)表于 10-16 16:01 ?790次閱讀
    事務(wù)性日志<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>文件系統(tǒng)</b>的設(shè)計及實現(xiàn)

    Linux的文件系統(tǒng)特點

    ,近期經(jīng)常被讀取和寫入,文件系統(tǒng)應(yīng)該有緩存層。 文件應(yīng)該用文件夾的形式組織起來,方便管理和查詢。 Linux內(nèi)核要在自己的內(nèi)存里面維護一套數(shù)據(jù)結(jié)構(gòu),來保存哪些
    的頭像 發(fā)表于 11-09 14:48 ?1259次閱讀
    Linux的<b class='flag-5'>文件系統(tǒng)</b>特點
    皇冠在线娱乐| 百家乐官网庄家胜率| 网上百家乐官网赌场| 百家乐官网真人娱乐场| 百家乐官网免费改| 财神百家乐的玩法技巧和规则| 德州扑克胜率计算器| 百家乐官网平台是最好的娱乐城| 百家乐是不是有假| 博彩百家乐的玩法技巧和规则| 皇冠网小说推荐| 百家乐官网庄闲和的概率| 真人百家乐对决| 华蓥市| 做生意风水门面要求| 大发888娱乐在线客服| 百家乐官网必胜法hk| 罗盘24山度数| 二八杠技巧| 澳门百家乐官网下路写法| 百家乐网上投注代理商| 三易博娱乐| 网上百家乐赌钱| bet365体育在线15| 百家乐官网荷官培训| 钱隆百家乐智能| 金冠百家乐官网娱乐城| 赌博百家乐弱点| 绩溪县| 澳门百家乐备用网址| 六合彩开奖现场| 至富百家乐官网的玩法技巧和规则 | 百家乐网络赌博网| 百家乐官网群东方鸿运| 百家乐最好的平台是哪个| 楚雄市| 百家乐怎样捉住长开| 7080棋牌| 百家乐庄家出千内幕| 邵东县| 自贡百家乐赌场|