硬链接和软链接以及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的文件大小。
      需要注意的是,软链接有可能形成循环链接,即链接链条上存在循环引用。这种情况下,操作系统可能无法正确解析链接关系,导致访问错误或死循环。因此,在创建软链接时应注意避免循环链接。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript新加入的**运算符,哪里有些不一样呢?

JavaScript语法(四)&#xff1a;新加入的**运算符&#xff0c;哪里有些不一样呢&#xff1f; 上一节课我们已经给你介绍了表达式的一些结构&#xff0c;其中关于赋值表达式&#xff0c;我们讲完了它的左边部分&#xff0c;而留下了它右边部分&#xff0c;那么&#xff0c;我们…

HarmonyOS4.0系统性深入开发14AbilityStage组件容器

AbilityStage组件容器 AbilityStage是一个Module级别的组件容器&#xff0c;应用的HAP在首次加载时会创建一个AbilityStage实例&#xff0c;可以对该Module进行初始化等操作。 AbilityStage与Module一一对应&#xff0c;即一个Module拥有一个AbilityStage。 DevEco Studio默…

1-并发编程线程基础

什么是线程 在讨论什么是线程前有必要先说下什么是进程&#xff0c;因为线程是进程中的一个实体&#xff0c;线程本身是不会独立存在的。 进程是代码在数据集合上的一次运行活动&#xff0c;是系统进行资源分配和调度的基本单位&#xff0c;线程则是进程的一个执行路径&#…

创意与技术的结晶:AI魔法绘图与中文描述的完美结合

在人类文明的长河中&#xff0c;创意与技术一直是推动发展的重要动力。随着科技的日新月异&#xff0c;人工智能&#xff08;AI&#xff09;在创意领域的应用逐渐崭露头角&#xff0c;而AI魔法绘图与中文描述的结合&#xff0c;更是将这一趋势推向了新的高度。AI魔法绘图是一种…

各类Java对象

相关概念的混淆 在某一时间段&#xff0c;人们对某种编程困境感到烦恼&#xff0c;不少人脑中产生了一种新开发方式的概念 一些代表人物提出了他们的意见&#xff0c;而同一时期可能又不少人对同一问题&#xff0c;用自己的不同语言提出不同概念 如果又官方组织维护概念&#x…

外包干了3个多月,技术退步明显。。。。。

先说一下自己的情况&#xff0c;本科生生&#xff0c;19年通过校招进入广州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测…

初探ElasticSearch

1.什么是ElasticSearch&#xff1f; ElasticSearch简称ES&#xff0c;也成为弹性搜索&#xff0c;是基于Apache Lucene构建的开源搜索引擎。其实Lucene本身就是一款性能很好的开源搜索引擎工具包&#xff0c;但是Lucene的API相对复杂&#xff0c;而且掌握它需要很深厚的“内功…

【Linux Shell】7. printf 命令

文章目录 【 1. printf 命令的使用方法 】【 2. 实例 】 【 1. printf 命令的使用方法 】 printf 命令模仿 C 程序库&#xff08;library&#xff09;里的 printf() 程序&#xff0c;printf 由 POSIX 标准所定义&#xff0c;因此使用 printf 的脚本比使用 echo 移植性好。prin…

kubeSphere集群部署nacos

kubeSphere部署nacos 个人环境说明执行nacos数据脚本kubeSphere添加配置创建有状态副本集修改集群配置文件 创建外部访问服务访问 个人环境说明 由于我之前这个项目就是dockerjenkins部署的,只是现在升级到k8skubeSphere所有下面有些操作我可能不同,例如我的nacos配置文件就是d…

x-cmd pkg | gh - GitHub 官方 CLI

目录 简介首次用户功能特点与 x-cmd gh 模块的关系相关作品进一步探索 简介 gh&#xff0c;是由 GitHub 官方使用 Go 语言开发和维护的命令行工具&#xff0c;旨在脚本或是命令行中便捷管理和操作 GitHub 的工作流程。 注意: 由于 x-cmd 提供了同名模块&#xff0c;因此使用官…

虚幻UE 增强输入-触发器

上一篇增强输入基础&#xff1a;虚幻UE 增强输入-第三人称模板增强输入分析与扩展 主要对第三人称模板的增强输入进行分析、复刻和扩展 本篇将会对增强输入中的触发器中的各参数进行讲解 文章目录 前言触发器参数1、下移TriggerDown2、已按下TriggerPressed3、已松开TriggerRel…

系列一、如何正确的获取Spring Cloud Alibaba Spring Cloud Spring Boot之间的版本对应关系

一、正确的获取Spring Cloud Alibaba & Spring Cloud & Spring Boot之间的版本对应关系 1.1、概述 Java发展日新月异&#xff0c;Spring Cloud Alibaba 、 Spring Cloud 、 Spring Boot在GitHub上的迭代也是异常的频繁&#xff0c;这也说明其社区很活跃&#xff0c;通…

【ChatGPT+】创新与教育的交汇点:中国训练工程师的崛起

人工智能总价值超15.7万亿美元 根据国际数据公司&#xff08;IDC&#xff09;的预测&#xff0c;到2030年&#xff0c;全球人工智能市场总价值将超过15.7万亿美元&#xff0c;这表明人工智能技术将在未来几十年内得到广泛应用并取得长足发展。 人工智能的快速发展将对各个领域…

【案例】HOOPS Web Platform助力Eurostep简化全球制造流程!

行业&#xff1a;制造业 公司&#xff1a;Eurostep 软件&#xff1a;ShareAspace软件开发包&#xff1a;Hoops Web Platform 挑战&#xff1a; 为制造商打造协同设计产品的云服务平台。结合本地3D功能以增加现有的2D数据功能。在供应链日益全球化的情况下&#xff0c;保证数…

【深度学习:Self-supervised learning (SSL) 】自我监督学习解释

【深度学习&#xff1a;SSL Self-supervised learning 】自我监督学习解释 什么是自我监督学习&#xff1f;比较自我监督学习与监督学习和无监督学习 为什么计算机视觉模型需要自监督学习&#xff1f;自我监督学习的好处自监督学习的局限性 自我监督学习如何运作&#xff1f;对…

UOS下通过SSH隧道访问云端内网windows桌面

1 用户痛点 随着时代的发展&#xff0c;众多企业的服务器慢慢走向云端。大量云端服务器节省企业成本的同时&#xff0c;也带来了安全性问题。例如&#xff1a;管理云端的服务器&#xff0c;特别是windows桌面服务器&#xff0c;往往需要给这个服务器分配一个公网IP地址&#x…

计算机网络面试题

参考&#xff1a;小林Coding-图解计网 必备基础知识点 &#xff08;一&#xff09;TCP/IP网络模型和标准ISO网络模型 1&#xff0c;TCP/IP详解-各层使用到的协议 对应的数据包的结构 &#xff1a; 2&#xff0c;ISO七层模型 3&#xff0c;TCP/IP和ISO的对比 主要特定是&…

vue-cli创建项目时由esLint校验导致报错或警告的问题及解决

vue-cli创建项目时由esLint校验导致报错或警告的问题及解决 一、万能办法 一、万能办法 //就是在报错的JS文件中第一行写上 /* eslint-disable */链接: https://www.yii666.com/blog/288808.html 其它的方法我遇见了再补充

Fiddler抓取HTTPS最全(强)攻略

对于想抓取HTTPS的测试初学者来说&#xff0c;常用的工具就是fiddler。可是在初学时&#xff0c;大家对于fiddler如何抓取HTTPS真是伤了脑筋&#xff0c;可能你一步步按着网上的帖子成功了&#xff0c;那当然是极好的。 有可能没有成功&#xff0c;这时候你就很抓狂了&#xff…

基于双向LSTM模型完成文本分类任务

6.4.1 数据处理 IMDB电影评论数据集是一份关于电影评论的经典二分类数据集&#xff0e;IMDB 按照评分的高低筛选出了积极评论和消极评论&#xff0c;如果评分 ≥7≥7&#xff0c;则认为是积极评论&#xff1b;如果评分 ≤4≤4&#xff0c;则认为是消极评论&#xff0e;数据集包…