flash partition fs overview

linux 2018-11-26 107392 次浏览 次点赞


flash partition fs overview

I. NandFlash

nand flash

对于NandFlash的认识尝试不做更多理解,只需要了解非易失存储、擦除寿命有限、通常是10K级别,同时写操作需要基于Page来。没有办法按照内存的存储基本单位字节来操作,由多个Page组成一个Block 每个 Page保留 一些字节用以 做ECC ( error correcting code )校验。

通常按照如下分布。

32 pages of 512+16 bytes each for a block size (effective) of 16 KB
64 pages of 2,048+64 bytes each for a block size of 128 KB[42]
64 pages of 4,096+128 bytes each for a block size of 256 KB[43]
128 pages of 4,096+128 bytes each for a block size of 512 KB.

NandFlash 支持坏块管理,当上层应用通过逻辑块访问Flash的时候,驱动器控制器会把坏块重映射到好的物理块,基于此实现,FLash的一些块需要用来存储坏块信息。 或者系统会在上电时候读取出所有坏块信息存储到RAM。

绝大部分NAND 出厂就伴随着一些坏块信息,但是通常在出厂前都会进行一个坏块标记处理工序。

II. 分区

Partitioning

分区类型

GUIP和MBR。

MBR

先说MBR,很熟悉了。早些年折腾系统装机就详细了解过,区分主分区+扩展分区。因为首先分区表文件大小512字节,所以 主分区数量 m ,0<m<=4,扩展分区数量 e, 0<=e<4, 扩展分区和主分区 总共 0<e+m<=4。扩展分区可以增加理论上的不限制数量的逻辑分析。

GUID

GUID 分区是 基于 Unified Extensible Firmware Interface 规范实现,通过GUID或UUID方式实现分区类型。

分区原理

多个分区方便我们选择不同的文件系统和挂载选项(只读、读写)

III. 文件系统

An introduction to Linux filesystems

An introduction to Linux's EXT4 filesystem

功能

对于文件系统的叫法,我们需要区分场景。

  1. 整个linux 下面的正的/ 目录;
  2. 指定数据存储的格式,例如,EXT3, EXT4, BTRFS, XFS。每种数据文件系统类型定义自己的 metadata 元数据以及如何存储和读写数据。
  3. 被挂载指定linux 文件系统已经被格式化分区或者逻辑卷。

而对于文件的功能,包含以下:

  1. 实现数据存储;
  2. 命名空间(文件命名规则和组织规则);
  3. 安全模式;
  4. 给上层的增删擦改提供API;
  5. 基于以上4点实现代码实现;

EXT 历史

Minx

What is an inode? Short for index-node, an inode is a 256-byte block on the disk and stores data about the file. This includes the file's size; the user IDs of the file's user and group owners; the file mode (i.e., the access permissions); and three timestamps specifying the time and date that: the file was last accessed, last modified, and the data in the inode was last modified.

inode

详细可以参考 inode pointer structure

EXT4

如上,对于EXT4文件系统文件的接近都是通过 蓝色 Directory Entry 目录入口,其包含文件名、文件所在INode ID,该ID作为文件在文件系统的唯一标志符,作为文件INode 元数据的入口。

尽管INode的指针数据是唯一的,但是也只是相对该分区的文件系统。

如上绿部分作为INode 元数据,描述文件用户、文件类型、文件接近时间、文件大小等信息。

黄色部分描述文件的有效数据信息,包含数据位置和大小。保留15个数据块,其中12个直接描述文件数据指针,3个间接INode。我们通过可以12个直接数据块指针指定定位到文件数据位置。3个直接数据块其实描述的是iNode数据,我们需要通过这3个间接iNode数据的数据信息再定位到直接数据指针。之所以这样设计,使我们在使用文件系统过程中无可避免产生文件碎片化。

文件系统修复

Check and Repair Your Filesystem With fsck Linux

对于文件系统的损坏和损毁(corrupted or damage),我们应该做周期性的文件系统检查。

FSDebug

debugfs Command Examples

Flash 文件系统的选择

Flash file system

由于Flash Page擦除的的物理特性。所以在Falsh的文件系统选择上有所有考虑。

https://www.systutorials.com/docs/linux/man/8-debugfs/


本文由 Jay 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处,点赞1

3 条评论

  1. MaryNeamn
    MaryNeamn

    elimite cream over the counter

    1. lijie
      lijie

      cool~

  2. PaulNeamn
    PaulNeamn

    elimite cream

添加新评论