文件IO详解(一)---ext2文件系统详解

http://www.cnblogs.com/biyeymyhjob/archive/2012/07/26/2609649.html

讲解ext2整体的文件布局

http://www.cnblogs.com/peon/archive/2011/06/22/2086470.html

用实际磁盘中的数据来印证ext2文件系统的布局

  • 磁盘存储数据的最小单元是扇区(Sector);ext2文件系统存储结构的最小单位是块(Block)。
  • ext2文件系统中文件的物理存储结构有三个基本组成部分:superblock、block、inode。当然在实际的ext2文件系统磁盘布局中除了三个基本组成部分还有其他的组成,比如块组描述符、块位图、inode位图等等,详见上面的博客。
  • 一个磁盘在分区完毕后还不能直接使用,因为分完区的磁盘并没有建立起相应的文件系统而如果没有文件系统,那我们要操作文件的时候必须要知道文件存放在磁盘的哪些扇区,通过这些扇区来读写文件,非常麻烦,如果有文件系统就可以利用文件名来读写文件(因为文件名对应了inode号码可以找到文件的内容)。所以必须还要经过格式化,格式化实际上就是在分区创建相应文件系统的存储格式并进行初始化的过程。不同的分区可以创建不一样的文件系统。分区之间是独立的,可以有不同的文件系统。
  • block:是用来存放文件真正数据的地方,是文件系统的最小单位,每个block都会有一个号码。每个block中最多只能存放一个文件的数据,如果一个文件数据太大一个block中放不下,那么可以用多个block来存放,如果一个文件数据比较小,那么一个block中剩余的部分也不能被利用,也就是被浪费了。block是建立在扇区的基础上的,所以其大小必须是扇区(512Byte)的整数倍,通常block的大小可以是1K、2K、4K,这个大小在格式化的时候就已经确定好了的。
  • inode:一个inode的大小默认为128B,也可以在建立文件系统时指定inode的大小。由两部分组成,一部分称为元数据,是记录文件的一些属性,权限和修改时间等等的数据,一部分就是block指针,指向所有存放此文件数据的block。每个inode都对应一个文件,而每个inode又会有一个号码,所以根据文件名可以找到inode号码,然后通过block指针,找到文件所有的数据。目录也是一种文件,其inode中存放的是是目录的一些属性,权限和block指针,其block中保存的是该目录下的文件名以及文件对应的inode号码。文件系统中会有一个inode表,而表中inode的总量也不是无限的,当达到inode上限时,就不能再创建文件了。
  • superblock:一般来说,superblock的大小为1K,是存放文件系统整体信息的地方,比如块大小、文件系统版本号等等。
  • 在一个inode中用作于索引block块的空间只有60B,其中每条索引要占用4个字节,也就是总共有 60/4=15 个索引项,如果一个文件较大,需要不止 15 个block块来存储数据怎么办?为了解决这个问题,其中inode中的这 15 个索引项,只有前面 12 个索引项是直接索引,而后面的三个索引项均为间接索引。分别为一级间接索引、二级间接索引和三级间接索引。

图中的 b 代表着一个block的大小,由于一个block索引需要占用 4 个字节,所以如果将一个block用来存储索引项的话,可以存储 b/4 个索引项。

===============================================================

ext2文件系统在磁盘分区上的整体布局如下图所示

磁盘的分区会被分成若干个Block Group(块组),在每个块组中又分为超级块、GDT(块组描述表)、Block Bitmap(块位图)、Inode Bitmap(inode位图)、Inode Table(inode表),然后就是Data Block(数据块)。注意磁盘分区的开始扇区是用作boot sector(启动扇区),不作为文件系统的组成部分,其大小为 1K。

各个组成部分的大小及用途参考上面的博客。

  另外注意:规定根目录的inode号码永远是 2

时间: 2024-10-20 00:41:58

文件IO详解(一)---ext2文件系统详解的相关文章

chapter8:Linux磁盘与文件系统管理之(1)认识Ext2文件系统

8.1认识EXT2文件系统 8.1.1 硬盘的组成与分区 8.1.2 文件系统的特性 8.1.3 Ext2文件系统(inode) 8.1.4   与目录树的关系 8.1.5   Ext2/Ext3文件的访问与日志功能 8.1.6    Linu文件系统的操作 8.1.7    挂载点 8.1.8    其它Linux支持的文件系统与VFS

Linux的Ext2文件系统(Inode&Block)详解

前述:Linux系统管理员很重要的任务之一就是管理好自己的磁盘文件系统,每个分区不可太大也不可以太小,太大会导致磁盘容量的浪费,太小会导致产生的文件无法存储的问题.在Linux里面文件是由两部分数据组成,一部分是metadata,另一部分是data.那么这些数据都存放在文件系统的什么地方呢?这就让我们必须得了解文件系统的Inode与Block的基本原理了,而Linux最传统的磁盘文件系统使用的是Ext2,所以我们了解下它的内部原理. 第一部分:磁盘的组成和分区(基础) 磁盘的机械部分: 1.圆形

EXT2 文件系统

对文件系统而言,文件仅是一系列可读写的数据块.文件系统并不需要了解数据块应该放到物理介质上什么位置.这些都是设备驱动的任务.无论何时,只要文件系统需要从包含它的块设备中读取信息或数据,它就将请求底层的设备驱动读取一个基本块大小整数倍的数据块.EXT2文件系统将它所使用的逻辑分区划分成数据块组.每个数据块组都将那些对文件系统完整性最重要的信息复制出来,同时将实际文件盒目录看做信息与数据块. 罗即文件系统管理的是一个逻辑空间,这个逻辑空间就像一个大的数组,数组的每个元素就是文件系统操作的基本单位——

Linux EXT2 文件系统

磁盘是用来储文件的,但是必须先把磁盘格式化为某种格式的文件系统,才能存储文件.文件系统的目的就是组织和管理磁盘中的文件.在 Linux 系统中,最长见的是 ext2 系列的文件系统.其早期版本为 ext2,后来又发展出 ext3 和 ext4.ext3 和 ext4 虽然对 ext2 进行了增强,但是其核心设计并没有发生变化,所以我们仍是以较老的 ext2 作为演示对象. 基本结构 Ext2 文件系统在格式化的时候一般会包含多个区块群组(blockgroup).Ext2 格式化后有点像下面这样:

文件IO详解(三)---Linux虚拟文件系统

http://blog.chinaunix.net/uid-14735472-id-2921377.html 讲解虚拟文件系统的一些数据结构以及之间的关系,有些地方看不懂 http://www.docin.com/p-941544538.html 讲解了进程打开文件时内核所建立的各种数据结构之间的联系 在给磁盘分区后,每个分区中都可以建立起各自独立的文件系统,建立的物理文件系统可以是相同的,也可以是不同的.那么不同的物理文件系统的组织数据的方式肯定是不同的,比如说ext2文件系统组织数据的方式是

Linux文件系统详解(文件系统层次、分类、存储结构、存储介质、文件节点inode)

从操作系统的角度详解Linux文件系统层次.文件系统分类.文件系统的存储结构.不同存储介质的区别(RAM.ROM.Flash).存储节点inode. 本文参考:http://blog.chinaunix.net/uid-8698570-id-1763151.html http://www.iteye.com/topic/816268 http://soft.chinabyte.com/os/142/12315142.shtml http://www.ibm.com/developerworks/

Linux ext2/ext3文件系统详解

转载: Linux ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表.索引节点是一个结构,它包含了一个文件的长度.创建及修改时间.权限.所属关系.磁盘中的位置等信息.一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一一个元素对应.系统给每个索引节点分配了一个号码,也就是该节点在数组中的索引号,称为索引节点号. linux文件系统将文件索引节点号和文件名同时保存在目录中.所以,目录只是将文件的名称和它的索引节点号结合在一起的一张表,目

标准文件IO详解(一)---文件IO操作和标准文件IO操作的区别

POSIX IO操作称为文件IO,也称为低级文件IO,是操作系统提供的系统调用,属于没有缓冲区的文件操作方式.执行该种操作后,内容会直接被写入到内核中的提供给磁盘的专门缓冲区中,内核会定期的刷新该缓冲区,将内容同步到磁盘当中. ANSI  C IO操作称为标准文件IO,也称为高级文件IO,是C库函数提供的,属于带有缓冲区的文件操作方式.执行该种操作后,内容首先会将内容写入到用户空间的缓冲区中,待缓冲区满或者需要刷新的时候再去调用文件IO,将内容写入到内核的磁盘缓冲区当中. 相比于低级文件IO,高

[转] Linux文件系统详解

从操作系统的角度详解Linux文件系统层次.文件系统分类.文件系统的存储结构.不同存储介质的区别(RAM.ROM.Flash).存储节点inode.本文参考: http://blog.chinaunix.net/uid-8698570-id-1763151.html http://www.iteye.com/topic/816268 http://soft.chinabyte.com/os/142/12315142.shtml http://www.ibm.com/developerworks/