Linux:文件系统(软硬链接)

目录

inode

ext2文件系统

Block Group

超级块(Super Block)

GDT(Group Descriptor Table)

块位图(Block Bitmap) 

inode位图(Inode Bitmap) 

i节点表(inode Table) 

数据区(Data Blocks)

软硬链接

硬链接

软链接

软硬链接的对比

软硬链接的用途


inode

文件 = 内容 + 属性

而这个属性是存储在inode结构中的

文件的数据都存储在“块”中,在Linux系统中还需要找一块地方来存储这个文件的信息(属性),这种存储文件信息的区域叫做inode,中文名为“索引节点”

inode是保存文件属性的集合,一个文件只有一个inode

ls -l命令可以看到文件的详细属性,这些属性就是从inode中获取的

inode内有一个唯一的标识符,叫做inode号,我们可以通过ls -i命令查看inode号

文件名属性并未被纳入inode中,而是存储在当前文件所在的文件夹的数据结构中

inode的大小一般是128字节或者256字节,文件内容大小可以不同,属性大小一定相同

ext2文件系统

我们想要在硬盘上存储文件,必须先把硬盘格式化为某种格式的文件系统,才能存储文件,文件系统的目的就是组织和管理硬盘上的文件

ext2文件系统将整个分区划分为若干个同样大小的块组(Block Group),只要能管理一个分区,就能管理所有的分区,也就能管理所有的磁盘文件

Block Group

ext2文件系统会根据分区的大小划分为若干个Block Group,而每个Block Group都有着相同的结构组成

超级块(Super Block)

存放着文件系统本身的结构信息,描述着整个分区文件系统的信息。主要有block和inode的总量,未使用block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息

Super Block若是被破坏,可以说整个文件系统结构就被破坏了

GDT(Group Descriptor Table)

块组描述符表,描述块组属性信息,每个块组描述符存储一个块组的描述信息。如在这个块组中从哪里开始是inode Table,从哪里开始是Data Blocks,空闲的inode和数据块还有多少个等等。块组描述符在每个块组的开头都有一份拷贝

块位图(Block Bitmap) 

Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没有被占用

inode位图(Inode Bitmap) 

每个bit表示一个inode是否空闲可用

i节点表(inode Table) 

存放文件属性。如文件大小,所有者,最近修改时间等

是当前分组所有inode属性的集合 

inode编号以分区为单位整体划分,不可跨分区

数据区(Data Blocks)

存放文件的内容,也就是一个个的Block

对于普通文件,文件的数据存储在数据块中

对于目录,该目录下所有的文件名和目录名存储在所在目录的数据块中

Block号按照分区划分,不可跨分区

软硬链接

硬链接

ln 被链接的文件 新文件

真正找到磁盘上文件的并不是文件名,而是inode

Linux中可以让多个文件名对应于同一个inode

test1和test2的链接状态完全相同,他们被称为指向文件的硬链接,从上图可以看出它们的inode是相同的,2表示的是inode526302的链接数为2,若是删除其一,则链接数-1

软链接

ln -s 被链接的文件 新文件

软链接是通过名字引用另外一个文件

但实际上,新引用的文件和被引用的文件inode不同

软硬链接的对比

软链接是独立的文件

硬链接只是文件名和目标文件inode的映射关系

软硬链接的用途

硬链接:

  • 目录中的 . .. 就是硬链接
  • 文件备份

软链接:

  • 快捷方式

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

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

相关文章

java求职学习day27

数据库连接池 &DBUtils 1.数据库连接池 1.1 连接池介绍 1) 什么是连接池 实际开发中 “ 获得连接 ” 或 “ 释放资源 ” 是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们 采用连接池技术,来共享连接 Connection 。…

机器学习--2.多元线性回归

多元线性回归 1、基本概念 1.1、连续值 1.2、离散值 1.3、简单线性回归 1.4、最优解 1.5、多元线性回归 2、正规方程 2.1、最小二乘法 2.2、多元一次方程举例 2.3、矩阵转置公式与求导公式 2.4、推导正规方程0的解 2.5、凸函数判定 成年人最大的自律就是&#xff1a…

Python | Pytorch | Tensor知识点总结

如是我闻: Tensor 是我们接触Pytorch了解到的第一个概念,这里是一个关于 PyTorch Tensor 主题的知识点总结,涵盖了 Tensor 的基本概念、创建方式、运算操作、梯度计算和 GPU 加速等内容。 1. Tensor 基本概念 Tensor 是 PyTorch 的核心数据结…

996引擎-怪物:Lua 刷怪+清怪+自动拾取

996引擎-怪物:Lua 刷怪+清怪+自动拾取 文件位置NPC脚本参考资料文件位置 文件位置服务端D:\996M2-lua\MirServer-lua\Mir200客户端D:\996M2-lua\996M2_debug\devNPC脚本 服务端\Mir200\Envir\Market_Def\test\test爆率-3.lua -- NPC入口函数 function main(player)-- 获取玩…

git进阶--6---git stash

git进阶–6—git stash 1.需求背景 有时候我们在工作区做了很多的修改,还没到提交的阶段,但是有需要切换到别的分支做一些工作,这时候我们就可以先把工作区的内容保存起来,稍后再做处理这就需要用到git stash,stash翻译为存放&a…

群晖搭建Gitea教程(使用系统自带的postgresql)

基于群晖7.2.2,使用套件中心的gitea,和系统自带的postgresql postgresql: 切换到postgres用户 sudo -I -u postgres 在想要保存数据库的磁盘路径下创建PostgreSql文件夹 初始化数据库文件夹配置 initdb -D ./PostgreSql 备份./PostgreSql路径下的post…

Shell基础:中括号的使用

在Shell脚本中,中括号([ ... ] 和 [[ ... ]])是一种常见的条件测试结构。它们用于进行文件类型检查、值比较以及逻辑判断。通过了解它们的不同特点和用法,能够帮助你编写更加高效、安全且易读的脚本。本文将详细介绍Shell中单中括…

Docker 部署 ClickHouse 教程

Docker 部署 ClickHouse 教程 背景 ClickHouse 是一个开源的列式数据库管理系统(DBMS),主要用于在线分析处理(OLAP)。它专为大数据的实时分析设计,支持高速的查询性能和高吞吐量。ClickHouse 以其高效的数…

建表注意事项(2):表约束,主键自增,序列[oracle]

没有明确写明数据库时,默认基于oracle 约束的分类 用于确保数据的完整性和一致性。约束可以分为 表级约束 和 列级约束,区别在于定义的位置和作用范围 复合主键约束: 主键约束中有2个或以上的字段 复合主键的列顺序会影响索引的使用,需谨慎设计 添加…

为AI聊天工具添加一个知识系统 之86 详细设计之27 数据处理:ETL

本文要点 ETL 数据提取 作为 数据项目的起点。数据的整个三部曲--里程碑式的发展进程: ETL : 1分形 Type()-层次Broker / 2完形 Method() - 维度Delegate /3 整形 Class() - 容器 Agent 1变象。变象 脸谱Extractor - 缠度(物理 皮肤缠度&#xf…

Google C++ Style / 谷歌C++开源风格

文章目录 前言1. 头文件1.1 自给自足的头文件1.2 #define 防护符1.3 导入你的依赖1.4 前向声明1.5 内联函数1.6 #include 的路径及顺序 2. 作用域2.1 命名空间2.2 内部链接2.3 非成员函数、静态成员函数和全局函数2.4 局部变量2.5 静态和全局变量2.6 thread_local 变量 3. 类3.…

【HTML入门】Sublime Text 4与 Phpstorm

文章目录 前言一、环境基础1.Sublime Text 42.Phpstorm(1)安装(2)启动Phpstorm(3)“启动”码 二、HTML1.HTML简介(1)什么是HTML(2)HTML版本及历史(3)HTML基本结构 2.HTML简单语法(1)HTML标签语法(2)HTML常用标签(3)表格(4)特殊字符 总结 前言 在当今的软件开发领域&#xff0c…

C++滑动窗口技术深度解析:核心原理、高效实现与高阶应用实践

目录 一、滑动窗口的核心原理 二、滑动窗口的两种类型 1. 固定大小的窗口 2. 可变大小的窗口 三、实现细节与关键点 1. 窗口的初始化 2. 窗口的移动策略 3. 结果的更新时机 四、经典问题与代码示例 示例 1:和 ≥ target 的最短子数组(可变窗口…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.20 傅里叶变换:从时域到频域的算法实现

2.20 傅里叶变换:从时域到频域的算法实现 目录 #mermaid-svg-zrRqIme9IEqP6JJE {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-zrRqIme9IEqP6JJE .error-icon{fill:#552222;}#mermaid-svg-zrRqIme9IEqP…

刷题记录 动态规划-7: 63. 不同路径 II

题目:63. 不同路径 II 难度:中等 给定一个 m x n 的整数数组 grid。一个机器人初始位于 左上角(即 grid[0][0])。机器人尝试移动到 右下角(即 grid[m - 1][n - 1])。机器人每次只能向下或者向右移动一步。…

HarmonyOS:给您的应用添加通知

一、通知介绍 通知旨在让用户以合适的方式及时获得有用的新消息,帮助用户高效地处理任务。应用可以通过通知接口发送通知消息,用户可以通过通知栏查看通知内容,也可以点击通知来打开应用,通知主要有以下使用场景: 显示…

使用Java操作Redis数据类型的详解指南

SEO Meta Description: 详细介绍如何使用Java操作Redis的各种数据类型,包括字符串、哈希、列表、集合和有序集合,提供代码示例和最佳实践。 介绍 Redis是一种开源的内存数据结构存储,用作数据库、缓存和消息代理。它支持多种数据结构&#…

Unity飞行代码 超仿真 保姆级教程

本文使用Rigidbody控制飞机,基本不会穿模。 效果 飞行效果 这是一条优雅的广告 如果你也在开发飞机大战等类型的飞行游戏,欢迎在主页搜索博文并参考。 搜索词:Unity游戏(Assault空对地打击)开发。 脚本编写 首先是完整代码。 using System.Co…

图论常见算法

图论常见算法 算法prim算法Dijkstra算法 用途最小生成树(MST):最短路径:拓扑排序:关键路径: 算法用途适用条件时间复杂度Kruskal最小生成树无向图(稀疏图)O(E log E)Prim最小生成树无…

车载软件架构 --- 基于AUTOSAR软件架构的ECU开发流程小白篇

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活…