linux文件系统F2FS,文件系统F2FS也将造福SSD
F2FS有什么背景讓華為大肆宣揚呢?
F2FS (Flash Friendly File System) 是三星做的一個開源的針對于flash
memory的文件系統,已經被Linux merge到了kernel中,專門為基于 NAND 的存儲設備設計的新型開源 flash
文件系統。特別針對NAND 閃存存儲介質做了友好設計。F2FS 于2012年12月進入Linux 3.8
內核。目前,F2FS僅支持Linux操作系統。
由三星在NAND閃存上使用,它的特點是相較EXT3/4分區格式,顯著提高了4K性能,也就是小文件的讀取速度。
【F2FS與SSD的緣分】
針對SSD的各種特性,F2FS文件系統做了一些針對性的優化。
1)采用Log-structured File
System的形式。因為這種形式把整個存儲設備當作一個環形log一樣順序的寫,這符合SSD順序寫的特性。整個文件系統被分為了以segment為單位的區間,每個segment固定大小為2MB。一個section由多個連續的segment組成,一個zone由多個section組成。默認情況下section和zone的size被設定為一個segment的size,但可以隨便改。
align with the zone size
|->
align with the segment size
_________________________________________________________________________
| ?| ?| ?Segment ?|
Node ?| ?Segment ?|
|
| Superblock | Checkpoint |
Info. ?| ?Address ?|
Summary ?| Main |
| ?(SB)
| ?(CP)
| Table (SIT) | Table (NAT) |
Area (SSA) | ?|
|____________|_____2______|______N______|______N______|______N_____|__N___|
. ?.
.
.
.
.
.__________________________________________
|_Segment_|_..._|_Segment_|_..._|_Segment_|
. ?.
._________._________
|_section_|__...__|_
. ?.
.________.
|__zone__|
2)解決Wandering Tree Problem。首先定義Wandering Tree
Problem:每一次寫操作都要寫入一個新的位置,在更新inode存儲中,要更新direct
table的指針也需要重寫,這個page也要寫到新的block中,而上一級的indirect
table因此也需要重寫,這樣一連串的重寫會一直走到樹根。同時inode map和checkpoint
block也需要重寫。他依然采用了經典的inode,但做了一個Node Address
Table(NAT),這個表是扁平化的,包含了所有node
block的位置,可以認為inode里存儲的是邏輯地址,NAT轉換為真實的物理地址。
3)Block分配。它將數據和node劃分為cold、warm、hot三種類型,共計6種形式。
這些數據被分配在6個log中。他把appended
data當作cold,因為只寫一次就好,把更新的data當作warm,因為這到后來需要garbage
collection。這就充分利用了SSD的特性:GC的時候,由于Warm中的data經常需要更新,因此里面包含了大量的invalid
page,這是桌重要找的地方。
4)Garbage Collection
兩種策略:Greedy和Cost-benefit。Greedy就找invalid
pages最多的block來當victim,而Cost-benefit算法不但要考慮invalid pages,還要考慮segment
age,以延長SSD讀寫壽命。
附錄:【關于inode】
inode是什么?
理解inode,要從文件儲存說起。
文件儲存在硬盤上,硬盤的最小存儲單位叫做"扇區"(Sector)。每個扇區儲存512字節(相當于0.5KB)。
操作系統讀取硬盤的時候,不會一個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取一個"塊"(block)。這種由多個扇區組成的"塊",是文件存取的最小單位。"塊"的大小,最常見的是4KB,即連續八個
sector組成一個 block。
文件數據都儲存在"塊"中,那么很顯然,我們還必須找到一個地方儲存文件的元信息,比如文件的創建者、文件的創建日期、文件的大小等等。這種儲存文件元信息的區域就叫做inode,中文譯名為"索引節點"。
每一個文件都有對應的inode,里面包含了與該文件有關的一些信息。
更多內容,請關注微信公眾號:存儲隨筆,ID:
Memory-logger,
總結
以上是生活随笔為你收集整理的linux文件系统F2FS,文件系统F2FS也将造福SSD的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php做推送服务端实现ios消息推送
- 下一篇: 智慧家居·万物互联:我的智能花盆DIY之