加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

文件系统

发布时间:2020-12-15 18:44:47 所属栏目:百科 来源:网络整理
导读:yaffs: 根据flash存储器的特点而设计的一个较为简单的文件系统,所有的数据都是按照块来存储的,yaffs1时有的块是512字节,现在yaffs2支持的一般都大于512字节,一般是2048字节,(以此为例讲解)。同时每个块后面还有64字节的数据用来存放tag信息,有id,文

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/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读