硬链接和软链接以及inode的简述【Linux】

硬链接和软链接

  • inode是什么?
    • 面试题
  • 硬链接
  • 软链接

inode是什么?

  认识inode之前,先来看一下一个文件在磁盘里面是怎么存储的。
  首先一个物理的圆盘形状且多层的一个磁盘会被逻辑化成为一个数组,找到一个文件在这个数组里面叫做LBA寻址。
  这个数组会被划分为一个一个的block,所以磁盘也会被称为块设备。一个个的block的大小是在格式化的时候就确定好了的,并且不能更改。一般来说,初次使用磁盘的时候就会格式化磁盘。
  一个文件系统会包含多个block。
如下:
在这里插入图片描述
  上面这个图片叫做块组(Block group)。里面有一部分叫做inode Table.里面存放着一个个的inode,一个inode里面包含一个文件的属性,每一个inode都有一个inode编号。另外,Data blocks 里面有一部分叫做数据项,其中包含了 文件名和inode的一一对应的映射关系。并且,每一个文件独有一个自己的目录项
  所以同一个目录下不可以有相同的文件名,不同目录下可以有相同的文件名。

找文件的步骤:
  1. 读取根目录:首先,操作系统会读取磁盘的根目录。根目录是文件系统的顶层目录,它包含了文件系统中所有文件和目录的信息。

  2. 遍历目录结构:操作系统会通过根目录开始遍历文件系统的目录结构。它会逐级进入子目录,读取每个目录中的目录项信息。

  3. 匹配文件名:操作系统会比对目录项中的文件名与待查找文件的文件名是否匹配。如果匹配成功,则找到了目标文件的inode号码。

  4. 获取inode信息:根据inode号码,操作系统会通过inode表或其他数据结构获取与该inode相关联的元数据信息,如文件大小、权限、所有者等。

  5. 定位数据块:一旦获取了inode信息,操作系统就知道了文件实际存储在哪些数据块中。通过inode中的指针或引用,操作系统可以定位到文件的数据块。

  6. 读取文件内容:最后,操作系统会读取文件数据块中存储的实际文件内容,并将其提供给用户进行读取或处理。

面试题

问:系统里还有空间,为何创建文件或写入文件会失败?
答:因为inode和Data blocks的空间是固定的,不能保证两个同时有空间,若inode满了,Data blocks有空间,还是会失败。

硬链接

  我们看到,真正找到磁盘上文件的并不是文件名,而是inode。 其实在linux中可以让多个文件名对应于同一个inode。

  创建硬链接是在文件系统中创建一个指向目标文件的硬链接,硬链接与目标文件共享相同的 inode 和数据块,它们在文件系统中被视为同一实体,即使使用不同的文件名。硬链接就相当于给文件起别名
使用的命令如下:
         ln <目标文件> <链接名>

在这里插入图片描述
  可以看出来多个文件名共用一个inode
在这里插入图片描述
  上图可以看出来,使用任意一个文件名来改变文件内容,所有文件名中的内容都会改变。
在这里插入图片描述
  可以看出来,随着硬链接的增加,这个字段的数字大小也会增加。这个字段代表硬链接数。

  当创建出来一个文件时,这个硬链接数都是为1的。所以我们在删除文件时干了两件事情:

  1. 在目录中将对应的记录删除。
  2. 将硬连接数置为0,对应的磁盘释放。
  3. 需要注意的是,即使一个文件有多个硬链接,只要所有硬链接都被删除,文件的数据才会真正被删除。在最后一个硬链接被删除之前,其他硬链接仍然可以访问和使用文件的内容。

软链接

  • 软链接(Symbolic Link),也被称为符号链接或软连接,是一种特殊类型的文件,它指向另一个文件或目录。
  • 软链接是通过路径名来引用的,类似于一个快捷方式或别名。它允许将一个文件或目录链接到另一个位置,而无需复制或移动实际的数据。
  • 软链接与硬链接不同,软链接是一个独立的文件,它包含了指向目标文件或目录的路径信息。这意味着当访问软链接时,操作系统会解析软链接并跟踪到目标文件或目录,然后访问真正的数据。
    使用这个命令来建立软链接:
          ln -s <目标文件或目录> <链接名>
    在这里插入图片描述
      可以看出来,硬链接数还是1,因为软链接拥有独立的一个inode,每一个文件都是独立的,所以u和t是两个文件,只不过u指向了t,且u的文件大小也不是t的文件大小。
      需要注意的是,软链接有可能形成循环链接,即链接链条上存在循环引用。这种情况下,操作系统可能无法正确解析链接关系,导致访问错误或死循环。因此,在创建软链接时应注意避免循环链接。

    😄 创作不易,你的点赞和关注都是对我莫大的鼓励,再次感谢您的观看😄

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/324744.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 25. K 个一组翻转链表

K 个一组翻转链表 给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改…

安科瑞微机综合保护测控装置在某电厂10.5kV厂用电系统改造中的应用——安科瑞 顾烊宇

摘要&#xff1a;某电厂8号机10.5kV厂用电二次系统设备大多为常规电磁式继电器、电量变送器等。通过对厂用电二次系统从设备选型、设计、施工调试等方面进行的改造&#xff0c;尤其微机综合保护测控装置的应用&#xff0c;集控制、保护、测量、信号报警、开关量采集、通讯功能于…

【Java 进阶篇】Nginx 使用详解:搭建高性能的 Web 服务器

在互联网的世界里&#xff0c;Web 服务器是我们访问网站、获取信息的入口。Nginx&#xff08;发音"engine x"&#xff09;作为一款轻量级、高性能的 Web 服务器和反向代理服务器&#xff0c;因其出色的性能和可扩展性而备受推崇。本文将围绕 Nginx 的使用进行详解&am…

新手小白如何搭建自己的服务器

由于近期六年前的域名到期了&#xff0c;阿里云的客服电话&#xff0c;正好提醒了我需要管理下这方面的东西&#xff0c; 正好看到阿里云的服务器99/年&#xff0c;而且可以原价续费两年&#xff0c;截止日期为2026年3月&#xff0c;所以我还是剁手了。 借着这次机会写一部分建…

Linux系统安装MySQL

Linux系统安装MySQL 第一步&#xff1a;下载YUM wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm第二步&#xff1a;安装MySQL的YUM 仓库 rpm -ivh mysql57-community-release-el7-11.noarch.rpm第三步&#xff1a;查看MySQL版本 yum repolist …

YOLOv8改进:IoU系列篇 | Shape-IoU结合基于辅助边框的Inner-IoU损失,实现再次创新

🚀🚀🚀本文改进: Shape-IoU结合基于辅助边框的Inner-IoU损失,小目标检测实现涨点,基于辅助边框的优化前提下,更加关注边界框本身的形状和尺度来计算损失 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研…

【Java】实验七

实验要求: 1、编写有复制文本文件功能的记事本程序,界面参考下图,窗口中放置文本区(JTextArea)组件: 当点击“复制文件”菜单项后,出现下面的文件对话框,选择要复制的文件。 点击“打开”按钮后,将选中的文件显示在记事本的文本区,并将该文件复制到同一目录下的“cop…

移动通信原理与关键技术学习(2)

1.多径信道滤波器表示&#xff0c;多径信道可以认为是线性时变滤波器&#xff0c;接收信号为发送信号与信道冲激响应的卷积。 2.调制就是对信号源的信息进行处理加到载波上&#xff0c;使其变为适合于信道传输的形式的过程&#xff0c;就是使载波随信号而改变的技术。 3.进行调…

SSH 密钥身份验证和管理

安全外壳协议&#xff08;Security Shell Protocol&#xff09;是一种应用于计算机网络的安全通信协议&#xff0c;其提供的服务可用于保护网络上的连接和数据传输安全性&#xff0c;其核心思想是为网络上的两台计算机之间搭建一个安全的外壳&#xff0c;以保护数据传输的安全性…

54、Softmax 分类器以及它的底层原理

下面开始介绍最后一个算法softmax。在前面介绍全连接算法或其他文章中,或多或少也提到了softmax。 在分类网络里,softmax的作用主要是将模型的原始输出映射到 0~1之间的概率分布。很多时候对于我们初学者而言,只知道softmax可以做概率映射,但并不了解它内部的原理是如何完…

【28】Kotlin语法进阶——使用协程编写高效的并发程序

提示&#xff1a;此文章仅作为本人记录日常学习使用&#xff0c;若有存在错误或者不严谨得地方欢迎指正。 文章目录 一、Kotlin中的协程1.1 协程的基本用法1.1.1协程与协程作用域1.1.2 使用launch函数创建子协程1.1.3 通过suspend关键声明挂起函数1.1.4 coroutineScope函数 1.2…

支持向量机(Support Vector Machines,SVM)

什么是机器学习 支持向量机&#xff08;Support Vector Machines&#xff0c;SVM&#xff09;是一种强大的机器学习算法&#xff0c;可用于解决分类和回归问题。SVM的目标是找到一个最优的超平面&#xff0c;以在特征空间中有效地划分不同类别的样本。 基本原理 超平面 在二…