文件系统笔记ext4 yaffs2 fat ubi

嵌入式NAND闪存文件系统选型:JFFS2、YAFFS2与UBIFS深度对比 在嵌入式系统与存储技术领域,文件系统是管理存储设备的核心软件层。其核心原理在于通过特定的数据组织与索引结构,实现对存储空间的高效、可靠管理。针对NAND闪存介质的独特硬件特性(如异地更新、有限的擦写次数),专门设计的闪存文件系统提供了关键的技术价值:它们通过实现磨损均衡、垃圾回收等机制,显著延长了存储设备的使用寿命,并优化了读写性能。这类技术广泛应用于对可靠性、功耗和成本敏感的物联网设备、移动终端及工业控制等场景。本文聚焦于嵌入式Linux环境下三种主流的闪存专用文件系统——JFFS2、YAFFS2和UBI 阅读详情

因为是笔记,那就简单的分几个模块简单的记录下学习的内容好了。

Linux 支持几种不同的文件系统。每个文件系统都有自己的优缺点和性能特征。文件系统的一个重要属性是日志,它允许系统在崩溃后更快地恢复。通常,日志文件系统比非日志文件系统更好。ext4和yaffs2是日志类型的文件系统。

日志文件系统就是一种具有故障恢复能力的文件系统,它利用日志来记录尚未提交到文件系统的修改,以防止元数据破坏(请参见图 1)。但是如众多其他 Linux 解决方案一样,日志文件系统有多种方案供您选择。下面就让我们一起简短回顾一下日志文件系统的历史,然后再看一看现行的几种文件系统,看看它们之间有什么区别。

扩展文件系统的简史

第一个受 Linux 支持的文件系统是 Minix 文件系统。这个文件系统有严重的性能问题,因此出现了另一个针对 Linux 的文件系统,即扩展文件系统。第 1 个扩展文件系统(ext1)由 Remy Card 设计,并于 1992 年 4 月引入到 Linux 中。ext1 文件系统是第一个使用虚拟文件系统(VFS)交换的文件系统。虚拟文件系统交换是在 0.96c 内核中实现的,支持的最大文件系统为 2 GB。
第 2 个扩展文件系统(ext2)也是由 Remy Card 实现的,并于 1993 年 1 月引入到 Linux 中。它借鉴了当时文件系统(比如 Berkeley Fast File System [FFS])的先进想法。ext2 支持的最大文件系统为 2TB,但是 2.6 内核将该文件系统支持的最大容量提升到 32TB。
第 3 个扩展文件系统(ext3)是 Linux 文件系统的重大改进,尽管它在性能方面逊色于某些竞争对手。ext3 文件系统引入了日志 概念,以在系统突然停止时提高文件系统的可靠性。虽然某些文件系统的性能更好(比如 Silicon Graphics 的 XFS 和 IBM® Journaled File System [JFS]),但 ext3 支持从使用 ext2 的系统进行就地(in-place)升级。ext3 由 Stephen Tweedie 实现,并于 2001 年 11 月引入。

今天,我们已经拥有第 4 个扩展文件系统(ext4)。ext4 在性能、伸缩性和可靠性方面进行了大量改进。最值得一提的是,ext4 支持 1 EB 的文件系统。ext4 是由 Theodore Tso(ext3 的维护者)领导的开发团队实现的,并引入到 2.6.19 内核中。目前,它在 2.6.28 内核中已经很稳定(到 2008 年 12 月为止)。

ext4 从竞争对手那里借鉴了许多有用的概念。例如,在 JFS 中已经实现了使用区段(extent)来管理块。另一个与块管理相关的特性(延迟分配)已经在 XFS 和 Sun Microsystems 的 ZFS 中实现。

在 ext4 文件系统中,您可以发现各种改进和创新。这些改进包括新特性(新功能)、伸缩性(打破当前文件系统的限制)和可靠性(应对故障),当然也包括性能的改善。

ext3 分配空间的方式是其主要缺点之一。ext3 使用空闲空间位映射来分配文件,这种方式不是很快,并且伸缩性不强。ext3 的格式对小文件而言是很高效的,但对于大文件则恰恰相反。ext4 使用区段取代 ext3 的机制,从而改善了空间的分配,并且支持更加高效的存储结构。区段 是一种表示一组相邻块的方式。使用区段减少了元数据,因为区段维护关于一组相邻块的存储位置的信息(从而减少了总体元数据存储),而不是一个块的存储位置的信息。

ext4 的区段采用分层的方法高效地表示小文件,并且使用区段树高效地表示大文件。例如,单个 ext4 inode 有足够的空间来引用 4 个区段(每个区段表示一组相邻的块)。对于大文件(包括片段文件),一个 inode 能够引用一个索引节点,而每个索引节点能够引用一个叶节点(引用多个区段)。这种持续的区段树为大文件(尤其是分散的文件)提供丰富的表示方式。这些节点还包含自主检查机制,以阻止文件系统损坏带来威胁。


硬盘分区首先被分为好多个 block。这些 block 聚在一起,被分成几组,也就是 block group。每个 block group 都有一个 group descriptor。所有这些 descriptor 被聚在一起,放在硬盘分区的开头部分,跟在 super block 的后面。从 group descriptor 我们可以通过 block 指针,找到这个 block group 的 inode table 和 block bitmap 等等。从 inode table 里面,我们就可以看到一个个的 inode 了。从一个 inode,我们通过它里面的 block 指针,就可以进而找到存放用户数据的那些 block。我们还要提一下,block 指针不是可以到处乱指的。一个 block group 的 block bitmap 和 inode bitmap 以及 inode table,都依次存放在这个 block group 的开头部分,而那些存放用户数据的 block 就紧跟在它们的后面。一个 block group 结束后,另一个 block group 又跟着开始。

基于NAND 文件系统的坏块管理JFFS2、 YAFFS2、 FlashFx 这些专门针对 NAND 的文件系统可以对坏块进行管理。NAND 管理中间件。有一些中间件(Middleware)专门用于 NAND 管理,比如 UBI。

vfat 文件系统

vfat 文件系统(也称为 FAT32)没有日志功能,且缺乏完整的 Linux 文件系统实现所需的许多特性。它可用于在 Windows 和 Linux 系统之间交换数据,因为 Windows 和 Linux 都能读取它。不要将这个文件系统用于 Linux,除非要在 Windows 和 Linux 之间共享数据。如果您在一个 vfat 磁盘上解压缩一个 Linux 归档文件,那么您将丢失权限(比如执行权限),还会丢失该归档文件中可能存储的符号链接。


嵌入式文件系统简介(一) —— Linux MTD设备文件系统 1. 文件系统简介 文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。在写入新数据之前,用户不必关心硬盘上的那个块地址没有被使用,硬盘上的存储空间管理(分配和释放)功... 阅读详情

相关推荐

【嵌入式】从NAND到SD卡:九大嵌入式文件系统(YAFFS/JFFS2/UBIFS等)的选型实战与避坑指南

本文深入探讨了嵌入式文件系统选型的核心挑战与实战经验,重点对比了YAFFS2、JFFS2、UBIFS等主流文件系统在NAND闪存和SD卡上的性能表现与适用场景。通过实测数据与案例分析,提供了针对不同存储介质和业务场景的选型建议与避坑指南,帮助开发者优化嵌入式系统的稳定性和性能。

weixin_42526015的博客 207

linux中常用文件系统介绍——cramfs、 JFFS2、 NFS、 initrd、 yaffs2、 Ext4、 squashfs

linux 文件系统

holly的专栏 3484

汽车IVI中控OS Linux driver开发实操(六):Flash存储及FileSystem文件系统

嵌入式设备的大容量存储选项在健壮性、速度和现场更新方法方面对系统的其他部分有很大的影响。大多数设备都采用了某种形式的闪存技术。在过去的几年里,随着存储容量从几十兆增加到几十g,闪存变得便宜得多。对于每个flash技术,都有不同的文件系统选择。

码农17年的博客 664

嵌入式开发中常用文件系统介绍( cramfs、 JFFS2、 NFS、 initrd、 yaffs2、 ext4以及squashfs)

嵌入式常见文件系统

weixin_42031299的博客 3977

ubi文件系统故障排查

各种ubi故障的汇总,及一些解决办法,大部分来自网路,自己总结的。

Linux下的flash文件系统的性能比较,jffs2,yaffs2,ubifs

Linux下的flash文件系统的性能比较,jffs2,yaffs2,ubifs

yffs2,jffs2、ext4,ubi根文件镜像的格式的区别和优缺点

yffs2,jffs2、ext4,ubi根文件镜像的格式的区别和优缺点, 不同的介质,如nand,norflash,inad,emmc,不同的格式 正在酝酿。

rjszcb的博客 1238

UBI及EXT4文件系统

UBIFS介绍: 由于超大容量Nand Flash的普及,YAFFS等皆无法再去控制Nand Flash的空间,于是在2006年由IBM与Nokia的工程师设计开发了UBI(Unsorted Block Image)及其UBIFS文件系统,专门为了解决MTD(Memory Technology Device)设备所遇到的瓶颈。UBIFS可以认为是JFFS2文件系统的下一代产品。JFFS2运行在MTD设备之上,而UBIFS则只能工作于UBI volume之上,且与一般的block device不兼容,UBIFS涉及三个子系统: MTD子系统,提供对flash芯片的访问接口,MTD子系统提供了MT

文件系统的选择

一些常用的嵌入式文件系统包括FAT32、ext4、JFFS2、UBIFS、squashfs等,在接下来的内容中我们会介绍这些文件系统的区别以及如何选择。在选择嵌入式文件系统时,需要考虑以下几个因素:1.存储介质:选择文件系统时需要考虑使用的存储介质,例如闪存、SD卡、硬盘等。不同存储介质对文件系统的要求会有所不同。2. 功能需求:根据应用的功能需求选择适合的文件系统。例如,如果需要实现实时数据存储,可以选择支持日志记录的文件系统。3. 系统资源:内存和处理器的资源限制会影响文件系统的选择。

水枂的博客 1614

DeepLearningTool-深度学习分类-和HALCON的详细过程

损失函数:衡量预测误差,用于模型优化。混淆矩阵:评估分类模型性能,提供详细预测结果分析。两者结合使用,可以全面评估和优化模型。过拟合:模型过于复杂,捕捉了噪声,表现为训练集误差低,测试集误差高。欠拟合:模型过于简单,无法捕捉数据模式,表现为训练集和测试集误差都高。调整参数过拟合:简化模型、增加数据、使用正则化、早停、Dropout。欠拟合:增加模型复杂度、特征工程、增加训练时间、调整学习率、使用集成方法。通过合理调整参数和方法,可以有效避免过拟合和欠拟合,提升模型性能。

weixin_36672036的博客 6188

RTOS与Linux功能差异与应用场景全面对比

在嵌入式系统的开发中,操作系统的选择至关重要。和是两种广泛应用的操作系统,它们在功能、设计目标以及应用领域中各具优势。随着嵌入式系统的不断发展,已成为嵌入式行业的大趋势。那么,这两者到底有什么不同呢?

硬核科技 402

EXt4 文件系统

Linux 支持几个不同的文件系统。这些文件系统中,一些是专用的网络文件系统或为其他操作系统开发的文件系统,但绝大部分还是用作 Linux 本地文件系统 — 您可以将 Linux 根(/)和系统目录放在这种文件系统里。目前(2008年),这一类文件系统包括 ext2、ext3、ReiserFS、XFS 和 Journaled File System (JFS)。但是文件系统一直在不断设计和开发中,

changtao381的专栏 1664

全网首发--Unet3+改进16:在不同位置添加RepLKBlock超大卷积核

本文提出了一种基于大核卷积的神经网络架构RepLKNet,旨在缩小CNN与ViTs之间的性能差距。通过重新审视CNN中的大核设计,研究证明使用少量大卷积核替代多个小核能获得更强大的性能。提出的RepLKNet采用31×31大卷积核,在ImageNet和下游任务上取得了与SwinTransformer相当或更好的结果,同时具有更低延迟。文章详细介绍了实现步骤:(1)创建RepLKBlock模块文件;(2)在模型层中添加注意力机制;(3)在UNet模型中集成RepLKBlock;(4)完成训练流程。该方法展现了

AIcurator的博客 621

文件系统笔记ext4 yaffs2 fat ubi

因为是笔记,那就简单的分几个模块简单的记录下学习的内容好了。 Linux 支持几种不同的文件系统。每个文件系统都有自己的优缺点和性能特征。文件系统的一个重要属性是 日志 ,它允许系统在崩溃后更快地恢复。通常,日志文件系统比非日志文件系统更好。 ext4和yaffs2是日志类型的文件系统。 日志文件系统就是一种具有故障恢复能力的文件系统,它利用日志来记录尚未提交到文件系统的修改,以防止元

dxm2025的专栏 856

5、数据计算与处理技巧全解析

本文深入解析了Tableau中的多种数据计算与处理技巧,涵盖LOD计算、日期与字符串处理、计数优化、数据混合限制及自定义总计等核心内容。通过实际案例和流程图,系统讲解了各技巧的应用场景、实现步骤与注意事项,并提供性能优化建议和常见问题解答,帮助用户提升数据分析效率与可视化精度。同时展望了未来数据计算技术的发展趋势,是Tableau用户进阶必备的全面指南。

peach的博客 82

PyInstaller打包后在Win7无法运行,提示缺少`api-ms-win-core-path-l1-1-0.dll`问题解决

这个问题的关键在于Python 3.12和Windows 7之间的兼容性问题。解决方法是使用Python 3.8.8版本进行打包,确保程序能够在Windows 7系统上运行。如果你也遇到类似的问题,不妨尝试降级Python版本,看看是否能够解决。希望我的经验能够帮到你!如果你在使用PyInstaller打包时遇到其他问题,欢迎留言讨论。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 994

嵌入式开发中常见的文件系统

本文主要介绍嵌入式开发中常用的文件系统类型。对比其差异性及优劣势,以便在后续开发时,选择更合适的嵌入式文件系统。

诸葛一帆丶的博客 3485

多模型机器学习生存预测分析:AUC比较、生存分层与SHAP解释

本文研究了多种机器学习模型在心力衰竭患者生存预测中的应用。通过比较逻辑回归、随机森林、XGBoost、LightGBM和梯度提升机五种模型的AUC表现,选择最优预测模型。基于最优模型的预测概率对患者进行风险分层,并使用Kaplan-Meier生存分析和log-rank检验验证分层的有效性。最后采用SHAP方法解释模型决策过程,识别关键预测因素。研究提供了从模型构建、评估到解释的完整技术流程,为临床预后预测提供了可复现的分析框架。

AI的内部世界的博客 157

Linux MTD设备文件系统

1. 文件系统简介 文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。在写入新数据之前,用户不必关心硬盘上的那个块地址没有被使用,硬盘上的存储空间管理(分配和释放)功能由文件系统自动完成,用户只需要记住数据被写入到了哪个文件中。 文件系统通常使用硬盘和光盘这样的存储设备,并维护

我的博客 2773

OpenFeign整合Sentinel实现熔断降级

常用于实现熔断降级的框架有Hystrix、Sentinel,我们常说的Spring Cloud项目说的其实是Spring Cloud Netflix,Hystrix以及前面学习过的Ribbon都是Netflix系的家族成员,所以使用Hystrix可以非常简单的与当前项目中使用到的OpenFeign、Ribbon整合,但笔者并没有选择Hystrix,而是选择阿里系的Sentinel。 为什么选择Sentinel而不是Hystrix?从接入简单考虑可能选择Hystrix是不错的选择,但笔者对Hyst...

吴就业 6718

华为OD机试真题 新系统 2026-07-22 Java&Go&C 实现【最小代价完成论文评审】

某校有 n 篇论文需要分配给教师评审。 每篇论文 i 可由 files[i] 对应的教师列表中任一教师评审。 每篇论文至少需要一名教师评审。 每位教师 t 不论被分配多少篇论文,其评审费用固定为 cost[t]。 请给出参与评审教师数量最少时的总费用。 如果存在多种方案满足教师数量最少,则选择总费用最小的方案。

MISAYAONE的博客 149

mtd block device和block device区别,MTD设备的一般不宜挂载fat,ext2,ext3等文件系统原因

文章系转载:https://dolaameng328.iteye.com/blog/1502547 本文添加自己理解: 1、可以解释为什么MTD设备的一般不宜挂载fat,ext2,ext3等文件系统——原因是MTD设备没有硬件的坏块管理和负载均衡等,需要软件层面做这些。 2、mtd block device和block device区别——详细看后文对比表 ...

sinbingzoo的专栏 2254

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

文件系统_文件IO

​ 在 系统中有一个重要的概念:一切皆文件,它把一切资源都看作是文件,包括硬件设备,通常称为设备文件。​ 为了高效地存储和管理数据,文件系统在存储介质上建立了一种组织结构,这些结构包括操作系 统引导区、目录和文件,就如同图书馆给不同类的书籍进行类、编号,放在不同的书架上。不同的管理 理念引出了不同的文件系统标准,如 、 、 、 就是指不同类型的 标准,除此之外,还有专门针对 类型设备 的文件系统 、 等等。​ 正是有了文件系统,计算机上的数据才能以文件的形式呈现给用户,下面简单介绍一下各种

开发界里的一股清流 771

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

UBI文件系统简介

在linux-2.6.27以前,谈到Flash文件系统,大家很多时候多会想到cramfs、jffs2、yaffs2等文件系统。它们也都是基于文件系统+mtd+flash设备的架构。linux-2.6.27后,内核加入了一种新型的flash文件系统UBI(Unsorted Block Images)。这里简单介绍下UBI文件系统加入的原因,及使用方法。我也是刚接触到这个文件系统,可能有理解不对的地方

newnewman 784

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

嵌入式Linux文件系统选型实战:squashfs、UBIFS、ext4到底怎么选?

嵌入式Linux文件系统选型没有完美的方案。最快的决策方法就是按上面那张决策树走。但如果你让我给一个最保险的默认方案eMMC存储:squashfs(根) + ext4(overlay+数据)NAND Flash:UBIFS(统一分区,需要可写) 或者 UBIFS(只读根) + UBIFS(数据)一定要做overlayfs— 只读根防止文件系统损坏,需要写的地方用overlay层这套方案我用在量产项目上没有出过因为文件系统导致的严重故障。文件系统的可靠性不是选出来的,是设计出来的。

qq_40786199的博客 432

U-boot移植 (v2012.04.1 S3C2440平台) (五) DM9000驱动支持,yaffs文件系统下载支持

9  DM9000 网卡驱动支持 u-boot-v2012.04对DM9000网上的支持已经比较完善的,只需要在配置里加上DM9000的编译选项,并在启动时加上DM9000的初始化就行了。 include/configs/micro2440.h: #define CONFIG_DRIVER_DM9000            1 #define CONFIG_DM9000_BASE

Nova的专栏 2957
上一篇: android系统重新刷ROM简记(一)
下一篇: android系统重新刷ROM简记(二)
野-百-合
博客等级 码龄17年 308粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值