文件系统的特性,linux的EXT2文件系统
2016-10-13 19:09
323 查看
先来提出三个概念:
- superblock
- inode
- block
superblock:记录此文件系统的整体信息,包括inode,block总量,使用量,剩余量,以及文件系统的格式与相关信息等。
inode:记录文件的属性,一个文件占用一个inode,同时记录此文件数据所在的block号码。
block:实际记录文件的内容,若文件太大,则会占用多个block。
inode和block都有编号,在文件系统最初格式化的时候就已经分好了inode和block块并编好号码。假设我们要在linux中存储一个文件,那么,文件的名称权限,各种属性都存储在它的inode中,每个文件只有一个inode,这个inode中还存储着这个文件数据的实际放置的block号码。例如我们要读取一个文件,先去读取这个文件的inode,对比权限等属性,若有权限读取,则根据inode中存储的block号码依次去block块读取数据。如下图:
这种文件系统我们就叫做索引式文件系统(indexed allocation)
这里做一个对比,闪存的FAT格式,这种文件系统并没有inode的存在,所以,FAT没有办法将这个文件的所有block在一开始就读取出来,每个block的号码都记录在前一个block中,读取时如下:
这样的话,在读取文件时,它需要一个个将block读出后,才会知道下一个block所处的位置,如果一个同一个文件数据写入的block分散的太过厉害,则我们的磁盘读取头无法在磁盘转一圈就得到所有数据,要多转好多圈才能够完整的读取到这个文件的内容。
碎片整理:文件如果写入的太过离散的话文件读取的效能将会变的很差,碎片整理就是将同一个文件所属的block汇整在一起,这样数据的读取会比较容易,FAT文件系统就经常需要碎片整理,EXT2是索引式文件系统,基本不太需要常常进行碎片整理,但文件系统使用的时间太久的话,常常删除/编辑/新增文件时还是会可能造成文件数据太过于离散的问题,所以偶尔还是需要进行整理。
linux的EXT2文件系统的学习:
当一个文件系统高达数百GB时,inode,block的数量太庞大不容易管理,因此EXT2文件系统在格式化是基本是区分成多个区块群组(block group),每个区块群组又有自己独立的inode/block/superblock系统,如图:
文件系统最前面有一个启动扇区(boot sector),这个启动扇区可以安装开机管理程序。
data block:
放置文件内容的地方,在EXT2文件系统中支持的block大小有1K,2K,4K三种。在格式化时block就固定了,且每个block都有编号,便于inode记录。由于block大小的差异,会导致文件系统所能支持的最大磁盘容量与最大单一文件容量不同。如下:
这里关于block有几点提示:
- 原则上,block的大小与数量在格式化完成后就不能再改变了(除非重新格式化)
- 每个block中最多只能放置一个文件的数据
- 如果文件大于一个block大小,则一个文件将会占用多个block
- 如果文件小于block,则该block的剩余容量就不能被使用了
inode table:
inode记录的数据至少有:
该文件的存取模式(rwx)
该文件的拥有者与拥有群组
该文件的容量大小
该文件建立或状态改变的时间
该文件最近一次读取的时间
最近的修改时间
定义文件特性的旗标(flag),如SetUID
该文件真正的内容指向
inode的一些特色:
每个inode大小固定为128bytes(新的ext4,xfs可设定到256bytes)
每个文件只占用一个node
文件系统能够建立的文件数量与inode的数量有关
系统读取文件时需要先找到 inode,并分析 inode 所记录的权限与用户是否符合,若符合才能够开始实际读取 block 的内容
inode的大小是有限的,那么,如果一个文件的很大,block数量很多,inode需要记住的block号码也很多,那么,inode这时是如何记住的呢?看了下面这个图就会明白了:
inode中的双简接与三间接就解决了这个问题。将block号存在block中,是不是就能存下了?
Superblock:
Superblock也是一个很重要的地方,它记录了整个文件系统的相关信息。它记录的信息主要有:
inode与block的总量
未使用的inode,block的数量
block与inode的大小(block为1K,2K,4K;inode为128bytes或256bytes)
filesystem的挂载时间,最近一次写入数据的时间,最近一次检验磁盘的时间等文件系统的相关信息
一个vaild bit数值,若此文件系统已经被挂载,此值为1,若为挂载则为0
Superblock是非常重要的,因为整个文件系统的基本信息都存在于此。一般来说Superblock大小为1024bytes。
其实,每个block group都可能含有superblock,但我们又说一个文件系统只有一个superblock,这是因为除了第一个block group含有superblock外,后续的block group也可能含有superblock作为第一个block group中的superblock的备份,这样,有利于superblock的救援。
Filesystem Description(文件系统描述说明):
这个区段可以描述每个 block group 的开始与结束的 block 号码,以及说明每个区段 (superblock,bitmap, inodemap, data block) 分别介于哪一个 block 号码之间。
block bitmap (区块对照表):
block bitmap当中可以知道哪些block是空的,我们可以根据这个快速的找到可以存放数据的空block。
当你删除文件的时候,这个文件原本占用的block号码就必须释放出来,此时,在block bitmap中,相对应的block号码就要修改成【未使用】的状态。
inode bitmap (inode对照表)
与block bitmap功能类似,这里不做说明。
感谢阅读,欢迎指正。
- superblock
- inode
- block
superblock:记录此文件系统的整体信息,包括inode,block总量,使用量,剩余量,以及文件系统的格式与相关信息等。
inode:记录文件的属性,一个文件占用一个inode,同时记录此文件数据所在的block号码。
block:实际记录文件的内容,若文件太大,则会占用多个block。
inode和block都有编号,在文件系统最初格式化的时候就已经分好了inode和block块并编好号码。假设我们要在linux中存储一个文件,那么,文件的名称权限,各种属性都存储在它的inode中,每个文件只有一个inode,这个inode中还存储着这个文件数据的实际放置的block号码。例如我们要读取一个文件,先去读取这个文件的inode,对比权限等属性,若有权限读取,则根据inode中存储的block号码依次去block块读取数据。如下图:
这种文件系统我们就叫做索引式文件系统(indexed allocation)
这里做一个对比,闪存的FAT格式,这种文件系统并没有inode的存在,所以,FAT没有办法将这个文件的所有block在一开始就读取出来,每个block的号码都记录在前一个block中,读取时如下:
这样的话,在读取文件时,它需要一个个将block读出后,才会知道下一个block所处的位置,如果一个同一个文件数据写入的block分散的太过厉害,则我们的磁盘读取头无法在磁盘转一圈就得到所有数据,要多转好多圈才能够完整的读取到这个文件的内容。
碎片整理:文件如果写入的太过离散的话文件读取的效能将会变的很差,碎片整理就是将同一个文件所属的block汇整在一起,这样数据的读取会比较容易,FAT文件系统就经常需要碎片整理,EXT2是索引式文件系统,基本不太需要常常进行碎片整理,但文件系统使用的时间太久的话,常常删除/编辑/新增文件时还是会可能造成文件数据太过于离散的问题,所以偶尔还是需要进行整理。
linux的EXT2文件系统的学习:
当一个文件系统高达数百GB时,inode,block的数量太庞大不容易管理,因此EXT2文件系统在格式化是基本是区分成多个区块群组(block group),每个区块群组又有自己独立的inode/block/superblock系统,如图:
文件系统最前面有一个启动扇区(boot sector),这个启动扇区可以安装开机管理程序。
data block:
放置文件内容的地方,在EXT2文件系统中支持的block大小有1K,2K,4K三种。在格式化时block就固定了,且每个block都有编号,便于inode记录。由于block大小的差异,会导致文件系统所能支持的最大磁盘容量与最大单一文件容量不同。如下:
这里关于block有几点提示:
- 原则上,block的大小与数量在格式化完成后就不能再改变了(除非重新格式化)
- 每个block中最多只能放置一个文件的数据
- 如果文件大于一个block大小,则一个文件将会占用多个block
- 如果文件小于block,则该block的剩余容量就不能被使用了
inode table:
inode记录的数据至少有:
该文件的存取模式(rwx)
该文件的拥有者与拥有群组
该文件的容量大小
该文件建立或状态改变的时间
该文件最近一次读取的时间
最近的修改时间
定义文件特性的旗标(flag),如SetUID
该文件真正的内容指向
inode的一些特色:
每个inode大小固定为128bytes(新的ext4,xfs可设定到256bytes)
每个文件只占用一个node
文件系统能够建立的文件数量与inode的数量有关
系统读取文件时需要先找到 inode,并分析 inode 所记录的权限与用户是否符合,若符合才能够开始实际读取 block 的内容
inode的大小是有限的,那么,如果一个文件的很大,block数量很多,inode需要记住的block号码也很多,那么,inode这时是如何记住的呢?看了下面这个图就会明白了:
inode中的双简接与三间接就解决了这个问题。将block号存在block中,是不是就能存下了?
Superblock:
Superblock也是一个很重要的地方,它记录了整个文件系统的相关信息。它记录的信息主要有:
inode与block的总量
未使用的inode,block的数量
block与inode的大小(block为1K,2K,4K;inode为128bytes或256bytes)
filesystem的挂载时间,最近一次写入数据的时间,最近一次检验磁盘的时间等文件系统的相关信息
一个vaild bit数值,若此文件系统已经被挂载,此值为1,若为挂载则为0
Superblock是非常重要的,因为整个文件系统的基本信息都存在于此。一般来说Superblock大小为1024bytes。
其实,每个block group都可能含有superblock,但我们又说一个文件系统只有一个superblock,这是因为除了第一个block group含有superblock外,后续的block group也可能含有superblock作为第一个block group中的superblock的备份,这样,有利于superblock的救援。
Filesystem Description(文件系统描述说明):
这个区段可以描述每个 block group 的开始与结束的 block 号码,以及说明每个区段 (superblock,bitmap, inodemap, data block) 分别介于哪一个 block 号码之间。
block bitmap (区块对照表):
block bitmap当中可以知道哪些block是空的,我们可以根据这个快速的找到可以存放数据的空block。
当你删除文件的时候,这个文件原本占用的block号码就必须释放出来,此时,在block bitmap中,相对应的block号码就要修改成【未使用】的状态。
inode bitmap (inode对照表)
与block bitmap功能类似,这里不做说明。
感谢阅读,欢迎指正。
相关文章推荐
- Linux学习(10)--Ext2文件系统特性
- 文件系统的特性,linux的EXT2文件系统【转】
- Linux上三个主要文件系统(EXT2、EXT3和ReiserFS)介绍--(上)
- linux文件系统1:Ext2
- Linux的Ext2文件系统
- Linux-EXT2文件系统
- Linux文件系统1:Ext2EXT2格式 块大小为1024字节的话,单一文件最大容量是16GB,块大小为4096字节的话,单一文件最大容量为2TB
- Linux上三个主要文件系统(EXT2、EXT3和ReiserFS)介绍--(中)
- LINUX的EXT2文件系统
- 从Linux的ext2文件系统源码学到一种初始化结构体的新方法
- linux高编之ext2系统文件
- Linux磁盘与文件系统管理 之 认识EXT2系统
- linux 基础学习之二:ext2文件系统研究
- Linux操作系统基础理论(5)-----EXT2文件系统的实现机制
- linux ext2 文件系统恢复被删除的文件
- linux下的硬链接和软连接区别及ext2文件系统
- Linux的标准文件系统----EXT2
- JFFS2 文件系统及新特性介绍 分类: arm-linux-Ubuntu 2013-07-22 16:30 269人阅读 评论(0) 收藏
- 在linux使用ext2resize在线扩展文件系统
- Linux磁盘与文件系统管理 之 认识EXT2系统