inode详解

article/2025/10/2 23:28:56

文章目录

  • 什么是inode?
  • inode的内容(inode是一个结构体)
  • block区和inode区的理解
  • inode编号
  • 硬链接
  • 软连接

什么是inode?

理解inode,要从文件储存说起。
文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。

操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。

文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

inode的内容(inode是一个结构体)

我们可以通过stat指令查看一个文件的inode信息
在这里插入图片描述
inode中的内容:

  • 文件的字节数,块数
  • 文件拥有者的User ID
  • 文件的Group ID
  • 文件的读、写、执行权限
  • 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次 变动的时间,atime指文件上一次打开的时间。
  • 链接数,即有多少文件名指向这个inode
  • 文件数据block的位置
  • inode编号(对应数组的下标)

block区和inode区的理解

硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区(block区),存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。inode区是以数组的形式存储的,对应的数组下标就是inode编码,每个元素就是一个结构体(结构体内容在上面已说),inode结构体中会有一个指针,指向block区也就是存放的文件内容。

在这里插入图片描述
我们可以通过指令df查看每个硬盘分区的inode总数和已经使用的数量.
在这里插入图片描述

inode编号

inode编号是很重要的,当系统在找一个文件时,步骤如下:

1.通过文件名先找到文件的inode编号
2.通过inode编号找到文件inode信息
3.通过inode信息中的block指针找到文件内容。

我们可以通过ls -i查看文件的inode编号
在这里插入图片描述

硬链接

一般情况下,文件名和inode号码是”一一对应”关系,每个inode号码对应一个文件名。但是Unix/Linux系统允许,多个文件名指向同一个inode号码。这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为”硬链接”(hard link)。可以使用ln指令添加硬链接。

在这里插入图片描述

在这里插入图片描述

通过硬链接创建出来的文件的inode编号是一样的,
注意:

1.硬链接相当于一个副本,不会占用实际空间
2.删除一个硬链接,不会影响其他的inode
3.不允许给目录创建硬链接。
4. 硬链接只有在同一个文件系统中才能创建。

软连接

除了硬链接以外,还有一种特殊情况。
文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的”软链接”(soft link)或者”符号链接(symbolic link)。
这意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错:”No such file or directory”。这是软链接与硬链接最大的不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode”链接数”不会因此发生变化。ln -s命令可以创建软链接。

在这里插入图片描述
在这里插入图片描述
对应图解:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/48i52iBI.shtml

相关文章

代码编写流程

文章目录 代码编写步骤好的代码满足条件:注意事项 代码编写步骤 1、分析任务目标,根据目标选择合适的代码设计模式   1.1、创建模式选择   1.2、结构模式选择   1.3、行为模式选择 2、整理思路、画出思维导图、或代码流程图 3、找到其中的关键对象…

代码详解设计模式--模板模式

模板模式 一个抽象类公开定义了执行方法的模板,它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。 优点: 封装不变部分,扩展可变部分。提取公共代码,便于维护。行为由父类控制,子类实现…

GRID-FORM 基于 VUE3 可视化低代码表单设计器

本文开源代码在 GRID-FORM,如能帮到您麻烦给个星哈 楔子 大概 4 年前,我做了一个简单的动态表单功能,开发人员通过 UI 界面配置表单(其实就是添加常用的控件,如文本框、下拉框等)就能向用户提供数据查询&a…

领域驱动实践总结(基本理论总结与分析+架构分析与代码设计+具体应用设计分析V)

目录 领域驱动实践总结三:具体应用设计分析 一、应用项目的基本背景 二、针对项目进行领域驱动的战略设计阶段 (一)事件风暴确定产品愿景 (二)事件风暴进行业务场景分析 场景分析一:请假 用户:…

领域驱动实践总结(基本理论总结与分析+架构分析与代码设计V+具体应用设计分析)

目录 领域驱动实践总结二:架构分析与代码设计 一、微服务架构模型的对比与选择 (一)整洁架构 (二)六边形架构 (三)DDD 分层架构 1.用户接口层 2.应用层 3.领域层 4.基础层 5.从三层架构向 DDD 分…

十二种常见设计模式代码详解

零:设计模式分类 设计模式有创建型模式、结构型模式与行为型模式 创建型:单例模式、工厂模式(简单工厂,工厂方法,抽象工厂)结构型:适配器模式、门面模式、装饰器模式、注册树模式、代理模式、…

优雅代码的秘密,都藏在这6个设计原则中

优雅的代码,犹如亭亭玉立的美女,让人赏心悦目。而糟糕的代码,却犹如屎山,让人避而远之。 如何写出优雅的代码呢?那就要理解并熟悉应用这6个设计原则啦:开闭原则、单一职责原则、接口隔离原则 、迪米特法则…

低代码--低代码开发(LCDP)介绍

低代码开发(LCDP)介绍 1 介绍1.1 概述1.2 行业风向1.3 行业报告1.4 优点减少重复编程避免沟通隔阂提升效率 1.5 挑战完全抛弃代码的代价,就是平台能力与灵活性受限应用低代码平台阻力大技术局限老旧系统改造困难职业角色缺失应用者大多是技术…

网页设计个人主页代码

/ 01 / 前话 主题《周末の守候》采用Dreamweaver软件制作,主题包含了12页,页面能够相互跳转,运用了HTML5标签,DIVCSS布局,网站主题鲜明、内容丰富、健康、高雅且栏目设置合理,网站中页面色彩搭配合理&…

#低码系列#如何设计一个低代码平台?

低码系列文章 #低码系列#低代码来了,程序员会失业吗? 整体设计 用户群体 对于基础功能的实现,不需要开发人员介入。业务人员通过可视化页面,即可完成设计。从这个角度上看,低码平台面向的用户是业务人员、系统管理…

浅谈代码结构的设计

本文来自网易云社区 作者:陆秋炜 引言 :很久之前,在做中间件测试的时候,看到开发人员写的代码,有人的代码,看起来总是特别舒服,但有的开发代码,虽然逻辑上没有什么问题,但总给人感觉特别难受。后来成为了一位专职开发人员,渐渐发现,自己的代码也是属于“比较难受”…

领域驱动实践总结(基本理论总结与分析V+架构分析与代码设计+具体应用设计分析)

目录 领域驱动实践总结一:基本理论总结与分析 一、领域驱动设计两大设计:战略设计和战术设计 (一)战略设计 1.出发角度与目标 2.实现方式:事件风暴与模型确立(用例分析、场景分析和用户旅程分析) 3.用三步来划定…

如何设计一个低代码平台

编者按:近些年来,低代码发展火热,各种低代码平台如雨后春笋纷纷崛起,这些平台各定位不同,优劣不同,用户的选择空间很大。那么,如果用户想从零开始设计一个低代码平台,该如何做呢&…

QT纯代码设计UI界面Demo

目录 一、前言 二、界面 三、源码简析 四、Demo/源码 一、前言 UI的设计方法有几种: ①一种是使用Qt Designer,也就是可视化设计,这在小型项目中常见,优点就是可观简便; ②另一种就是纯代码设计UI,也…

Verilog RTL 代码设计新手上路

1. 做一个4选1的mux,并且进行波形仿真 和2选1的mux对比,观察资源消耗的变化: 实验分析:4选1的mux实际上就是在2选1的mux上进行拓展,选用2位的控制信号控制4位输入信号的选择输出 实验代码设计如下: …

代码设计流程

一、需求分析 1、需求分析的三层境界:实现者、分析者、引导者。 2、在需求中提取到合适的用例(以抽卡系统为例) 3、用例分析法 5W1H分析法 对上面的“抽卡”用例进行分析如下 5W内容What抽取卡牌Who玩家When游戏服务器开启期间Where抽卡…

代码设计的内功——代码设计原则

引言 好代码是设计出来的,也是重构出来的,更是不断迭代出来的。在我们接到需求,经过概要设计过后就要着手进行编码了。但是在实际编码之前,我们还需要进行领域分层设计以及代码结构设计。那么怎么样才能设计出来比较优雅的代码结构…

二维傅里叶变换频谱图的含义

二维傅里叶变换频谱图的含义 在一维傅里叶变换得到的频谱图中,每个点表示其对应的幅度频率与其坐标对应的简谐波。二位傅里叶变换的频谱图,简谐波的振幅由对应点处对应的亮度表示,每一个点表示的波形为其对应的横纵坐标所表示的简谐波的叠加…

二维傅里叶变换深度研究-图像与其频域关系

一:二维傅里叶变换的数学原理 1.2D离散傅里叶公式解释: 那么,其F(u,v) 本质就是: 后续说明时的”频域”均指的其傅里叶功率谱,后面为了演示方便,所有频域图均经过了fftshift移动到中心位置。 2.2D傅里叶频…

使用matlab对图像进行二维傅里叶变换

这学期选了《图像工程基础》这门课,课上老师留了一个作业:对图像进行二维傅里叶变换。 现在我使用matlab解决这个问题 1.实验基本指令 首先我试了一下matlab图像处理的基本指令 原图: 经过以下指令后 将图片导入matlab后,命名…