文章目录
目录
前言
在Linux操作系统的世界里,文件系统是极为关键的组成部分,而inode则是其中一个核心概念。
在linux中一切皆文件。
一、文件系统与inode是什么?
Linux文件系统负责对存储设备上的数据进行组织、管理和存储,它提供了一种有序的方式来存储和访问文件、目录等各类数据资源。不同的Linux文件系统(如ext4、xfs等)有着各自的特点和优势,但都遵循着一些基本的原理来确保数据的有效管理。
inode,即索引节点,它在文件系统中扮演着举足轻重的角色。可以说,每个文件和目录在Linux文件系统中都对应着一个唯一的inode。inode中存储了关于文件或目录的诸多重要信息,比如文件的权限、所有者、大小、时间戳,以及最为关键的——指向文件实际数据存储位置的指针。通过inode,Linux系统能够快速准确地定位和操作文件,即便文件在存储设备上的物理位置可能发生了改变。
理解Linux文件系统与inode的相关知识,对于深入掌握Linux系统的运作机制、进行有效的系统管理、数据存储与恢复等操作都有着至关重要的意义。后续将进一步详细探讨它们的具体内容和实际应用。
二、文件系统
1.Group Descriptor Gable(GDT)
描述的是整个block group中存储了多少,用了多少等基本信息。
block bitmap和inode bitmap是用来记录哪些块用了,和inode的映射,而不是记录用了多少。
2、Super Block
包含了文件系统的基本属性,记录文件系统的大小,权限,整个分区有多少个组。每个组的大小,每个组的inode数量,每个组的block数量,每个组的起始inode,文件系统的类型与名称等信息。
super Block不一定会在每一个分区中都有。
理由:如果整个文件系统的基本信息崩了,那么就会使的整个分区都会崩掉,因为个数多了,操作系统无法区分每一个分区的边境。
总结:每一个分区再被使用之前,都必须提前先将部分文件系统的属性信息提前设置进对应的分区中,方便我们后续使用这个分区或者分组
这就是先描述后组织
3、linux下增删查改对象文件语言及理解
linux系统中,一个文件,一个inode。每一个inode都有自己的inode编号(inode的位置,是以分区位单位,不能跨分区)
inode表示文件的所有属性,文件名,并不属于inode内的属性。
获取文件inode
指令:ls -li
最前面的编号就是inode编号。
新建一个文件。系统会做什么?
1、要有路径,来确认在那个分区中。
2、分配inode,然后将对应的inode bitmap置1
3、将对应的文件属性在inode table中修改一下
4、如果有内容确认写入文件大小分配块
5、将对应的块号填入bolcks中
删除一个文件。系统会做什么?
1、找到文件的目录,确认分区
2、在对应的分区中找到inode编号
3、将inode bitmap置为零就可以了。
4、将block bitmap置零
修改一个文件。系统会做什么?
1、找到inode
2、找到inode就可以找到文件属性,将inode Table修改了,改内容在Data block中修改就可以了。
查找一个文件。系统会做什么?
查找我们拿到一个文件路径,有了路径我们就可以找到分区,在在分区中找到文件inode。
如何拿到inode?
我们使用者从来没有关系过inode,用文件名。
4、如何理解“目录”
目录也是文件。是文件就有自己的inode,所以目录也有属性。
文件=内容+属性
那么内容是什么?
存放的是该目录下的文件命名和文件和inode的映射关系。
总结:打开文件的时候,找到文件的inode编号,然后去inode bitmap中去找编号存在嘛,存在再去inode table当中去找属性,看有什么权限是否可以访问。然后到block bitmap中找块编号,然后操作。
三、软硬链接
软链接的建立
命令: ln -s 软链接名 修改名
执行ls -li 这是查看inode指令
我们发现两个文件不是同一个inode,所以两个文件不是同一个文件。
硬链接
命令:ln 文件名 后文件名
我们发现硬链接和文件的inode是相同的。
也就是指向的同一个文件。所以文件所对文件名就不在同一个inode里面,如果一样如果一样他们的inode编号相同。
如何理解软硬链接
问题1:软链接是一个独立的文件嘛?
软链接是独立的,有独立的inode和代码块。软链接里面存放的是目标文件的路径和文件名,当我们向文件当中写入的时候,我们打印软链接文件也是向文件写入的内容。
软链接等价于快捷方式。
问题2:如何理解硬链接?
因为文件txt和硬链接的inode是相同的,所以他们的属性是相同的。
所谓的建立硬链接,本质其实是在特殊的目录的数据块中新增文件名和指向的文件的inode编号的映射。
硬链接等于对文件名重命名和拷贝。
任意一个文件,无论是目录还是普通文件,都有inode
每个inode内部,都有一个叫做引用计数器。(记录有多少个文件指向我)
删除链接指令
unlink 目标文件名
为什么要有软硬链接
我们现在知道软链接像快捷指令,当我们有的可执行文件在文件夹中藏得比较深的时候,我们我们像要将它在桌面建立一个快捷指令,那么我们就可以在桌面上建立一个软链接,软链接所指向的内容是可执行文件的目录。
例如:
我们发现打开的都是同一个目录
硬链接应用场景
所以这一个点就是dir这个目录的一个硬链接
这个数字2就代表当前有两个文件指向dir这个文件夹。
通常用来路径定位
但是不允许对目录建立硬链接,因为在查找的时候拿到inode会构成环路。
总结
硬链接:
• 概念:是文件的一个或多个文件名,通过索引节点(inode)来指向同一个物理文件内容。
• 特点:多个硬链接指向同一文件,删除其中一个硬链接不影响文件本身及其他硬链接;硬链接不能跨文件系统创建;硬链接和源文件具有相同的inode号。
软链接:
• 概念:也叫符号链接,是一种特殊类型的文件,它里面存放的是另一个文件的路径名,通过这个路径名来指向目标文件。
• 特点:软链接可跨文件系统创建;删除源文件后,软链接将失效(显示找不到文件);软链接文件的inode号与源文件不同,它有自己独立的inode。