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

轻松理解操作系统 - 轻松了解 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 储存大文件的特性也依赖于多级指针和数据块,那咱们下期就来讲讲数据块

相关文章:

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

Linux 由于其开源、比较稳定等特点统治了服务端领域。也因此,学习Linux 系统相关知识在后端开发等岗位中变得越来越重要,甚至可以说是必不可少的。 因为它的广泛应用,所以在程序员的日常工作和面试中,它都是经常出现的。它的开源特…...

go中Println和Printf的区别

Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 go中Println和Printf的区别 package mainimport ( "fmt" )//TIP To run your code, right-click the c…...

C++现代教程七之模块

优点 编译时间减少:模块消除了重复解析和编译头文件的需要,从而显著减少了编译时间。特别是在大型项目中,这一点尤为重要。更好的封装性:模块允许更严格的封装,可以明确地控制哪些符号对外可见。这有助于减少命名冲突和…...

AVLTree

1.AVL树的概念 二叉搜索树虽然可以提高查找的效率,但是如果数据有序或者接近有序,二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。为了解决该问题,于是就有了AVLTree。即当向二叉搜索树中插入…...

Java面向对象 C语言字符串常量

1. (1). package liujiawei;public class Phone {String brand;double price;public void call(){System.out.println("手机打电话");}public void play(){System.out.println("手机打游戏");} } public class phonetest {public…...

SpringBoot+Thymeleaf电商系统

> 这是一个基于SpringBootThymeleafBootstrap实现的简单电商系统。 > 实现了用户浏览、添加购物车、商品管理等功能,并支持响应式布局。 > 本项目适合JAVA初学者作为入门学习项目 一、部分界面演示 二、技术栈 技术栈中文描述Spring Boot快速开发框架…...

了解数据库并发产生的问题

在数据库管理系统中,并发控制是一个至关重要的方面。随着多个用户或进程同时访问和修改数据库中的数据,如果没有适当的并发控制机制,就可能导致数据不一致、丢失更新、脏读、不可重复读和幻读等问题。在单用户系统中,数据库操作是…...

openstack之guardian介绍与实例创建过程

运行特征 采集模块:扩展Ceilometer,采集存储网、业务网连通性、nova目录是否可读写; 收集模块:将采集到的数据存储到数据库中; 分析模块:根据采集的结果,分析各节点状态,并进行反向检…...

新一代跟踪器StrongSORT: Make DeepSORT Great Again论文解析—让 DeepSORT 再次伟大

新一代跟踪器StrongSORT: Make DeepSORT Great Again论文解析—让 DeepSORT 再次伟大 时间:2023年 机构:北京邮电大学 发表在:IEEE TRANSACTIONS ON MULTIMEDIA, VOL. 25, 2023 代码源码地址: pytorch版本:https://github.com/dyh…...

SAP ABAP开发学习——RFC

目录 RFC接口 定义 调用过程 RFC的通信 RFC通信情况 RFC接口系统 RFC的通信模式 RFC版本 RFC调用方式 Web Service接口 SAP创建Web Service示例 远程目标的维护 创建远程目标 外部系统访问设置 RFC的调用 RFC接口 定义 调用过程 RFC的通信 RFC通信情况 RFC接…...

Elasticsearch里的索引index是什么概念?(ChatGPT回答)

在 Elasticsearch(ES)中,索引(Index) 是一种数据结构,用来存储、组织和管理文档数据。它可以理解为数据库中的一张表,但有一些关键的不同之处。索引是 Elasticsearch 全文搜索引擎的核心概念之一…...

安全性测试

安全性测试评估系统在面对各种安全威胁时的防护能力和安全性的过程。以下是安全性测试的一些主要方面和方法: 1. 身份验证和授权测试 测试目标 确保系统能够正确验证用户的身份,并根据用户的权限授予相应的访问权限。测试方法 弱密码测试:尝…...

ComfyUI和Photoshop相结合,PS内实现:文生图,图生图,高清放大,局部重绘,面部修复,设计师福音

本文主要介绍:ComfyUI和Photoshop相结合,一个平台实现:图像生成,放大,局部重绘,面部修复,实时绘画 简直是设计师的福音。 主要包括: Photoshop 的安装以及插件的安装 Creative Cl…...

使用 map 和 reduce 提取对象数组中的 id 并组成新数组

在开发过程中,经常需要对 API 返回的数据进行处理,例如从对象数组中提取某些字段,并将它们组成新的数组。这里我们将介绍如何通过 JavaScript 的 map 和 reduce 方法来完成这一需求,并深入比较这两者的用法与适用场景。 需求&…...

Zero-Shot Relational Learning for Multimodal Knowledge Graphs

摘要 关系学习是知识表示领域,特别是知识图补全(KGC)领域的一项重要任务。虽然传统单模态环境下的关系学习已经得到了广泛的研究,但在多模态KGC环境下探索关系学习提出了不同的挑战和机遇。其中一个主要挑战是在没有任何相关训练…...

AUTOSAR COM 模块的主要功能导读以及示例

AUTOSAR COM 模块的主要功能 AUTOSAR COM 模块在车载系统中用于管理通信的中间层,主要功能包括: 信号传输与接收: • 提供信号打包和解包功能,将信号数据打包成协议数据单元(I-PDU)以便传输,或从接收到的…...

VMware下Centos7虚拟机数据盘/data目录(非lvm)不停机热扩容实操

实操环境 VMware:7.0 虚拟机:Centos7 (TEST-K8S-Node01) 扩容目录:/data (20G>>30G) 前置操作 注意事项:如果有条件的话,建议先做个主机的全量备份(…...

易盾增强版滑块识别/易盾识别/滑块识别/增强版滑块识别/易盾滑块本地识别

易盾增强版滑块识别 计算思路如下: 滑动条拖动距离传入 restrict 算法处理得到 初次值 J J * 率值0.309375 得到滑块偏移量。 滑块的旋转角度滑块偏移量*attrs 所以滑块偏移量滑块的旋转角度/attrs 通过滑块偏移量 求出 滑动条拖动距离 # 应用高斯模糊warped_…...

DMRl-Former用于工业过程预测建模和关键样本分析的数据模式相关可解释Transformer网络

DMRl-Former用于工业过程预测建模和关键样本分析的数据模式相关可解释Transformer网络 Liu, Diju, et al. “Data mode related interpretable transformer network for predictive modeling and key sample analysis in industrial processes.” IEEE Transactions on Indust…...

向量模型Jina Embedding: 从v1到v3论文笔记

文章目录 Jina Embedding: 从v1到v3Jina Embedding v1数据集准备训练过程 Jina Embedding v2预训练修改版BERT在文本对上微调在Hard Negatives上微调 Jina Embedding v2 双语言预训练修改版BERT在文本对上微调用多任务目标微调 Jina Embedding v3预训练在文本对上微调训练任务相…...

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色&#xf…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving

地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

恶补电源:1.电桥

一、元器件的选择 搜索并选择电桥,再multisim中选择FWB,就有各种型号的电桥: 电桥是用来干嘛的呢? 它是一个由四个二极管搭成的“桥梁”形状的电路,用来把交流电(AC)变成直流电(DC)。…...

jdbc查询mysql数据库时,出现id顺序错误的情况

我在repository中的查询语句如下所示&#xff0c;即传入一个List<intager>的数据&#xff0c;返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致&#xff0c;会导致返回的id是从小到大排列的&#xff0c;但我不希望这样。 Query("SELECT NEW com…...

篇章二 论坛系统——系统设计

目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...

node.js的初步学习

那什么是node.js呢&#xff1f; 和JavaScript又是什么关系呢&#xff1f; node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说&#xff0c; 需要在node.js的环境上进行当JavaScript作为前端开发语言来说&#xff0c;需要在浏览器的环境上进行 Node.js 可…...

[拓扑优化] 1.概述

常见的拓扑优化方法有&#xff1a;均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有&#xff1a;有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...