文件系统

yaffs:

根据flash存储器的特点而设计的一个较为简单的文件系统,所有的数据都是按照块来存储的,yaffs1时有的块是512字节,现在yaffs2支持的一般都大于512字节,一般是2048字节,(以此为例讲解)。同时每个块后面还有64字节的数据用来存放tag信息,有id,文件大小,ecc校验值等。

文件系统的逻辑结构是通过parentid来维持的,这个信息存放在一个文件的第一个块中的前面2048个字节中。并且根目录总是放在第一个块中,后面依次存放其子文件。需要注意的是,表示目录的块出现之前,其子文件不能出现。所以便利一遍整个flash,其文件系统结构就确定了。

ext:

ext是当今操作系统领域最为优秀的一个文件系统,从ext2到现在的ext4改动不是很大,基本的思想是一致的。

首先,一个文件系统相当与一个分区,分区内部是通过块的划分来管理的,一个block从1024字节到4096,可以自己定义。

其次,分区内部被划分成了若干个block group来管理这些block;

block group有描述信息,block bitmap, inode bitmap, inode table,的具体块号,以及其他辅助信息,这些辅助信息可以快速找到一个inode项,这个inode项就是一个文件的标识,里面包含了该文件的所有描述信息,以及数据块的记录信息,通过这些记录可以快速找到这个数据块。

这里需要注意两个概念,一个是inode项,一个是dir entry项,即目录项。

inode项是用来标识一个文件的,里面包含了文件的权限信息等等各种数据,通过这些数据可以知道这个文件除了名字之外的全部信息;但是名字在哪里找到呢?就是dir entry中,dir entry是一个目录文件的数据内容,读到一个目录,找到其数据,就是dir entry, 其中包含了各个子文件的名字和inode号,根据名字和inode号就知道了这个文件的全部信息。还有一点需要注意,从哪里开始搜索这个文件系统呢?inode=2的inode是一个特殊的inode, 它是这个文件系统的根目录,所以它一定是一个目录文件。

这样,通过inode = 2的inode找到根目录下的各个dir entry, 然后再通过这些dir entry就可以遍历这个文件系统了。

ext4的先进之处在于inode的处理, 它能够最大限度的满足用户的需求,大文件尽量放在连续的块中,小文件也有合适的方法,存取效率很高。

关于ext4文件系统,有个博客写的很详细,该有的上面都有了,可以仔细看下。

http://www.cnblogs.com/ggzwtj/archive/2011/10/28/2224988.html

官网是最可靠的:wiki.kernel

点击打开链接




EXT3支持的单个文件最大是多少?

找了好久的资料。找到部分资料。

EXT3 block size=1024时,单个文件最大支持16GB
          block size=4096时,单个文件最大支持4TB(但是redhat的文档是说最大支持2TB,何解?)

计算方式:
表 1. 各种数据块对应的文件寻址范围
块大小 直接寻址 间接寻址 二次间接寻址 三次间接寻址 1024 12KB 268KB 64.26MB 16.06GB 2048 24KB 1.02MB 513.02MB 265.5GB 4096 48KB 4.04MB 4GB ~ 4TB
布局:
http://www.ibm.com/developerworks/cn/linux/filesystem/ext2/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值