Ext2 文件系统:数字世界的基石,深度解码超时空存储魔法

简介: Ext2 文件系统:数字世界的基石,深度解码超时空存储魔法

一·磁盘内部的划分:
首先就先默认我们都已经学习了解了磁盘物理结构和设计,那么下面磁盘是分成这样,请看图:

首先是分区:我们最小单位是扇面,其次可以比它大来分区如: c d盘:。

然后就是我们的分组。

下面分讲一下每个组含有的都是啥意思:

1.1superblock:
存放文件系统本身的结构信息,描述整个分区的文件系统信息。记录的信息主要有: bolck和inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等他文件系统的相关信息

说白了就是储存着每一个分区的一些信息,对分区很重要,因此需要多个备份放在当下分区的不同组块中(防止被删除)

1.2GDT:

对块组的介绍以及记录块组内其他部分有啥分布等

1.3block bitmap:
每个bit表⽰⼀个inode是否空闲可⽤。

1.4inode bitmap:
判断块占用情况,方便到时候知道哪个文件被删除了,还是要创建哪里的文件 。

1.5inode table:
存放⽂件属性如⽂件⼤⼩,所有者,最近修改时间等,当前分组所有Inode属性的集合。

多个结构体的集合;

里面存放着不仅仅是inode及一些其他属性还有inode对应的块(可以同组也可以不同组,后面讲)

每个结构体的大小都是相等的都是128字节;又因为这个集合大小是4kb故我们可以得出最多可以放32个inode结构体。

这里我们再阐述一个事实:

inode和block都可以跨组但是不能跨分区:

即同一个分区内部inode和块编号都是唯一的。

下面我们来解释一下:

就是我们的inode和块的编号可以从组之间是连续的;但是分区和分区之间不能连续每个分区开始的编号都是0。

其实inode结构体有一个记录它所对应的块的类似数组的东西,可以方便我们根据inode找到对应的文件数据位置;下面形象看一下:

这样就实现了我们小的空间可以找到inode对应的大量的块了。

那么下面我们该如何知道对应文件名字它的inode(指令ls -li):

1.6Data blocks:
据不同的⽂件类型有以下⼏种情况:

1·对于普通⽂件,⽂件的数据存储在数据块中。

2·对于⽬录,该⽬录下的所有⽂件名和⽬录名存储在所在⽬录的数据块中看到的其它信息保存在该⽂件的inode中。

二·目录与文件:
访问文件,必须打开当前目录,根据文件名,获得对应的inode号,然后进行文件访问(目录中内容是里面文件以及和inode对应关系) ;本质是必须能打开当前工作目录文件,查看目录文件的内容!

当然了目录它也是文件了;遵循着文件的规律也就适用于目录了;只需要目录结构就好了。

三·系统与磁盘如何交互:
3.1路径解析:
都要从根目录开始,依次打开每一个目录,根据目录名,依次访问每个目录下指定的目录,直到访问到test.c。这个过程叫做Linux路径解析。

本质就是在磁盘文件系统中,新建目录文件。而你新建的任何文件,都在你或者系统指定的目录下新建,这不就是天然就有路径了嘛 !

说白了就是查找某个文件首先要先上推然后返回来找到的过程罢了。

3.2路径缓存:
如果向上面一样查找一直往回找到根目录的话就太慢了,因此实际不是这样的。

这里系统默认从根(/)开始缓存。

因此我们下面就要引出dentry:

Linux中,在内核中维护树状路径结构的内核结构体叫做: struct dentry;来缓存历史路径

每个文件相当于一个dentry结构体节点把他们串起来:

下面大概举例一下一些dentry存的结构:

每个文件都对应的有dentry然后系统把它多叉起来(其中这个结构不仅参与文件查找还有一系列与文件相关的任务->"网状")

3.3 挂载分区:
谈到这里,我们首先要明白:

分区写⼊⽂件系统,⽆法直接使⽤,需要和指定的⽬录关联,进⾏挂载才能使⽤。

所以,可以根据访问⽬标⽂件的"路径前缀"准确判断我在哪⼀个分区。

因此我们可以知道每个目录都会挂有分区,我们对其内文件操作必然要通过这个目录找到分区.

下面我们就来看看分区是如何挂到目录上的:

四·系统(进程)与文件交互总结:
首先先看张图:

五·软硬链接:
5.1软链接:
软链接是通过名字引⽤另外⼀个⽂件,但实际上,新的⽂件和被引⽤的⽂件的inode不同,应⽤常⻅上可以想象成⼀个快捷⽅式。

说白了我们可以理解为快捷方式即:

这就是一个软链接。

指令: ln -s 要软链接源文件 链接文件(快捷方式) ;取消是unlink +链接文件

里面存的是abc的文件路径,访间abc.s即去拿到abc路径再访间abc:而册掉abc.s后abc还是存在的。

用途:作为快捷方式,方便查找(当我们删除后,它真正文件并没有删除)

5.2硬链接:
我们看到,真正找到磁盘上⽂件的并不是⽂件名,⽽是inode。其实在linux中可以让多个⽂件名对应于同⼀个inode。

指令:ln 要软链接源文件 链接文件(快捷方式) ;取消是unlink +链接文件

这里其实就用到了引用计数。

硬链接文件inode和源文件相同也就是都是指向同一个inode这就产生了引用计数:

故:

1.在目录中将对应的记录删除,2.将硬连接数-1,如果为0,则将对应的磁盘释放。

用途:./..的使用以及备份工作。

六.软硬链接在系统中的差异:
软连接是独⽴⽂件;硬链接只是⽂件名和⽬标⽂件inode的映射关系;下面请看图:

这里还有个小疑问:就是目录可以软链接但是不能硬链接?

解释下: linux系统只允许自己硬链接(./..),但是不允许用户操作;而软链接无要求。

相关文章
|
4月前
|
运维 安全 5G
|
8月前
|
存储 文件存储 对象存储
云计算存储问题之文件、块和对象的接口协议不一样如何解决
云计算存储问题之文件、块和对象的接口协议不一样如何解决
190 0
|
10月前
|
存储 安全 Linux
C++文件格式深度解析:从底层结构到关键特性
C++文件格式深度解析:从底层结构到关键特性
493 3
C++文件格式深度解析:从底层结构到关键特性
|
存储 编译器 C语言
数据的存储--深度解剖数据在内存中的存储(上)
数据的存储--深度解剖数据在内存中的存储(上)
多个音频轨无法在sdi传递解决方案思路
多个音频轨无法在sdi传递解决方案思路
117 0
多个音频轨无法在sdi传递解决方案思路
深度解析各种数据在计算机内存中的存储
深度解析各种数据在计算机内存中的存储
深度解析各种数据在计算机内存中的存储
|
存储 编译器 程序员
数据的存储--深度解剖数据在内存中的存储(下)
数据的存储--深度解剖数据在内存中的存储(下)
|
算法 数据可视化 测试技术
为复杂场景而生,NTU、字节等开源大型视频目标分割数据集MOSE
为复杂场景而生,NTU、字节等开源大型视频目标分割数据集MOSE
176 0
|
存储 Web App开发 编解码
智能存储HEIC&AVIF图片硬件压缩方案详解
图片格式的进化一图抵千文,因此很多的应用都会用图片来表现丰富的内容。提起图片格式,大家耳熟能详的有JPEG,PNG,WEBP等等,这也是当前互联网上主流的图片格式,然而在过去的十年,随着技术的发展,图片的压缩技术又取得了长足的进步,新的图片格式已经涌现,使用这些传统的图片格式已经不再是最优的选择。在过去的10年移动互联网快速发展,使网络速度越来越快,但是手机的摄像头分辨率也越来越高,用户手机的UG
1738 0
智能存储HEIC&AVIF图片硬件压缩方案详解
|
存储 NoSQL 架构师
架构视角-文件的通用存储原理
架构师是互联网行业高薪又紧俏的资源。成为架构师最基本的是设计能力。设计与设计的区别主要体现在两方面: 1,深度:要解决哪些问题?这个问题背后的根本问题是什么?还有什么问题没有发现?对应的能力是发现和解决问题的能力。 2,体系:要解决的问题的属于哪一类的问题?这类问题能否进一步抽象,让系统解决更大的问题?对应的抽象归纳和体系化思维的能力。
架构视角-文件的通用存储原理