日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

横向对比EXT4,带你感受真实的Linux文件系统F2FS

發布時間:2023/12/31 linux 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 横向对比EXT4,带你感受真实的Linux文件系统F2FS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?更多內核安全、eBPF分析和實踐文章,請關注博客和公眾號:

CSDN博客:內核功守道
公眾號: 內核功守道

概述

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

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

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

對于F2FS,官方文檔和其他博主大都從原理和代碼的角度來分析,我今天會從實戰橫向對比EXT4文件系統的視角,帶你感受真實的F2FS!

代碼范圍

  • device/ $platform/device.mk
  • vendor/proprietary/hardware/fstab/$platform/fstab.bin
  • kernel-4.4/arch/arm64/configs/ $platform_n_defconfig
  • external/f2fs-tools/*
  • system/extras/f2fs_utils/*

F2FS架構

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

一個一級索引塊包含1018個數據塊指針,一個二級索引塊包含1018個一級索引塊指針,一個三級索引塊包含1018個二級索引塊指針。可以索引到一個文件的最大大小是:
4 KB * (929 + 2*1018 + 2*1018*1018 + 1018*1018*1018) := 3.94 TB

F2FS文件系統的標準磁盤布局:

F2FS文件系統的數據結構(node結構):

F2FS和EXT4文件系統比較

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

  • 占用空間
    通過DiskInfo可以明確的顯示,當Data分區的文件系統格式分別為EXT4和F2FS時所占空間的大小對比:
    從Android系統的角度來看,相同的安卓ROM包,在F2FS文件系統下占用閃存的容量會多一些。

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

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

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

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

  • 讀寫速度

左邊EXT4文件系統, 右邊F2FS文件系統

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

隨機讀寫:
F2FS比EXT4的隨機讀取性能提升了25%左右;但是隨機寫入速度,F2FS比EXT4文件系統有了飛躍的提升,隨機寫入性能提升了三倍還多。

由于隨機寫入的性能大大提升了,在類似軟件安裝和系統重啟中,要大量寫入小文件的情況下,F2FS文件系統下有非常喜人的變化。

性能測試

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

  • 不同場景測試

總結

以上是生活随笔為你收集整理的横向对比EXT4,带你感受真实的Linux文件系统F2FS的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。