轻松理解操作系统 - 轻松了解 inode 是如何管理文件的

Linux 由于其开源、比较稳定等特点统治了服务端领域。也因此,学习Linux 系统相关知识在后端开发等岗位中变得越来越重要,甚至可以说是必不可少的。

因为它的广泛应用,所以在程序员的日常工作和面试中,它都是经常出现的。它的开源特性也让它适合于让对于计算机和操作系统底层原理感兴趣的人进行学习。

python入门

C++入门

开始今天的正文

一、文件系统是什么?如何让我们在其中标记一个唯一的文件?

其实文件系统这个概念没有那么神秘:其实它就是文件在储存介质(储存设备)上的组织形式。

随之而来的问题是:我们如何在它上面查找一个文件?我们如何知道某个文件就是我们要找的它自己而不是其他文件呢?

Linux 系统解决这个问题的方案采用的是 inode。

二、Linux 中的“唯一标识” - inode(索引节点)

inode 的本质是什么?

是一个数据结构,用于跟踪 Linux 或基于 UNIX 的文件系统中的所有文件和目录。每个文件和目录在文件系统中都有一个唯一的inode与之关联。

你可以使用ls -i命令来查看文件或目录的inode信息。以下是一个示例:

ls -i filename

输出信息就像是下文一样:

1234567 -rw-r--r-- 1 user user 1024 Sep 4 14:00 example.txt

其中,1234567是example.txt的inode编号

大多数的 inode 大小为 128 字节

在大多数文件系统中,inode的默认大小通常为 128 字节。

不过,这一大小并非一成不变,它可以在不同的文件系统中有所变化。例如, ext4 文件系统支持将 inode 大小设置为 128 字节或 256 字节

三、inode 实现唯一标识的奥秘在于什么?

首先我们要来了解一下 Linux 文件系统的其他三个重要结构:

超级块(Super Block):存储整个文件系统的元数据,如文件系统大小、inode和block的总量及使用量等。

inode表(Inode Table):存储所有文件和目录的inode信息。

数据块(Data Blocks):存储文件或目录的实际数据。

其中,超级块 和 inode表 起到了至关重要的作用。超级块包含了文件系统的全局信息,inode表 包含了全部 inode 的信息。

inode 表保证了 inode号 的唯一性。

图片

四、inode 有什么好处和缺点呢?

inode 的好处和用处主要有三点:除了性能优化之外,其实它还可以通过多级指针指向数据块来储存很大的文件

1、提供文件系统的性能优化:由于inode中记录了文件的元数据信息,系统可以通过读取inode来获取文件的属性,而无需读取整个文件,从而提高了文件系统的性能。

2、实现硬链接:inode中的链接数属性可以用来记录有多少个文件名指向同一个inode,从而实现了硬链接的功能。

3、管理文件的数据块:inode中还包含了指向存储文件实际数据的数据块的指针,通过这些指针,操作系统可以快速定位文件的数据块并进行读取或写入操作。

inode 其实有个缺点就是不太合适储存非常大量的小文件,因为每个文件都要占用一个 inode:

inode耗尽问题:当文件系统中的inode数量耗尽时,即使磁盘上还有可用的存储空间,也无法再创建新的文件或目录。

五、总结:inode 就像文件的身份证,包含了唯一的精确信息并适合于储存大文件

  1. 唯一性:每个文件系统中的每个文件或目录都有一个唯一的inode号码,通过这个号码可以定位到文件或目录的元数据。

  2. 元数据存储:每个inode包含了文件或目录的元数据,如文件大小、所有者、权限、时间戳等信息,但不包括文件名。这些元数据对于文件系统的管理和访问至关重要。

  3. 高效的文件访问:文件系统通过inode来管理文件,这样即使文件名被修改或文件被移动,文件系统仍然可以通过inode来准确定位文件,从而提高了文件的访问效率。

六、inode 储存大文件的特性也依赖于多级指针和数据块,那咱们下期就来讲讲数据块

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

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

相关文章

Vue(JavaScript)读取csv表格并求某一列之和(大浮点数处理: decimal.js)

文章目录 想要读这个表格,并且求第二列所有价格的和方法一:通过添加文件输入元素上传csv完整(正确)代码之前的错误部分因为价格是小数,所以下面的代码出错。如果把parseFloat改成parseInt,那么求和没有意义…

微信小程序-事件总线

一.事件总线的概念和作用 事件总线是对发布-订阅模式的一种实现,是一种集中式事件处理机制,允许不同组件之间进行彼此通信,常用于两个非父子组件和兄弟组件之间的通讯。 在日常开发过程中,我们可以使用第三方的发布订阅 JS 包来实…

成都郝蓉宜恺文化传媒:引领大数据应用新篇章

在信息化浪潮汹涌的今天,大数据被誉为新时代的“石油”,正在以前所未有的速度改变着我们的生活和工作方式。成都郝蓉宜恺文化传媒,作为大数据领域的领军企业,始终站在创新的前沿,引领着大数据应用的新篇章。 作为大数…

qt QDropEvent详解

1、概述 QDropEvent是Qt框架中用于处理拖放释放事件的一个类。它允许开发者在用户界面中更好地管理和处理拖放操作,从而实现交互式和响应式的应用程序。QDropEvent类提供了处理拖放释放事件所需的方法和信号,使得开发者能够轻松地实现拖放功能&#xff…

Kotlin的内置函数

Kotlin 提供了丰富的内置函数,它们极大简化了日常开发工作。常见内置函数包括 标准库函数(let、apply、run 等),用于提高代码的简洁性和可读性。下面我们详细介绍这些函数的功能、用法以及它们之间的区别。 1. let 函数 let 通常…

Pod安装软件将CDN改为国内的镜像

1、碰到错误 在pod install的时候碰到以下的下载错误: 文字错误如下: CDN: trunk URL couldnt be downloaded: https://cdn.jsdelivr.net/cocoa/Specs/5/b/d/OpenCV/2.4.11/OpenCV.podspec.json Response: Timeout was reached CDN: trunk URL couldn…

Rockchip SoC AI 与视觉处理器路线图:赋能未来的 AI 驱动设备

随着人工智能(AI)和计算机视觉技术不断推动各行各业的创新,Rockchip 已成为提供强大系统级芯片(SoC)解决方案的领先厂商。该公司已开发出多款集成 AI 功能并支持先进多媒体与视觉技术的 SoC,非常适合用于 A…

尚庭公寓-小程序接口

7. 项目开发 7.4 移动端后端开发 7.4.1 项目初始配置 7.4.1.1 SpringBoot配置 1. 创建application.yml文件 在web-app模块的src/main/resources目录下创建application.yml配置文件,内容如下: server:port: 80812. 创建SpringBoot启动类 在web-app…

练习LabVIEW第三十八题

学习目标: 刚学了LabVIEW,在网上找了些题,练习一下LabVIEW,有不对不好不足的地方欢迎指正! 第三十八题: 创建一个VI,实现对按钮状态的指示和按钮“按下”持续时间简单计算功能,按…

HTMLCSS:3D 旋转卡片的炫酷动画

效果演示 这段代码是一个HTML和CSS的组合&#xff0c;用于创建一个具有3D效果的动画卡片。 HTML <div class"obj"><div class"objchild"><span class"inn6"><h3 class"text">我是谁&#xff1f;我在那<…

微控制器(MCU)如何运行存储在Flash的程序???

忙&#xff0c;太忙了&#xff01;&#xff01;&#xff01;忙完就好了。MCU运行不也就如此&#xff1f;在微控制器单元&#xff08;MCU&#xff09;中&#xff0c;我们所编写的程序时通常是存储在闪存&#xff08;Flash&#xff09;中。当MCU启动时&#xff0c;它会从闪存中读…

yolov8涨点系列之引入CBAM注意力机制

文章目录 YOLOv8 中添加注意力机制 CBAM 具有多方面的好处特征增强与选择通道注意力方面空间注意力方面 提高模型性能计算效率优化&#xff1a; yolov8增加CBAM具体步骤CBAM代码(1)在__init.pyconv.py文件的__all__内添加‘CBAM’(2)conv.py文件复制粘贴CBAM代码(3)修改task.py…

如何无缝更换WordPress主题:关键步骤详解

更换WordPress主题对于希望刷新网站外观或改善用户体验的站长来说&#xff0c;是一项常见但不容忽视的任务。无论是为了提升性能还是实现新的设计风格&#xff0c;在更换主题时&#xff0c;确保不遗漏任何重要细节至关重要。本文将详细介绍更换WordPress主题的关键步骤&#xf…

推荐一款PowerPoint转Flash工具:iSpring Suite

iSpring Suite是一款PowerPoint转Flash工具&#xff0c;使用iSpring Suite 8可以轻松的将PPT演示文档转换为对Web友好的Flash影片格式。软件界面简洁&#xff0c;使用方便。为什么要转换成flash格式呢?Flash格式的最大特点是体积小巧、易于分发&#xff0c;兼容所有的操作系统…

【案例】故障雪花屏

开发平台&#xff1a;Unity 6.0 开发工具&#xff1a;Shader Graph 参考视频&#xff1a;【U2D Shader Graph】❄️雪❄️花❄️屏❄️   一、效果图 二、Shader Graph 路线图 三、案例分析 核心思路&#xff1a;雪花屏幕效果 &#xff08;混合&#xff09; 原图像 最终图像…

ffplay 实现视频流中音频的延迟

ffplay -rtsp_transport tcp -i rtsp://admin:1234qwer192.168.1.64:554/Streaming/Channels/101 -vn -af "adelay5000|5000"在这个命令中&#xff1a; -vn 参数表示只播放音频。 -af "adelay5000|5000" 参数表示将音频延迟5000毫秒&#xff08;即5秒&…

科技资讯|谷歌Play应用商店有望支持 XR 头显,AR / VR设备有望得到发展

据 Android Authority 报道&#xff0c;谷歌似乎正在为其 Play 商店增加对 XR 头显的支持。该媒体在 Play 商店的代码中发现了相关的线索&#xff0c;包括一个代表头显的小图标以及对“XR 头显”的提及。 谷歌也可能改变了此前拒绝将 Play 商店引入 Meta Quest 头显的决定。今…

Pr 视频效果:超级键

视频效果/键控/超级键 Keying/Ultra Key 超级键 Ultra Key效果是 Premiere Pro 中功能强大的抠像工具&#xff0c;主要用于绿幕/蓝幕抠像。通过选择要抠除的颜色&#xff08;通常是绿幕或蓝幕的颜色&#xff09;&#xff0c;即可以将该颜色的像素设为透明&#xff0c;实现主体与…

Git使用指南

目录 工作机制基本框架:流程图 基本命令分支操作远程仓库本地仓库关联远程仓库 参考 工作机制 基本框架: Workspace&#xff1a;开发者工作区&#xff0c;也就是你当前写代码的目录&#xff0c;它一般保持的是最新仓库代码。Index / Stage&#xff1a;暂存区&#xff0c;最早…

计算机网络:简述LAN口模式下NAT和代理的区别

LAN口模式 NAT和代理的区别 LAN口模式下的NAT和代理的区别主要体现在定义、功能和应用场景上。 # NAT和代理的定义和功能 ‌NAT&#xff08;网络地址转换&#xff09;‌&#xff1a;NAT是一种网络地址翻译技术&#xff0c;它将内部私有IP地址转换为公网IP地址&#xff0c;使得…