理解文件系统

news2024/11/22 11:34:23

之前的东西,全部是在内存中的。但是我们知道:不是所有的文件,都被打开了。大量的文件,就在磁盘上放着,什么都不做。这些文件非常多,杂,乱。而磁盘级别的文件管理,本质工作就能够快速的查询和定位到我们需要的文件。而这个就叫做文件系统

文章目录

  • 1. 磁盘的基本介绍
    • 1.1 磁盘的逻辑抽象结构
  • 2. 理解文件系统
    • 2.1 介绍inode
    • 2.2 文件的属性
  • 3. 理解软硬链接

1. 磁盘的基本介绍

磁盘是我们电脑上唯一的一个机械设备
在这里插入图片描述
在这里插入图片描述
这是磁盘的平面图,磁盘上存储的基本单位是扇区512字节。读写磁盘的时候,磁头找的是某一个面,某一个磁道,某一个扇区。所以,只有我们能磁盘上的盘面,磁道,扇区,就能找到一个存储单元。这叫做CHS地址
用同样的方法,我们就能找到所有的基本单元。而文件系统的一个作用就是:什么文件,对应了那几块磁盘块

1.1 磁盘的逻辑抽象结构

以前,我们使用的磁带,我们可以把它拉出来成一条直线。那么我们也可以把磁盘的盘片想象成线性结构。也就是当成一个数组。那么对磁盘的管理,就转换成了对数组空间的管理。
在这里插入图片描述
定位一个扇区,只需找到下标就行了。这个下标对应的地址叫做LBA(逻辑块地址)。

如果我们想让内存中的数据往磁盘中写入:
在这里插入图片描述
我们只知道LBA地址,首先需要将LBA地址映射转换成CHS地址
在这里插入图片描述
然后结合我们的数据,写到磁盘中。

补充
因为如果每次访问都是512字节,那么访问的速度就太慢了。所以文件系统访问磁盘一般以8个为一起,那么IO的基本单位是4KB。

为什么要这样设计呢
1.提高IO效率
2.不用让软件(OS)设计和硬件(磁盘)设计具有强相关性,也就是解耦合

还有一点就是一个磁盘很大,我们可能不是特别好管理,所以我们可以采用分区的方法来管理。然后再继续分,就是对磁盘的组进行管理。
在这里插入图片描述

2. 理解文件系统

我们知道:文件=内容+属性。不管是内容还是属性都是数据,所以都有存储。而Linux采用的是将内容和属性数据分开存储
内容存在block中,每个4KB。且不断增多。
属性数据存在inode中,每个128字节。但是稳定的。

下面介绍一下磁盘中组的管理:
在这里插入图片描述
Boot Block:存放的是一些开机信息。

Data blocks:以块为单位,进行文件内容的保存。每次4KB,如果不满,也分4KB。

inode Table:以128字节为单位,进行inode属性的保存。
inode属性里面有一个inode编号。一般而言,一个文件只能有一个inode编号,来代表文件的唯一性
在这里插入图片描述
Block Bitmap:Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没有被占用。

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

Group Descriptor Table(GDT):块组描述符,描述块组属性信息。比如:有多少inode,有多少个block被使用,多少个inode被使用,还剩多少等等。

Super Block(SB):存放文件系统本身的结构信息。记录的信息主要有:bolck 和 inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏,可以说整个文件系统结构就被破坏了。

GDT管的是一个块组,而SB管的是整个区的组。

2.1 介绍inode

一个inode(文件和属性)如何和属于自己的内容关联起来呢
在inode Table中,有一个struct inode。它里面包含了文件的所有属性,还有一个数组。
在这里插入图片描述
假设这个数组是15,其中下标[0,11]直接保存的就是该文件对应的blocks编号。

我们知道:Data blocks一块是4KB,那么磁盘只能保存48KB的文件吗
肯定不是。原因是:Data blocks 4KB也可以保存其它块的编号。而在blocks数组中,下标[12,14]指向的是Data blocks。但是这个Data blocks不保存有效数据,而是保存该文件所适用的其它块编号。也就是二级索引。

2.2 文件的属性

我们知道:文件名是文件属性。但是,在inode里面并没有保存文件名。所以,Linux下,底层实际都是通过inode编号标识文件的

我们要知道:Linux下一切皆文件。目录也可以看作是文件,目录的属性放在inode里,那么Data blocks放的是什么?放的是文件名和inode编号的映射关系所以,在同一目录下,不能创建多个同名文件。因为文件名本身就是一个具有key值的东西。

当我们创建一个文件,操作系统做了什么
我们知道:创建一个文件的时候,一定是在一个目录下。OS会根据文件名和inode编号找到自己所处的目录。根据目录的inode,找到目录的Data block。然后将文件名和inode编号的映射关系写入到目录的数据块中。

当我们删除一个文件,操作系统做了什么
就是将该文件的inode Bitmap和Block Bitmap中的1设成0。

3. 理解软硬链接

在这里插入图片描述
这里我们可以看不出什么区别,我们看一下inode:
在这里插入图片描述
从这里我们可以看出:软硬链接的区别:软链接是一个独立文件,有自己独立的inode和inode编号。硬链接不是一个独立文件,它和目标文件使用的是同一个inode

那么软链接有什么作用呢
看下面的例子:
在这里插入图片描述
这是在目录d1/d2/d3中运行一个可执行程序。
在这里插入图片描述
如果在这个目录下去运行这个可执行程序我们需要把路径带上。这样会觉得很麻烦,此时就可以使用软链接。
在这里插入图片描述
所以软链接就是Linux下的快捷方式

那么软链接的文件内容是什么呢
保存的是指向的文件的所在路径

如果我们想删除这个软硬链接呢
我们在这里建议使用unlink:
在这里插入图片描述
甚至可以删除文件。
在这里插入图片描述

那么硬链接有什么作用呢
硬链接就是单纯的在Linux指定的目录下,给指定的文件新增 文件名和inode编号的映射关系
在这里插入图片描述
从这里我们可以看出硬链接这里的数字发生了变化。这个数字的意思是:这个inode文件的硬链接数

我们可以再硬链接一次:
在这里插入图片描述
那么什么是硬链接数呢
inode编号,其实类似一个"指针"的概念。
本质:就是该文件inode属性中的一个计数器。标识有几个文件名和我的inode建立了映射关系。间而言之,就是几个文件名指向我的inode

那么硬链接有什么作用呢
在这里插入图片描述
从这里看:为什么创建普通文件,硬链接数默认是1?而创建目录,硬链接数默认是2
普通文件比较好理解,因为普通文件的文件名 本身就和自己的inode 具有映射关系,所有是一个

我们再来看一个这个目录为什么是2个?
在这里插入图片描述
从这里我们可以看出:这里的点和dir的inode是同一个,所以是有两个文件名和这个inode存在映射关系。
在这里插入图片描述
-d的意思是只看目录。我们可以看到这两个点是上级目录的inode是一样的。
所以,硬链接的作用:路径间的切换

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

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

相关文章

maven第三篇:maven 简单命令

上一篇聊了在IDE中如何创建maven项目,后面说到了maven会有一些常用的命令,现在就对命令进简单演示。 注意: 1:命令需要在windows桌面系统下的dos窗口运行。 2:下面演示的命令除了查看版本信息的命令外,很…

科技创未来!中国低代码平台公司流辰信息用实力护您增产又增收!

流辰信息科技,是一家以研发低代码开发平台为使命的中国低代码平台公司,坚持以客户需求为主导,以开源促创新,努力做强做大流辰信息,争创宏伟未来。 在多年的奋斗耕耘中,流辰信息坚持研发,让产品的…

磨金石教育分享||想转行学习插画,应该怎么做,需要什么基础?

近年来,随着互联网行业的快速崛起,来自广告、自媒体、影视、游戏、动漫等多个行业对插画师这一职业求贤若渴。招聘网站信息不觉,特别是一些经验丰富,水平较高的插画师,在业内享有较高的声誉,是各个公司的主…

LaTeX 进阶语法

文章目录LaTeX进阶语法一、 样式排版1、 字体和字号1.1 字体样式1.2 字号1.3 ctex宏包更改中文字体1.4 文字装饰2、 段落格式和间距2.1 长度和长度变量2.2 行距2.3 段落格式2.4 水平间距2.5 垂直间距3、 页面和分栏3.1 页面介绍3.2 利用 geometry 宏包设置页面参数3.3 页面内容…

Palo Alto PAN-OS 11.0 - ML 驱动的 NGFW

使用 PAN-OS 11.0 Nova 以零压力阻止零日恶意软件 请访问原文链接:Palo Alto PAN-OS 11.0 - ML 驱动的 NGFW,查看最新版。原创作品,转载请保留出处。 作者主页:www.sysin.org PAN-OS 11.0 Nova 使用 PAN-OS 11.0 Nova 以零压力…

fastjson漏洞 - Fastjson1.2.47反序列化漏洞

文章目录Fastjson简介历史漏洞Fastjson < 1.2.41Fastjson < 1.2.42Fastjson < 1.2.47Fastjson < 1.2.66漏洞发现Fastjson寻找Fastjson报错识别漏洞检测漏洞复现Fastjson1.2.47反序列化漏洞影响版本实验环境JNDIJNDI注入 RMIJNDI注入 RMI 利用Fastjson简介 Fastj…

销售管理和销售分析怎么做?

作为一个优秀的销售&#xff0c;除了要会和客户沟通之外&#xff0c;拥有复盘和分析的能力能够事半功倍&#xff0c;为未来的营销指引方向。 很多销售也会有用Excel制作报表&#xff0c;复盘整理并向领导汇报的习惯&#xff0c;但是往往由于缺乏专业的分析概念和方法&#xff0…

用Astro建立一个静态站点

介绍 Astro是一个相对较新的web框架&#xff0c;它可以帮助你轻松地建立快速干净的网站。Astro能够与目前主流的JavaScript前端框架一起工作&#xff0c;如React, Vue或solid。 终端用户喜欢网站快速展示&#xff0c;但开发人员喜欢用复杂的JavaScript框架来构建网站。 Astro就…

Go语言包管理学习

重点 首先你要确认你的GOPath 我是winodw系统&#xff0c;所以如图 所以你要创建的文件是在$GOPATH(我这里是E:\LearnFile\GO)\src文件下 项目结构 你只能有一个main包和main函数 go文件内容 ./hello/hello.go 这是正常引入&#xff0c;不会报错&#xff0c;但是这个不是主…

logback重写DBAppenderBase连接达梦数据库实现自定义日志

一. 背景 本来项目组使用的数据库是Oracle&#xff0c;如今要切换到达梦。。。早期的时候就讨论过数据库日志迁移的问题&#xff0c;本来以为是一个小问题可以随便搞定&#xff0c;没想到是踩坑了&#xff0c;记录下&#xff1a; 二. 如果已经实现Oracle自定义日志 简单来说&a…

TCP/IP协议

作者&#xff1a;~小明学编程 文章专栏&#xff1a;JavaEE 格言&#xff1a;热爱编程的&#xff0c;终将被编程所厚爱。 目录 应用层 XML json ​编辑 protobuffer 传输层 UDP的数据报文格式 TCP报文格式 TCP的可靠传输 确认应答&#xff08;安全机制&#xff09; …

Java版本TransE代码的学习

参考资料 Anery/transE: transE算法 简单python实现 FB15k (github.com) Translating Embeddings for Modeling Multi-relational Data (nips.cc) 输入 1.数据集S 2.Entities集合E 3.Relations集合L 4.margin hyperparameter γ 5.每个向量的长度 k 初始化 为Entities集…

服务发现组件:Consul简易攻略

简介 Consul是一种分布式、高可用性、支持多数据中心的解决方案&#xff0c;可动态、分布式基础架构连接和配置的应用程序。 特性 『多数据中心』  Consul是为支持数据中心而构建的&#xff0c;可以支持任意数量的区域&#xff0c;而无需复杂的配置。『服务网格』  Consul服…

ROS移动机器人——32电机驱动

驱动电机&#xff0c;我们在这里使用TB6612来驱动电机&#xff0c;同时&#xff0c;电机的内部我们有编码器进行计次 输出比较 cnt&#xff0c;就是时基单元寄存器 ccr&#xff0c;在cnt下方&#xff0c;为捕获比较寄存器&#xff0c;cc是捕获比较的意思&#xff0c;r就是寄存…

内存溢出问题排查

一、问题背景下午突发服务器CPU频繁撑爆&#xff0c;服务启动后不久就挂掉。一周前系统有一次投产&#xff0c;之后再没有更新过系统。同时在日志中看到大量的dubbo服务调用失败。二、排查问题产生原因1.查看JVM崩溃日志hs_err_pid.logJVM崩溃时会生成hs_err_pid_xxx.log日志文…

面经分享|2022年秋招斩获7个规控算法工程师offer

该面经来自深蓝学院用户投稿&#xff0c;作者为东北大学自动化专业硕士。 作者2022年秋招情况&#xff1a;投递的岗位包括决策规划&#xff0c;规划控制和控制岗位。本人累计投递70家自动驾驶公司&#xff0c;最终收获10多家公司的笔试或面试反馈。最终拿到的offer包括主机厂、…

抖音短视频运营中的六大定位法

抖音六大定位法 1年龄反转法年龄反转法的秘诀就是指&#xff0c;所设定的人物、性格与实际的年龄并不是特别符合&#xff0c;从而让用户产生比较强烈的差异感。比如之前很火的北海爷爷&#xff0c;是一位有着七十多岁高龄的先生&#xff0c;但他依然很有精神&#xff0c;举止优…

【Mybatis-plus 入门教程】

&#x1f308;博客主页&#xff1a;屠一乐的博客 &#x1f4c5; 发文时间&#xff1a;2023.1.6 &#x1f388; 一定存在只有你才能做成的事 &#x1f339; 博主水平有限&#xff0c;如有错误&#xff0c;欢迎指正 欢迎各位&#x1f44d;收藏&#x1f48e;评论✉ MyBatisPlus …

舆情监测技术手段有哪些,网络舆情监测监测技术应用到哪些方面?

随着网络舆情的快速发展&#xff0c;舆情影响到方方面面&#xff0c;大多数企业将网络舆情监测纳入其日常工作。对于舆情监测上如何做到全面监测&#xff0c;那些技术上可以实现&#xff0c;接下来TOOM舆情监测小编带您简单了解舆情监测技术手段有哪些&#xff0c;网络舆情监测…

C语言 文件处理

文件操作 为什么使用文件 什么是文件 程序文件 数据文件 文件名 文件的打开和关闭 文件指针 只要没打开一个文件就会有一个文件信息区&#xff0c;只要一更改文件信息区也会跟着更改 **FILE *fopen( const char filename, const char mode ); filename 文件名 *char mode 打…