基于nand flash的文件系统的整理

本文详细介绍了Nand Flash的结构、特点,并对比分析了Linux下的Ext2、JFFS2和UBIFS文件系统,探讨了它们在面对Nand Flash特性时的优缺点。着重讲解了UBIFS的优势,如损耗均衡、垃圾回收和数据保护机制。最后,文章提出现有的研究方向,包括NVRAM设计与文件系统优化,并讨论了硬件层和系统层面临的挑战,如性能、能耗和数据一致性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、            Nandflash简介

基本概念:flash芯片、block、page、附加页

1.1结构

Flash芯片的擦除以块为单位写以页为单位。在每个flash芯片中包括非常多的块,同款芯片上每个块的大小相同(2MB、4MB..),在每个块上包含多个页,每个页大小相同。在每个页面后都跟随着一个附加页,用来对对应页面进行标记或者对页上的数据进行校验,页面通常的大小为2Kb+64byte、512byte+32byte、1024byte+64byte等。结构如图1.1所示:


图1.1,nand flash结构示意图

1.2   特点(对于flash的研究主要是针对其特点优化其性能或者克服其缺点)

1.        Nand flash不是通常意义上的块设备,块设备的特点是可以对数据块进行读、写操作(如磁盘,文件系统等),但是对于Nand flash来说有三种操作分别是:读、写、擦除。只有对已擦除的块才能进行写操作。所以为了使其兼容传统的硬件和系统,需要对其进行特殊处理;

2.        当一个闪存处在干净状态时(被擦除过,但是还没有写操作发生),这块flash上的每一位(bit)都是逻辑1;

3.         nand flash不可以片上执行,但是存储密度大,因此常作为存储介质使用;

4.         Nand flash是按位寻址的,意味着可以从一块闪存的任意偏移地址读数据;

5.         闪存的使用寿命是有限的,具体来说,闪存的使用寿命是由擦除块的最大可擦除次数来决定的。超过了最大可擦除次数,这个擦除块就成为坏块(bad block)了。因此要避免某个擦除块被过度使用,以至于先于其他擦除块变成坏块,应该在尽量少影响性能的前提下,使擦写操作均匀分布在每个擦除块上,叫做损耗均衡(wear leveling)。

 

二、文件系统简介

文件系统是对于文件和存储空间的组织和管理,并对内核提供调用接口。主要是对数据结构的设计。在一定程度上类似数据库ACID(原子性、一致性、隔离性、持久性)的设计理念。

2.1文件系统结构

传统文件系统ext2与基于flash设备的文件系统在系统中的位置对比图。


图2.1各文件系统对比图

2.2 目前成熟的可以使用在非易失存储器上的典型的文件系统

为了在掉电或者系统崩溃情况数据的一致性,很多文件系统都增加了日志的功能。日志文件系统(journaling file system)一般执行步骤如下:

1.        预备:当系统要写入一个文件时,会现在日志记录块中记录某个文件准备要写入的信息;

2.        实际写入:开始写入文件的权限与数据;开始更新meta data的数据;

3.        结束:完成数据与meta data的更新后,在日志记录块中完成该文件的记录

在日志系统的帮助下,万一的记录过程中发生了问题,那么系统只需要检查日志记录块就可以知道哪个文件发生了问题,针对该问题做一致性检查即可,不必对整个文件系统做检查,从而达到快速修复文件系统的目的。

 

2.2.1  Ext2\ext3\ext4文件系统

Ext2可以通过FTL实现对flash的支持,FTL可以将闪存flash模拟成磁盘结构,从而实现对基于磁盘的文件系统的支持,但是效率比较低。Ext2文件系统结构如图2.2.1.1所示


图2.2.1.1 ext2文件系统结构图

各名词解释如下:

1.        超级块(super block):记录此文件系统的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式与相关信息;

2.        i节点(inode):记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码;

3.        block:实际记录文件的内容,若文件太大时会占用多个block。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值