Linux_文件系统(inode、磁盘结构寻址方案、EXT2文件系统、创建删除文件过程、软硬链接)

1.inode与inode编号

根据Linux系统文件可知,文件=文件属性+文件内容。一般将文件属性称为元信息。保存元信息的结构称为inode

inode:任何一个文件的属性信息集合,Linux中几乎每一个文件都有inode。
inode编号:区分不同inode,用inode编号来区分。

eg:
在这里插入图片描述
test.c文件的inode编号为924155

文件内容直接储存在磁盘上(block)

注意:文件名并不在inode中,inode中只有inode编号。文件名在当前目录下,这个目录文件的文件内容

2.文件系统

磁盘的构成

图片来源
在这里插入图片描述
工作原理:通电后,磁盘盘片转动,机械手臂带动磁头向磁盘盘片上类似同心圆上寻址。在类似同心圆上读写数据

在这里插入图片描述

磁盘又称块设备,扇区的大小512字节

磁盘纵置图:
在这里插入图片描述
由上图可知:

  1. 两个相邻的磁道之间存在宽度,这个宽度用来保存数据。称为扇区
  2. 一个盘面上一圈完整的同心圆称为磁道。
  3. 不同盘面,相同半径的同心圆组成的圆柱体称为柱面。

在这里插入图片描述

磁盘寻址方案

数据写入:

  1. 首先,确定要写入的盘面。
  2. 确定要写入的柱面,根据这两点找到要写入数据储存的磁道
  3. 磁头寻址,找到要写入数据的位置

磁盘的线性存储

磁盘的储存虽然磁道是同心圆,但其为线性储存的(将磁道拉直)
在这里插入图片描述

磁盘内存管理(分区管理)

计算机对磁盘的管理采用分区方法.

将磁盘分为不同的区域,区域变小,将每个小区域管理好,整个磁盘就管理完毕。

分区格式化
将管理信息写到每个分区,这个管理信息的内容与文件系统有关。
(eg:NTFS、EXT2等)

EXT2文件系统

磁盘通过分区管理,每个分区在Linux中管理信息通常为下图:
在这里插入图片描述

创建普通文件以及写入1kb数据,最后删除普通文件的过程

解:
创建文件
遍历磁盘分区中的组。遍历BitMap,找到比特位不为0的位置,将其置1,并将创建文件的文件属性写进文件的inode中。

写入数据:
通过文件的inode好找到文件的inode,通过查找结构体的block数组,发现文件没有block块,所以先申请block块。先扫描BlockMap找到未被申请的块分配给这个文件。并将1KB数据写入块中

删除文件:
修改inodeBitMap和BlockBitMap,将对应比特位由1变0,不需要清理块数据即可删除。

所以删除文件的操作是可逆的

目录创建的过程

首先,目录是文件,有自己的inode。文件内容是当前目录下文件名和inode编号(这个目录下文件名与目录之间的映射关系)
eg:
在这里插入图片描述
目录的文件内容:是目录下所有文件名和inode之间的映射关系

3.软链接(ln -s +文件名 +软连接名)

![在这里插入图片描述](https://img-blog.csdnimg.cn/a910aa7b8a9943d0beac8e0a1d9345f4.png

在这里插入图片描述
在这里插入图片描述
软链接生成的文件有自己独立的inode号,说明其是独立文件。
文件内容保存的是Test文件的路径。(类似Windows中的快捷方式)

在这里插入图片描述

4.硬链接(ln +文件名+硬链接名)

在这里插入图片描述
原文件建立硬链接前,硬链接数为1,建立硬链接后,硬链接数变为2。
且硬链接文件和原文件inode号相同,没有创建新文件

3.软硬链接的区别

  1. 软链接是独立文件,有自己inode号。硬链接没有独立的inode。
  2. 软链接相当于快捷方式,硬链接没有创建文件,只是建立一个文件名和已有的inode之间的映射关系,并写入当前目录。(文件别名)
    在这里插入图片描述
    link目录的硬链接数为2的原因:
    dir本身和inode之间是一组映射关系,dir目录下有隐藏文件名.也指向这个目录
    所以一共有两组映射关系
    在这里插入图片描述
    当创建了一个目录后,目录的硬链接数为2,如果目录里面还有文件,硬链接数变为3
    1.目录名本身 2.目录下.文件 3.目录里面目录的. .文件。
    共三组映射关系,所以硬链接数为3。

硬链接的作用:方便目录之间通过相对路径进行跳转。

一个文件的硬链接数被保存在文件的inode结构体中。(引用计数器)

Guess you like

Origin blog.csdn.net/dodamce/article/details/122382393