闪存文件系统(Flash File System)

汽车IVI中控OS Linux driver开发实操(六):Flash存储及FileSystem文件系统 嵌入式设备的大容量存储选项在健壮性、速度和现场更新方法方面对系统的其他部分有很大的影响。大多数设备都采用了某种形式的闪存技术。在过去的几年里,随着存储容量从几十兆增加到几十g,闪存变得便宜得多。对于每个flash技术,都有不同的文件系统选择。 阅读详情

最近调研了一下闪存文件系统,部分结果展示如下,如有错误欢迎评论指正~

一、背景

闪存(flash memory),是一种电子式可清除程序化存储器的形式,允许在操作中被多次擦或写的存储器。

随着现在闪存价格的降低,闪存越来越普及,闪存是一种非易失性存储器,断电数据并不会丢失,同时它的读写速度比机械硬盘(HDD)要快很多。无论是手机还是一些小型的嵌入式设备,闪存都是作为存储器的方式存在,现在手机的 6+128 或者 8+256 这后面的128以及256就是指的闪存(NAND Flash)的大小。现在PC机中SSD也开始成为主流,现在的SSD几乎都是基于闪存技术,目前基本也可以把SSD与闪存等同起来,但是有些情况也得注意区分。

NOR和NAND是市场上两种主要的闪存技术。

二、闪存特性

2.1 NOR Flash与NAND Flash

NOR Flash与NAND Flash有较大区别,NOR Flash更像内存,它有自己独立的地址线和数据线,它的基本存储单元是bit,用户可以随机访问任何一个bit的信息。NOR Flash价格比较贵,容量也比较小。

NAND Flash更像磁盘,它的地址线和数据线是共用的I/O线,NAND Flash以块为单位进行擦除操作。而且NAND Flash与NOR Flash相比,成本要低一些,容量却大得多。

2.2 编程原理

闪存的写入操作必须在空白区域进行,如果目标区域已经有数据,必须先擦除后写入,因此擦除操作是闪存的基本操作。

闪存编程只能将1写为0,而不能将0写成1。所以在Flash编程之前,必须将对应的块先进行擦除,擦除的过程就是将该块中的所有位都写为1的过程,块内的所有字节变为0xFF。因此可以说,编程是将相应位写0的过程,而擦除是将相应位写1的过程,两者的执行过程完全相反。

2.3 NOR Flash与NAND Flash的区别

如前面所说:NOR Flash更像内存,程序可以直接在上面跑,NAND Flash更像磁盘,需要驱动。

它们的擦除方式也有不同:NAND Flash执行擦除操作是十分简单的,而NOR Flash则要求在进行擦除前,先要将目标块内所有的位都写为0。

NOR Flash由于成本的限制,其大小其实也对应着内存的大小,NAND Flash成本比NOR Flash低,其大小也可以对应着磁盘的大小(例如SSD)。

它们之间的其他区别如下:

  1. NOR的读速度比NAND稍快一些。
  2. NAND的写入速度比NOR快很多。
  3. NAND的擦除速度远比NOR快。
  4. NAND的擦除单元更小,相应的擦除电路更加简单。
  5. NAND的实际应用方式要比NOR复杂的多。

2.4 使用要求

  1. 区块擦除(Erasing blocks):闪存的区块在写入之前,要先做擦除的动作。擦除区块的时间一般比较长,因此最好利用系统闲置的时间来进行擦除。

  2. 磨损均衡(Wear leveling):闪存区块的擦除有次数的限制,重复进行擦除以及写入同一个区块将会造成闪存读取速度变慢,甚至损坏而无法使用,因此闪存设备的驱动程序需要将擦除的区块分散,以此来延长闪存寿命。用于闪存的文件系统,也需要设计出平均写入各区块的功能。

  3. 随机存取(Random access):一般的硬盘,读写数据时,需要旋转磁盘,以找到存放的扇区,因此,一般使用于磁盘的文件系统,会作最优化,以避免搜索磁盘的作用。但是闪存可以随机存取,没有查找延迟时间,因此不需要这个最优化。

三、闪存文件系统

传统的文件系统结合闪存转换层(FTL)可以将文件写入闪存,但是它的缺点是写入的效率较差,而且对于闪存的一些特性也没有较好文件系统方案,闪存使用寿命不高。因此,针对闪存特性设计闪存文件系统是十分必要的。

根据前面的信息,感觉现在的闪存文件系统其实就是基于存储器(NAND Flash)。

已经知道了闪存使用的一些特性或要求,设计一个闪存文件系统就要尽量提高闪存的使用寿命,也就是要考虑磨损均衡。同时根据闪存的擦除要求,也就是在写的时候,如果以有数据,那么必须先擦除然后再写入。

3.1 磨损均衡

磨损均衡是闪存文件系统首先要考虑的,如何做到磨损均衡,这对于延长闪存的使用寿命十分重要。

其实做到磨损均衡就是让闪存的每一个区域都被教平衡的访问到,也就是闪存上各个块的热度(访问频率)要达到基本一致。

对于经常被更新的数据块,可以称之为“热”数据块,对长期得不到更新的数据块,称之为“冷”数据块。

数据块经常更新的话,就会经常被擦除,而长期不更行的数据块,不会出现脏页而被擦除,其擦除次数会明显少于存放着经常被更新数据的块。

目前常用的磨损均衡算法大致分为两类,一类是随机性算法,一类是确定性算法。

具体可以参考:https://blog.youkuaiyun.com/dongyanxia1000/article/details/79458082

3.2 区块擦除

为了避免区块擦除时,对存储在该块上的其他数据产生干扰,Flash采取异地更新的策略。

当存储数据需要更新时,文件系统将会把新的复本写入一个新的闪存区块,将文件指针重新指向,并在闲置时期将原有的区块抺除。

被更新的文件数据会被放到别的物理页上,而不是覆盖原来的数据。包含新版本数据的页被称为有效页,新版本数据被称为有效数据。包含旧版本数据的页被称为无效页,或称为脏页,脏页经过擦除操作后成为空闲页,才可以重新写入数据。因为Flash是以块为单位执行擦除的,因此需要将脏页所在块上的所有物理页都擦除,在擦除之前需要检查此块上是否存在有效页,如果存在就必须先转移到其他块上。

3.3 垃圾回收

从3.2得知闪存存储数据更新的方式,旧数据被标记为脏页所以也就涉及到了需要进行垃圾回收,闪存文件系统的垃圾回收策略也尤为重要。

3.4 写放大(写干扰)

异地更新、垃圾回收等,又会造成一个写放大问题,这也是闪存文件系统需要尽量降低的地方。

3.5 现有典型闪存文件系统

  1. JFFS2
  2. YAFFS
  3. F2FS

3.6 总结

现在关于闪存文件系统的研究,对于实现整个文件系统其实比较少,18年三星在顶刊上发表了一篇。目前的研究主要针对一些小点进行研究,目前在磨损均衡方面的研究比较少,对于垃圾回收和写放大方面研究比较多。对于文件系统而言,写放大一直是一个研究的点,垃圾回收在闪存文件系统中可能研究得比较多~

参考

1、Flash与文件系统

地址:https://blog.youkuaiyun.com/u013178472/article/details/72864428

2、闪存

地址:https://baike.baidu.com/item/%E9%97%AA%E5%AD%98/108500?fromtitle=flash%20memory&fromid=3740729&fr=aladdin

3、NAND flash和NOR flash的区别详解

地址:https://blog.youkuaiyun.com/qq_38880380/article/details/78884522

3、闪存文件系统

地址:https://baike.baidu.com/item/%E9%97%AA%E5%AD%98%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F/19278229?fr=aladdin

5、Flash磨损均衡技术解析(wear-leveling)

地址:https://blog.youkuaiyun.com/dongyanxia1000/article/details/79458082

TFFS.DOS闪存文件系统:DiskOnChip嵌入式设备的底层驱动与维护指南 闪存文件系统(Flash File System)是嵌入式存储的核心抽象层,用于解决NAND闪存的坏块管理、写前擦除和磨损均衡等物理限制。其原理依赖于闪存转换层(FTL)实现逻辑地址到物理页的动态映射,在无操作系统介入的裸机环境中尤为关键。技术价值在于保障工业设备在资源受限场景下的数据可靠性与长期稳定性,广泛应用于PLC、医疗监护仪、轨道交通信号系统等遗留嵌入式平台。典型代表如TFFS(True Flash File System)运行于DOS实模式,专为DiskOnChip硬件设计,支撑customs8m 阅读详情

相关推荐

SAP LTMC实战指南:物料主数据高效导入全解析

本文详细解析了SAP LTMC工具在物料主数据高效导入中的实战应用,包括工具选择、项目搭建、模板定制、数据导入全流程及常见问题解决方案。重点介绍了LTMC的预置模板、LTMOM灵活配置、数据校验机制等核心功能,帮助用户快速掌握SAP数据迁移技巧,提升工作效率。

weixin_33738555的博客 436

Flash File System相关文章(一)

转自:http://www.ibm.com/developerworks/cn/linux/l-jffs2/JFFS2 文件系统及新特性介绍级别: 初级生 赵复 (forrest.zhao@intel.com), 软件工程师,开源技术中心(OTC), Intel(China) Software Center2005 年 12 月 22 日JFFS2 是一个开放源码的项目

cwmbecoming的专栏 2360

T265摄像头插着开机后,需要重新插拔才能正常启动

T265摄像头插着开机后,需要重新插拔才能正常启动

qq_35598561的博客 1080

构建驱动模块3--STM32 NandFlash yaffs2文件系统移植

            构建驱动模块3--基于STM32 Nand Flash yaffs2文件系统移植   Yaffs(Yet Another FlashFile System)文件系统是专门针对NAND闪存设计的嵌入式文件系统,目前有YAFFS和YAFFS2两个版本,两个版本的主要区别之一在于YAFFS2能够更好的支持大容量的NAND FLASH芯片。本程序实现YAFFS2的移植。 一、硬...

u011996698的博客 6706

【verilog语法详解:从入门到精通】

Verilog语法详解:从入门到精通 摘要:本文系统讲解Verilog硬件描述语言的核心语法与应用。Verilog作为数字电路设计标准,具有并行执行、硬件映射和层次化三大特点。文章从基础语法框架入手,详细介绍了模块定义、端口类型(input/output/inout)声明规范,以及线网型(wire)和寄存器型(reg)两种核心数据类型的区别与应用场景。重点讲解了组合逻辑(assign连续赋值)和时序逻辑(always块)的实现方式,包括阻塞赋值(=)与非阻塞赋值(<=)的关键差异。此外,还涵盖了参数(

m0_58476824的博客 4687

【低空经济】森林火情高精度监测与早期预警无人机巡护方案

在全球范围内,森林火灾已成为一个严重的生态和社会问题。它不仅对自然生态系统造成了毁灭性的影响,还对人类的生命财产安全构成了极大的威胁。根据国际森林发展组织的统计,全球每年因森林火灾造成的经济损失高达数百亿美元,甚至在某些年份,火灾损失占到某些国家国民经济总量的相当一部分。因此,开展高效的森林火情监测与早期预警工作显得尤为重要。随着科技的发展,无人机作为新兴的监测工具,以其高效、灵活和经济的特点在森林火灾监测领域展现出了巨大的潜力。

2502_92579126的博客 1213

【嵌入式】嵌入式系统常见文件系统(YAFFS、JFFS2、ext234、UBIFS、FAT、initramfs、littlefs、SquashFS、exFAT)等的功能介绍、使用场景、优缺点对比

在嵌入式系统开发中,文件系统是一个不可或缺的部分。它负责存储和管理数据,是嵌入式设备正常运行的基础。本文将介绍几种常见的嵌入式系统文件系统,包括YAFFS、JFFS2、ext2/3/4、UBIFS、FAT、initramfs、littlefs、SquashFS和exFAT,并探讨它们的起源、特性、适用存储介质、适用场景以及优缺点。

科技改变人类,技术成就未来 5263

基于YOLOv10的机器人抓取引导系统:从物体检测到精准抓取

python# 数据标注工具简化版import os"""启动标注工具""""""标注单张图像"""print(f"标注图像: {os.path.basename(img_path)}")print("请在图像上绘制抓取矩形框...")# 这里应该实现交互式标注界面# 简化版本直接返回示例标注# 示例标注数据"""保存标注结果"""# 保存为YOLO格式# 转换为YOLO格式。

YOLO 378

文件系统缓存,filesystem cache

文件系统缓存 filesystem cache 许多人没有意识到。文件系统缓存对于性能的影响。Linux系统默认的设置倾向于把内存尽可能的用于文件cache,所以在一台大内存机器上,往往我们可能发现没有多少剩余内存。(free命令显示的第二行输出,如下)。文件系统cache可以加速磁盘操作,使系统有更好的IO性能,代价只是把一些空闲的内存利用起来了。 我们需要预留多少内存做文件系统cache...

洪文聊架构 1万+

HFSS实战项目——GPS北斗双模微带天线

本文设计了一款方形圆极化微带天线应用于北斗B1和GPSL1频段,满足高增益、低VSWR、适当方向图等要求。设计中心频率为1568MHz,介质板采用厚度h=1.6mm的Arlon AD450(tm)板,相对介电常数为4.5,采用探针馈电。

2401_87464239的博客 1769

飞牛fnNAS虚拟机开启OVS导致失联的解决

摘要:用户在使用飞牛NAS时发现开启OVS网络功能后导致NAS失联。通过多种尝试(包括开关OVS、更换系统版本、手工配置、更换网卡、处理器检查等)后发现,OVS启用状态下DHCP无法获取IP地址,手动设置IP可暂时恢复网络。但重启后问题依旧,初步判断为OVS功能存在bug。目前临时解决方案是在需要时手动开关OVS,或考虑其他虚拟化方案。用户计划后续探索替代方案,并等待官方修复该问题。

dgnankai的专栏 4339

F2FS文件系统架构与原理分析(一)——设计背景与功能

1 F2FS文件系统简介 F2FS (Flash Friendly File System) 是专门为基于 NAND 的存储设备设计的新型开源 flash 文件系统。特别针对NAND 闪存存储介质做了友好设计。F2FS 于2012年12月进入Linux 3.8 内核。目前,F2FS仅支持Linux操作系统。 F2FS 选择 log-structured文件系统方案,并使之更加适应新

zwj0403的专栏 5424

图神经网络实战——利用节点回归预测网络流量

在机器学习中,回归指的是对连续值的预测。通常与分类形成鲜明对比,分类的目标是找到正确的类别(即离散值,而非连续值)。在图数据中,分类和回归分别对应于节点分类和节点回归。在本节中,我们将尝试预测每个节点的连续值,而非分类变量。

盼小辉丶的博客 1万+

JFFS和YAFFS文件系统

YAFFS/JFFS YAFFS-yet another flash file system,它是专门针对NAND的文件操作系统;YAFFS2能更好的支持大容量NAND FLASH芯片,作者是新西兰的 Charles Manning为一家名叫Alpha one 的公司(http://www.aleph1.co.uk/)设计的,是第一个为NAND Flash设计的文件系统.共两个版本YA

tangdichao的专栏 576

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

f2fs学习笔记 - 1. f2fs概述

1. 前言 本文主要通过回答几个问题来概要了解f2fs,这几个问题包括: f2fs是什么? 为何引入f2fs? f2fs如何工作? f2fs如何做到随机写入顺序化? f2fs如何解决雪崩问题? 2. f2fs是什么? F2FS (Flash Friendly File System) 是专门针对SSD、eMMC、UFS等闪存设备设计的文件系统。基于LFS,同时解决了LFS的一些问题。由三星工程师Jaegeuk Kim于2012年10月发布到Linux社区,并于2012年12月进入Linux 3.8 内核

HZero 9286

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

[转]Linux 文件系统剖析: Linux flash 文件系统剖析 选择和架构

选择和架构 M. Tim Jones, 顾问工程师, Emulex Corp. 简介:您之前可能听说过 Journaling Flash File System(JFFS)和 Yet...

86

YAFFS文件系统在嵌入式Linux上的实现

 引言       随着嵌入式技术在各种电子产品中的广泛应用,嵌入式系统中的数据存储和管理已经成为一个重要的研究课题。Flash存储器具有速度快、容量大、成本低等很多优点,因此在嵌入式系统中被广泛用做外存储器件。Flash主要有NOR和NAND两种类型。目前,针对NOR Flash设计的文件系统JFFS/JFFS2在嵌入式系统中已得到广泛的应用;随着NAND作为大容量存储介质的普及,基于NAND闪

DerekYao的专栏 3068

嵌入式系统中的文件系统以及MTD

节介绍File System和MTD技术 一 FS 熟知的FS有ext2,3,4.但是这些都是针对磁盘设备的。而ES中一般的存储设备为Flash,由于Flash的特殊性: Flash存储按照Block size进行划分,而一个BLS一般有几十K。(对比磁盘的一个簇才512个字节)。这么大的BLS有什么坏处呢?很明显,擦除一个BL就需要花费很长的时间了。另外,FLASH操作,一次必

行者无疆 Happy Programming! 1033

Yaffs文件系统简介

1简介 1.1应用场合 Yaffs(YetAnotherFlashFileSystem)文件系统是专门针对NAND闪存设计的嵌入式文件系统,目前有YAFFS和YAFFS2两个版本,两个版本的主要区别之一在于YAFFS2能够更好的支持大容量的NANDFLASH芯片。 1.2Yaffs文件系统数据在NAND上的存储方式 Yaffs对文件系统...

weixin_30950607的博客 88

jffs与yaffs 文件系统的区别

源地址:http://www.cnblogs.com/simonshi/archive/2010/03/10/1682932.htmlJFFS是由瑞典的Axis Communications Ab公司开发的(1999,以GNU发布),针对flash设备的特性为嵌入式设备开发的.(

sydjm的专栏 1223

YAFFS文件系统

引言       随着嵌入式技术在各种电子产品中的广泛应用,嵌入式系统中的数据存储和管理已经成为一个重要的研究课题。Flash存储器具有速度快、容量大、成本低等很多优点,因此在嵌入式系统中被广泛用做外存储器件。Flash主要有NOR和NAND两种类型。目前,针对NOR Flash设计的文件系统JFFS/JFFS2在嵌入式系统中已得到广泛的应用;随着NAND作为大容量存储介质的普及,

658

linux kernel系列四:嵌入式系统中的文件系统以及MTD

本节介绍File System和MTD技术 一 FS 熟知的FS有ext2,3,4.但是这些都是针对磁盘设备的。而ES中一般的存储设备为Flash,由于Flash的特殊性: Flash存储按照Block size进行划分,而一个BLS一般有几十K。(对比磁盘的一个簇才512个字节)。这么大的BLS有什么坏处呢?很明显,擦除一个BL就需要花费很长的时间了。另外,FLASH操作,一次必须

zs_pro_popper的专栏 898

yaffs文件类型_Yaffs文件系统结构(转载)

1 Yaffs文件系统结构1.1 简介 1.1.1 应用场合Yaffs(Yet Another Flash File System)文件系统是专门针对NAND闪存设计的嵌入式文件系统,目前有YAFFS和YAFFS2两个版本,两个版本的主要区别之一在于YAFFS2能够更好的支持大容量的NAND FLASH芯片。Yaffs文件系统有些类似于JFFS/JFFS2文件系统,与之不同的是JFFS1/2文件...

weixin_36323859的博客 171
上一篇: 运行网络中搜寻到的python程序代码——以长短期记忆人工神经网络(lstm)python代码为例
下一篇: WinMIPS64工具进行MIPS指令集实验(一)
SweeNeil
博客等级 码龄9年 251粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值