Linux文件系统--基于EXT2

Posted wulei0630

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux文件系统--基于EXT2相关的知识,希望对你有一定的参考价值。

一、文件系统基本知识

① 存储在永久性存储介质,由程序按照某种格式制作的数据集合叫做文件

② 磁盘上管理文件的文件、数据结构和操作构成磁盘文件系统,简称文件系统

③ 文件属性

(1)名称

(2)位置

(3)大小

(4)类型

(5)保护

(6)时间、日期

(7)用户标识

④ 进程要通过操作系统来访问磁盘上的文件,也就是说,操作系统是进程与磁盘文件系统之间的中介

⑤ 用户对文件的操作

(1)创建文件

(2)写文件

(3)读文件

(4)删除文件

⑥ 操作系统的文件管理系统必须提供两项基本功能:

(1)一是要建立专门用于文件管理的目录体系

(2)二是要为用户提供对文件进行操作的系统调用

⑦ 文件的简单存储方式

(1)经过适当的软件处理,磁盘可以看成由若干大小相等的存储块(512Byte)所组成的一个线性空间

(2)通常一个文件需要占用多个存储块

(3)磁盘文件系统需要一个目录表来记录文件名称、储存位置等信息,并把这种记录兼做目录项,这个目录表叫做目录文件

⑧ 存储块的组织方式

(1)链接组织方式:

(2)索引组织方式:为每个文件创建一个长度与文件所占用存储块的数目相等的数,以文件块的逻辑顺序号为数组元素的下标,而以文件存储块的指针为元素的内容,于是就形成了一个文件索引表。

注:简单来说,索引表就是文件块的逻辑块号与存储块号的对照表

⑨ 空闲块的记录

(1)未被文件占用,或者被已删除文件释放出来的块叫做外存的空闲块

(2)操作系统用来记录跟踪空闲块的数据结构主要有位图、链表、分组链表等

⑩ 文件目录

(1)一体化文件目录:

(2)分立式文件目录:分立式目录中,目录被分成两部分:一部分只记录文件的文件名等用户关心的逻辑信息;一部分只记录文件所占用的存储块数目、位置等物理信息。前者叫  做逻辑目录,简称目录;后者叫做索引节点,简称i节点(inode)

注:由于i节点与文件唯一对应,所以i节点也叫作文件控制块(FCB)

(3)用于集中记录i节点的文件叫做设备文件,而集中记录逻辑目录的文件叫做逻辑目录文件

注:硬链接是两个文件指向同一个i节点

 ? 磁盘上的文件系统

(1)引导控制块:存储引导操作系统所需要的信息

(2)主分区:存储操作系统内核映像文件

(3)分区控制块(Super Block):数据分区的第一块为分区控制块,该块中含有本分区所包含的块数、块的大小、空闲块的数量及位置、文件控制块的数量及位置等详细信息,也  叫作超级块或主控文件集

(4)目录文件:位于分区控制块之后,存放分区内文件的目录文件

(5)文件控制块(FCB):通常处于文件数据块之前,内含文件的逻辑及物理信息

注:文件控制块也叫作索引节点(inode)

 

二、Ext2文件系统

① Ext2采用了分立式目录结构,即一个文件的目录分为目录项和索引节点

② Ext2的索引节点:在一个实际分立式目录的文件系统中,索引节点(inode)主要需要两部分内容来支持,一是inode结构;二是对于节点的操作函数

(1)Ext2的索引节点:Ext2的每个文件(或目录)都有一个唯一的i节点ext2_inode,它保存了一个文件所有与存储相关的属性

struct ext2_inode 
    __le16    i_mode;        /* File mode */
    __le16    i_uid;        /* Low 16 bits of Owner Uid */
    __le32    i_size;        /* Size in bytes */
    __le32    i_atime;    /* Access time */
    __le32    i_ctime;    /* Creation time */
    __le32    i_mtime;    /* Modification time */
    __le32    i_dtime;    /* Deletion Time */
    __le16    i_gid;        /* Low 16 bits of Group Id */
    __le16    i_links_count;    /* Links count */
    __le32    i_blocks;    /* Blocks count */
    __le32    i_flags;    /* File flags */
  ...
    __le32    i_block[EXT2_N_BLOCKS];/* Pointers to blocks */
    __le32    i_generation;    /* File version (for NFS) */
    __le32    i_file_acl;    /* File ACL */
    __le32    i_dir_acl;    /* Directory ACL */
    __le32    i_faddr;    /* Fragment address */
    ...
;

  * i_mode:指定文件的类型(普通文件、目录文件、设备文件和网络文件)

  * i_block[]:文件索引表。i_block[]共有15项,其中前12项为直接指向文件数据块的指针,后3项分别为采用多级索引结构的“一次间接指针”、“二次间接指针”和“三次间接指针”

(2)Ext2的i节点操作函数

 

以上是关于Linux文件系统--基于EXT2的主要内容,如果未能解决你的问题,请参考以下文章

Linux EXT2 文件系统

文件系统类型

Linux系统的Ext2文件系统

理解Linux标准的文件系统(Ext2/Ext3/Ext4)

linux文件系统之ext2

Linux学习之CentOS----认识ext文件系统(转)