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相关推荐

  1. F2FS文件系统工具编译及使用方法

    有问题 http://blog.chinaunix.net/uid-22497486-id-4075737.html 1·   用git下载f2fs文件系统tools的源代码.下载地址如下:http: ...

  2. F2FS文件系统架构与原理分析(五)——元数据组织及管理

    from : http://blog.chinaunix.net/uid-28989651-id-3911126.html 1. 元数据区域 元数据区域包含以下几种元数据(参见博文:F2FS文件系统架 ...

  3. F2FS文件系统架构与原理分析(三) ——文件索引树

    from : http://blog.chinaunix.net/uid-28989651-id-3902441.html 文件(Files).索引节点(Inodes).数据块索引(Indexing) ...

  4. Linux 知:文件系统

    文章目录 1. 前言 2. 文件 2.1. 一切皆文件 2.2. 文件属性 2.3. 目录结构 2.4. 文件路径 3. 文件系统 3.1. 文件系统种类 3.2. 文件系统特性 3.2.1. 格式化 ...

  5. linux文件系统dentry_NFS 文件系统源代码剖析

    NFS 文件系统概述 NFS(Network File System,网络文件系统)是一种基于网络的文件系统.它可以将远端服务器文件系统的目录挂载到本地文件系统的目录上,允许用户或者应用程序像访问本地 ...

  6. Linux 指令篇:文件系统--fstab

    Linux 指令篇:文件系统-----FSTAB 指令:FSTAB 使用权限 : 超级使用者 使用方式 : 使用编辑器来修改 /etc/fstab (eg. vi /etc/fstab) 说明 : 存 ...

  7. 【转】Linux世界驰骋——文件系统和设备管理

    http://www.linuxdiyf.com/viewarticle.php?id=2662 Linux系统的一个重要特征就是支持多种不同的文件系统,如ext.FAT.ext2.ext3.MINI ...

  8. linux系统中文件编程,Linux当中的文件系统

    1. 设备专用文件(设备文件) 设备专用文件与系统的某个设备相对应.在内核中,每种设备类型都有阈值向对应的设备驱动程序,用来处理设备的所有I/O请求.可以将设备划分为字符设备和块设备两种. 每个设备文 ...

  9. Linux 操作系统原理 — 文件系统 — 管理与优化

    目录 文章目录 目录 磁盘空间管理 磁盘配额 文件系统备份 文件系统的一致性 文件系统性能 高速缓存 块提前读 减少磁盘臂运动 磁盘碎片整理 磁盘空间管理 文件通常存在磁盘中,所以如何管理磁盘空间是一 ...

  10. Linux 操作系统原理 — 文件系统 — 存储布局

    目录 文章目录 目录 磁盘分区 MBR 与分区表 创建 MBR 分区 创建 GPT 分区 分区的格式化 分区的特性 引导块 空闲空间块 inode 区块.data block 区块与超级块 LVM 与 ...

最新文章

  1. vivado2017.4安装教程
  2. Cognos CFG-ERR-0103 无法启动 IBM Cognos 服务
  3. 大唐波斯将军 机器人_你的工作会被机器人取代吗? 作者:大唐波斯将军2015-04-08 09:34...
  4. The Code Is The Model
  5. 对promise.all底层的实现的研究
  6. 递推(hdu2563)
  7. python学生管理系统用类写_python面向对象——学校学生教职工管理系统类的实例...
  8. C语言会生成字节码文件吗,什么是字节码文件?
  9. python3.5手册下载_python3.5.2官方帮助文档 参考手册(CHM版)
  10. 微信小程序--Todos案例
  11. Element组件 Drawer 抽屉的关闭问题
  12. 衡量度量过程性能的几个指标
  13. 无代码白话版通俗的理解机器学习如何对未知的数据进行预测
  14. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.4 角色模型...
  15. 【智哪儿评测】轻松玩转智能家居,萤石B1智家护卫传感套装评测
  16. 转换率是什么?如何提升转换率(CVR)?
  17. 使用.NET Micro ORM “Symbiotic”的简单 CRUD
  18. MISC 入门隐写之用眼睛去倾听
  19. 戴森设计大奖,以可持续化设计改变世界
  20. Google首席软件工程师Joshua Bloch谈如何设计一款优秀的API

热门文章

  1. 高斯克吕格投影中有关带号与经度的关系
  2. Activiti6--入门学习--基础知识环境搭建部署
  3. 软件测试-常见数据库笔试题
  4. 华为LACP的相关配置命令
  5. 非线性控制4——李雅普诺夫稳定性理论
  6. 前端json格式转换
  7. 游戏一般用什么编程语言开发?
  8. linux远程拷贝东西
  9. rslogix5000pide实例_用RSLogix5000梯形图实现一种高级PID运算
  10. 基于RAM的雷达线性调频信号产生