当前位置: 首页 > news >正文

【Linux】文件系统

磁盘及文件系统

在这里插入图片描述

文件的增删查改

重新认识目录

目录是文件嘛? 是的。
目录有iNode嘛? 有
目录有内容嘛? 有

任何一个文件,一定在一个目录内部,所以一个目录的内容是什么?
需要数据块,目录的数据库里面保存的是该目录下 文件名和文件inode编号对应的映射关系。

文件查找

当我们访问一个文件的时候,在某个特定的目录下 要访问的文件 例:log.txt
① 先在当前目录下,找到log.txt的inode编号
② 一个目录也是一个文件,也属于一个特定的分区。在该分区中找到分组,在分组的inode table中,找到文件的inode
③通过inode和对应datablock的映射关系,找到该文件的数据块,并加载到OS,并完成显示到显示器。

文件删除

删除一个文件 例:log.txt
①先找到该文件的inode。
②通过inode映射关系,将block bitmap对应的比特位,置0。
③通过inode映射关系,将inode bitmap对应的比特位,置0。
在进行文件删除的时候,只需修改位图中对应的比特位,不需要对数据块进行操作。

创建文件

创建一个文件 例:log.txt
①创建一个文件时,一定处于一个特定的目录下,通过目录所属分区,找到对应分组。
②在inode bitmap中找到可以使用的位置,定义新的inode。
③计算出这个文件所要占用的数据块,在block bitmap中找到能够使用的数据块。
④将找到可以使用的数据块填入inode中blocks_arr数组中(映射关系)。

软硬连接

Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln 命令产生硬链接。

硬连接
硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。比如:A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。
硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。 其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
在这里插入图片描述
硬连接出来新文件使用原文件相同的inode number 说明他们公用一个inode结构体。

struct inode
{
  //…
  int ref; //ref表示有几个硬连接
  //…
}

共用一个inode结构体说明他们的属性和内容是共享的,改变其中一个另一个也会改变,验证一下。
在这里插入图片描述

文件的硬连接数
在这里插入图片描述

思考为什么刚创建出来的普通问价硬连接是1,而目录文件是2?为什么目录文件不是1?
在这里插入图片描述
在这里插入图片描述
原因:因为新创建的目录文件中会有隐藏的两个文件,一个 . 文件,表示当前目录。一个 … 文件,表示上一级目录,我们可以看到, .文件和该目录文件inode number相同,说明 .文件也是该目录文件的硬连接。
结论,我们在创建目录文件的时候,会在目录文件中创建两个隐藏文件,一个.文件,一个. .文件。.文件为当前目录文件的硬连接,供用户使用。
用户自己不可以创建目录文件的硬连接,操作系统不允许!!!

软连接
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。 它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
在这里插入图片描述
可以看到软连接出来的文件拥有一个新的inode number,说明他们不是公用一个indode 结构体。也会有自己的inode tables、inode bitmap、block bitmap等。
不过文件的内容中存储的是原来文件的路径名,和windows的快捷方式同理。

如果删除原来的文件,那么创建出来的软连接文件不可被继续使用
在这里插入图片描述

http://www.lryc.cn/news/161136.html

相关文章:

  • 1.5 空间中的平面与直线
  • 【深度学习】实验06 使用TensorFlow完成线性回归
  • 2023国赛 C题论文 蔬菜类商品自动定价与补货策略
  • 使用 【jacoco】对基于 SpringBoot 和 Dubbo RPC 的项目生成测试覆盖率报告:实践+原理
  • Mac OS合集
  • 算法之位运算
  • flask使用Flask-Mail实现邮件发送
  • React refers to UMD global, but the current file is a module vite初始化react项目
  • vscode 调试 ROS2
  • TuyaOS开发学习笔记(2)——NB-IoT开发SDK架构、运行流程
  • Qt应用开发(基础篇)——普通按钮类 QPushButton QCommandLinkButton
  • Data Structures Fan(cf)
  • BIOS < UEFI
  • 微信最新更新隐私策略(2023-08-15)
  • Java中xml转javaBean
  • Spring Boot集成JPA和ClickHouse数据库
  • Hadoop生态圈中的Hive数据仓库技术
  • idea配置gitLab
  • 工程可以编译通过,但是Vscode依然有波浪线提示
  • 黑马JVM总结(二)
  • 《Effective C++中文版,第三版》读书笔记7
  • 脚本:python实现动态爱心
  • 【李宏毅】深度学习6:机器学习任务攻略
  • 如何使用SQL SERVER的OpenQuery
  • element-tree树结构-默认选中第一个节点高亮-根据id选中节点高亮
  • Python实操 PDF自动识别并提取Excel文件
  • JVM监控和调优常用命令jps|jstat|jinfo|jmap|jhat|jstack实战
  • chatglm2-6b在P40上做LORA微调 | 京东云技术团队
  • WebGL 同时使用多幅纹理
  • 探索云计算和大数据分析的崛起:API行业的机遇与挑战【电商大数据与电商API接入】