Linux文件目录结构解析
csdn 2023-12-06

从文件管理的角度来看,文件分为数据文件和目录文件。由于目录文件是管理文件,所以从管理的角度来看,文件中目录的结构就会直接影响文件管理效果。目前,常见的目录结构有两种:一体化目录和分立式目录。


一体化目录

一体化目录与文件之间关系示意图如下:

也就是说,这种目录的特点就是把一个文件的所有信息都放在一个目录项中,所以叫做一体化目录。


分立式目录

由于一体化目录把用户没有必要知道的文件地址等物理信息都暴露给了用户,既不利于信息的隐蔽,也缺乏灵活性,违背了信息管理原则,因此在分立式目录中,目录被分成两部分:一部分只记录文件的文件名等用户关心的逻辑信息;另一部分则只记录文件所占用的存储块数目、位置等物理信息。前者叫做逻辑目录,简称目录;后者叫做文件索引节点,或i节点(inode)。由于i结点与文件唯一对应,所以i结点也叫做文件控制块(FCB)。

分立式目录及目录文件的结构如下所示:

用于集中记录i节点的文件叫做设备文件;而集中记录逻辑目录的文件叫做逻辑目录文件。

分立目录文件的最大特点是,多个逻辑文件目录项可以对应同一个i节点,从而同一个文件可以有多种访问路径和不同的名称。为了记录同一个文件究竟有多少个引用,在设备文件中有一个引用计数项。

现代文件系统大多数都采用这种灵活地分立式目录文件。


硬连接与符号连接

目录与文件之间的关联叫做连接,前面所述的连接方式都为硬连接。Linux及大多数UNIX的现代版本还有另一种连接,称为符号连接,或软连接。

符号连接是一种通过文件来查找另一个文件的方法,即文件路径的终端不是用户要访问的目标文件,而是一个存放目标文件路径及文件名的特殊文件(连接文件)。这样,当用户进程通过连接文件目录找到连接文件时,系统还需要再根据连接文件中提供的路径和文件名找到目标文件。

符号连接之所以还叫软连接,是因为根据连接文件中的路径来查找目标文件的操作是由系统来完成的,目标文件与连接文件之间是互相独立的、互不影响的。所以当连接文件被删除时,目标文件不会受到任何影响;相应地,目标文件被删除时,连接文件也不会受到任何影响,只不过在通过符号连接到该文件时,为用户返回一个“该连接文件不存在”的提示。

符号连接的优点在于,可以用一个文件指向另一个磁盘上的文件或目录,甚至还可以指向另一台计算机上的一个文件或目录。

linux硬链接和软链接的区别

原理上:

硬链接:A是B的硬链接(A和B都是文件名),则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同一个文件,A和B对文件系统来说是完全平等的。如果删除了其中一个,对另外一个没有影响。每增加一个文件名,inode节点上的链接数增加一,每删除一个对应的文件名,inode节点上的链接数减一,直到为0,inode节点和对应的数据块被回收。注:文件和文件名是不同的东西,rm A删除的只是A这个文件名,而A对应的数据块(文件)只有在inode节点链接数减少为0的时候才会被系统回收。

软链接:A是B的软链接(A和B都是文件名),A的目录项中的inode节点号与B的目录项中的inode节点号不相同,A和B指向的是两个不同的inode,继而指向两块不同的数据块。但是A的数据块中存放的只是B的路径名(可以根据这个找到B的目录项)。A和B之间是“主从”关系,如果B被删除了,A仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。

使用限制上:

硬链接:

  • 不能对目录创建硬链接,原因有几种,最重要的是:文件系统不能存在链接环(目录创建时的".."除外,这个系统可以识别出来),存在环的后果会导致例如文件遍历等操作的混乱(du,pwd等命令的运作原理就是基于文件硬链接,顺便一提,ls -l结果的第二列也是文件的硬链接数,即inode节点的链接数);
  • 不能对不同的文件系统创建硬链接,即两个文件名要在相同的文件系统下;
  • 不能对不存在的文件创建硬链接,由原理即可知原因。

软链接:

  • 可以对目录创建软链接,遍历操作会忽略目录的软链接;
  • 可以跨文件系统;
  • 可以对不存在的文件创建软链接,因为放的只是一个字符串,至于这个字符串是不是对于一个实际的文件,就是另外一回事了。

命令:

  • 硬连接:ln 源文件 链接名
  • 软连接:ln -s 源文件 链接名

参考文章:linux 文件inode 详解。


目录树及根目录

目录树

既然目录的集合也是一种文件,也就是说,一个目录项既可以指向一个普通文件,也可以指向一个目录文件。于是,为了便于文件的管理,在文件数目巨大的文件系统中,可以采用多级目录结构。

下图所示就是一个具有三级目录的目录树,第一级目录叫做根目录,第二级目录为第一级目录的子目录,也是第三级目录的父目录:

根目录

由前面的介绍中可知,在访问一个文件时,首先须访问目录文件并通过目录来得到文件的i节点,进而得到文件。但由于目录本身存在于目录文件之中,而目录文件也需要通过目录来得到,于是,一个文件系统必须有一个不作为文件而存在的目录项,这个目录就叫做根目录。

也就是说,磁盘上的文件系统除了普通文件和目录文件之外,在磁盘的某个固定的位置还要有一个不需要通过文件就能获得的目录——根目录,以使系统可以通过它来得到其他目录文件或普通文件。


磁盘文件系统

保存在磁盘上的文件系统叫做磁盘文件系统,它是操作系统的文件管理系统的工作基础。

磁盘格式化

一块空磁盘必须经格式化处理之后才能使用。磁盘格式化分为物理格式化和逻辑格式化。

  • 所谓物理格式化,也叫低级格式化,就是在磁盘上简历标准记录格式,从而可以将其看成是若干存储块组成的线性空间;
  • 所谓逻辑格式化,也叫高级格式化,就是按照文件管理和存储要求,在磁盘上建立操作系统可以识别、具有逻辑意义的存储区,例如引导记录区、文件目录区、数据区等。

通常,硬盘在出厂前就已经进行过物理格式化,用户的工作就是对磁盘进行逻辑格式化。

磁盘上的文件系统

磁盘逻辑格式化之后,在磁盘上通常包括如下信息:如何启动所存储操作系统、磁盘的总块数、空闲块的数目及位置、目录结构以及各个具体数据文件。

通常磁盘的存储逻辑结构为一下几部分:

  • 引导控制块:它通常为磁盘的第一块,因系统启动后,BIOS要到引导块中寻找引导程序,以便引导操作系统,所以作为引导块必须包含引导操作系统所需要的信息。由于在系统引导时,系统还没有建立起文件系统的各个机制,还不能解释任何文件,所以引导块信息为一组有序块,作为二进制文件被BIOS读入内存并被处理器执行;
  • 主分区,也叫根分区。该分区一般为操作系统内核映像文件及其他系统文件的存储区;
  • 分区控制块:除了主分区之外的其他分区通常就是用来存储文件的数据分区。这些分区的第一块为分区控制块,该块中含有本分区所包含的块数、块的大小、空闲块的数量及位置、文件控制块(FCB)的数量以及位置等信息;
  • 目录文件:通常处于分区控制块之后,存放分区内文件的目录文件;
  • 文件控制块(FCB):它通常处在文件数据块之前,内含文件的逻辑及物理信息,如文件许可、拥有者、大小以及占用数据块的位置等信息。



声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 对话周祖成教授 - 清华大学与西门子EDA的合作之旅


  • 相关技术文库
  • 单片机
  • 嵌入式
  • MCU
  • STM
下载排行榜
更多
评测报告
更多
广告