文件系统(磁盘 磁盘文件 inode)

news2025/3/9 10:39:37

文章目录

  • 磁盘
    • 看看物理磁盘
    • 磁盘的存储结构
  • 对磁盘的储存进行逻辑抽象
    • inode号
    • 文件名 -> inode
    • 判断文件在哪个分区

磁盘

电脑中存在非常多的文件,被打开的文件只是少量的。
没有被打开的文件,在磁盘中放着,那么文件是如何存取?

看看物理磁盘

计算机只认识二进制:什么是0,1?
0,1在物理上会有不同的表现(比如有无、高低电频等)
在这里插入图片描述
磁盘里面的结构:
在这里插入图片描述
在这里插入图片描述

磁盘的存储结构

磁盘是一个机械设备,是外设。交互效率很慢。
小时候玩过的磁铁,比如S表示0、N表示1。通过磁头改变磁盘的磁性
在这里插入图片描述
每个扇区都是512字节,靠圆心近的,512字节密集,远的稀疏。

在这里插入图片描述
如何找到一个扇区?(CHS定址法)
1.先找到哪个磁头(Header)。
2.找到指定的磁道(Cylinder)。
3.找到指定的扇区(Sector)。
在这里插入图片描述
磁盘中的盘片为什么要旋转?
定位扇区。
磁头要左右摆动?
定位磁道。
在这里插入图片描述
磁盘文件 == 文件 = 内容 + 属性 = 都是二进制数据
文件存储在磁盘 -> 文件在磁盘中占据几个扇区

对磁盘的储存进行逻辑抽象

如果OS直接使用CHS定址法,耦合度太高。磁盘结构一改,OS也得跟着更改。
以磁带为引例:
在这里插入图片描述
假设磁盘有800G的内存,2个盘片组成。前200GB就是一面。
在这里插入图片描述
这个工作是磁盘内部做的,以500号下标为例子计算一下CHS
500/100 = 0;第一个盘面
500%1000 = 500;
500/100 = 5;第6个磁道
500%100 = 0;第一个扇区
文件 = 很多个sector的数组下标
保存一个文件,比如要用到100个扇区,只要记录100个sector都交给磁盘!
内存和外设进行IO交互时,512字节小不小?
一般而言,OS未来和磁盘交互的时候,基本单位:4 KB(可以更改,改了OS得大改)。一次性读8*sector,连续的8个扇区。
把4KB称为一个块
在这里插入图片描述
这样管理LAB block[N]数组就可以了。
对于800G的磁盘来说,但只要把200GB(一个盘面)管理好,就能把800GB管理好
把800GB进行分区,跟电脑上分盘是一个道理(我这里没分)
在这里插入图片描述
一块区如何管理好?
分组:只要管理好一个组,那么就能管理好每一个组。
在这里插入图片描述

文件 = 内容 + 属性(也是数据) 0KB是内容为0 属性不为0
在这里插入图片描述
文件在磁盘储存,本质是:文件的内容 + 文件的属性数据
Linux文件系统特点:文件内容和文件属性 分开储存。
先搭起文件系统的框架,再谈细节:
在这里插入图片描述
在这里插入图片描述

通过ll -il就能看见inode号
在这里插入图片描述
那我们怎么知道inode占据哪些Data blocks里面的块?
inode结构体里面有datablocks[N],保存着该文件用了哪几个块。
在这里插入图片描述
GDT (Group Descriptor Table):块组描述符,描述块组属性信息(块有多大、有多少inode Table被使用了)。
比如块组还剩下1GB的空间,要写入2GB的文件,写不下。
超级块(Super Block):存放文件系统本身的结构信息。记录的信息主要有:bolck 和 inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏,可以说整个文件系统结构就被破坏了。
Super Block描述的是整个分区,一个组里面可以有多个Super Block,也可以没有,一个区每个组中的Super Block内容都是一样的。(多个防止某个Super Block被损坏,若损坏可以通过其他组的Super Block进行修复)
格式化:在磁盘中重新写入文件系统!
综上所述:我们寻找文件的时候,必须先得到文件的inode号

inode号

inode编号是以分区为单位分配的,一个分区的inode号是不能重复的。两个分区是可以重复,所以不能跨分区访问。
开始的时候,Super Block与GDT会记住inode的范围[start_inode,end_inode]
以寻找inode==50为例子:
在这里插入图片描述
关于inode属性中的datablocks[N]谈论下:
我们目前讲述的都是ext2文件系统,常用的是ext3、ext4。ext3、ext4比ext2多了日志安全等功能。
不同的文件系统,文件属性的大小不一定相同。下面都是以128KB为例:
在这里插入图片描述
如果文件大小为20GB,大于分区的10GB的可以吗?
在这里插入图片描述

答案是可以的,因为Data blcoks的编号是以分区为单位的,可以指向其他分组。但非常不建议,一旦跨组的,就代表磁针和磁盘要进行其他寻址(本来指向0组,现在要指向其他组)。
现在只要找到了inode编号,就能找到文件。但如何找到inode编号?我们平时访问时都用的文件名

文件名 -> inode

以目录入手:Linux一切皆文件,所以目录也是文件,那么目录也有他自己的inode
目录 = 文件属性 + 文件内容
目录的属性与普通文件的属性做对比:属性的类型一样,值不一样。
在这里插入图片描述
目录内容放的是:文件名和inode编号的映射关系
在这里插入图片描述
综上所述:1.一个目录下不能建立同名文件(因为映射关系)
2.查找文件的顺序,文件名 -> inode 编号 (目录里面保存着文件名,所以inode属性里面不用保存文件名)
3.进入目录需要x权限。
目录的r权限:本质是是否允许我们读取目录的内容,拿到文件名与Inode的文件关系!
在这里插入图片描述
目录的w权限:新建文件的本质,最后一定是想要向当前所在处的目录内容中写入文件与inode的映射关系
在这里插入图片描述
一个文件新建的过程:
首先向特定的分区当中申请一个inode,Super Block会记录该分配哪个inode,分配一个就++,根据inode确定在哪个分组里。然后在inode Bitmap找位图,从低向高找,看哪个为0,给我们分配的新的偏移量+新分配的inode编号就是新的inode,根据新的inode号在inode Table里把属性一写。在Blcok Bitmap里面申请位图,把Data blocks里面申请的块往inode Table里面一写,建立映射关系,返回inode编号,再与文件名建立起映射关系,就新建一个文件了。
在这里插入图片描述
删除一个文件:
根据文件名,找到inode编号,遍历datablocks数组,根据数组内容把Block Bitmap中的数据依次清成0。然后找到把inode在位图的位置由1->0就删掉了,inode Table和Data blocks里的数据不用动。
这就是为什么我们在电脑里,下载内容要很长时间,删除很快。
在Linux中文件被误删了,是可以恢复的,找到相应的位图由0->1就可以恢复。不过前提是文件不能被覆盖。
windows的回收站本质是一个目录,rm -> mv
在这里插入图片描述
Linux内核在被使用的时候,一定存在大量的解析完毕的路径,要对访问到的路径做管理->先描述,在组织
在这里插入图片描述
源码:
在这里插入图片描述
以上都是确定分区才有效

判断文件在哪个分区

云服务器一般都只有一个盘vda,vda对应的vda1一个分区
在这里插入图片描述
一般要访问一个分区,要把一个分区进行挂载,要将磁盘分区和文件目录进行关联,进入磁盘分区其实是进入指定的目录
下面就是挂载到/dev/vad1中的根目录,所以在根目录写的内容全在/dev/vda1的内容里
在这里插入图片描述

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

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

相关文章

Unity 之 【Android Unity FBO渲染】之 [Unity 渲染 Android 端播放的视频] 的一种方法简单整理

Unity 之 【Android Unity FBO渲染】之 [Unity 渲染 Android 端播放的视频] 的一种方法简单整理 目录 Unity 之 【Android Unity FBO渲染】之 [Unity 渲染 Android 端播放的视频] 的一种方法简单整理 一、简单介绍 二、FBO 简单介绍 三、案例实现原理 四、注意事项 五、简…

深度盘点PLM 项目管理系统哪家强?优缺点一目了然!

本文将盘点10款知名的PLM 项目管理系统,为企业选型提供参考! 想象一下,在一个企业的产品研发过程中,各种数据、文档四处散落,不同部门之间沟通不畅,项目进度难以把控。这时,PLM 项目管理系统就如…

在线压缩图片地址

https://squoosh.app/editor这个是免费的,并且不限制图片数量 https://tinypng.com/ 这个限制图片的大小,如果单张图片超过5M需要收费 https://www.jpeg-optimizer.com/ https://imagecompressor.com/

再次进阶 舞台王者 第八季完美童模全球赛形象大使【于洪森】赛场秀场超燃合集!

7月20-23日,2024第八季完美童模全球总决赛在青岛圆满落幕。在盛大的颁奖典礼上,一位才能出众的少年——于洪森,迎来了他舞台生涯的璀璨时刻。 形象大使——于洪森,以璀璨童星之姿,优雅地踏上完美童模盛宴的绚丽舞台&am…

WPF实现Hammer 3D入门学习

代码下载:https://download.csdn.net/download/bjhtgy/89748674

springboot Web基础开发

Spring Boot 是一个用于简化 Spring 应用开发的框架,它通过自动配置和开箱即用的功能,使得创建和部署 Spring 应用变得更为高效。以下是 Spring Boot 基础 Web 开发的一些关键点和实操总结: 1. 项目搭建 使用 Spring Initializr: 访问 Spring…

代码随想录刷题day31丨56. 合并区间,738.单调递增的数字,总结

代码随想录刷题day31丨56. 合并区间,738.单调递增的数字,总结 1.题目 1.1合并区间 题目链接:56. 合并区间 - 力扣(LeetCode) 视频讲解:贪心算法,合并区间有细节!LeetCode&#x…

源代码加密软件有哪些?2024常用的10款好用的企业源代码加密软件分享!

源代码作为企业的核心资产,一旦泄露,将可能导致技术被窃取、产品被复制,甚至引发法律纠纷。 一、企业源代码泄密的危害详情描述 企业源代码泄密事件频发,其危害不容小觑。 一方面,源代码的泄露可能导致企业的核心技术…

国内领先线上运动平台:如何借助AI技术实现业务腾飞与用户体验升级

“ 从智能训练到身体分析,再到辅助判决,AI技术正以惊人的速度渗透进体育和健身领域,为运动员和健身爱好者提供了前所未有的个性化体验。 ” AI,运动的智能伴侣 在巴黎奥运会上,AI技术的运用成为了焦点。它不仅为运动…

人脸关键点数据集WFLW

数据集:Look at Boundary: A Boundary-Aware Face Alignment Algorithm 论文:Look at Boundary: A Boundary-Aware Face Alignment Algorithm 发表:CVPR2018 1. 标注点位 官方说有98个点,但是配图只有0-95,咋回事&…

java设计模式(持续更新中)

1 设计模式介绍 设计模式代表了代码的最佳实践,被有经验的开发人员使用。设计模式是很多被反复使用并知晓的,主要是对代码和经验的总结。使用设计模式是为了重用代码,并让代码更容易被人理解,保证代码的可靠性。对接口编程而不是…

单考一个OCP认证?还是OCP和OCM认证都要考?

​ Oracle的OCP认证是数据库行业非常经典的一个认证,从事数据库行业的人都建考一个 Oracle OCP 认证。 OCP认证内容包括: OCA部分:数据库基础知识、SQL 语言使用、基本的数据库管理技能等,如数据库安装与配置、理解数据库架构、…

Web APIs - DOM节点操作

Web APIs - DOM节点操作 第9天 目标: 了解DOM节点的增删改查,掌握利用数据操作页面,完成移动端通讯录案例 日期对象节点操作M端事件JS插件综合案例 1、日期对象 日期对象:用来表示日期和时间的对象 作用:可以得到当前系统日期和…

力扣139-单词拆分(Java详细题解)

题目链接:139. 单词拆分 - 力扣(LeetCode) 前情提要: 因为本人最近都来刷dp类的题目所以该题就默认用dp方法来做。 最近刚学完背包,所以现在的题解都是以背包问题为基础再来写的。 如果大家不懂背包问题的话&#…

深度盘点:2024年企业最喜欢用的WMS仓库管理系统有哪些?

本文将列举国内外知名的仓库管理系统,从每个系统的适用范围、核心功能、特点来为大家解读。为企业选型提供参考! WMS系统是Warehouse Management System(仓库管理系统)的简称,它是一个帮助企业和仓库管理者高效管理仓库…

NMOS与PMOS原理图

重点关注续流二极管方向和电流流向: NMOS应用: PMOS 应用:

BASM引领2024国家网络安全宣传周:智能守护,打造全方位业务与应用安全监测平台

在这个信息泛滥的时代,网络安全已不再是可有可无的选项。 随着技术的飞速发展,新型网络攻击层出不穷,数据泄露、恶意攻击频发,保护个人与企业的数字安全显得尤为重要。 2024年国家网络安全宣传周期间,通付盾给大家带…

Cortex-R52+的PE mode详解--Abort

目录 1.R52 AArch32通用寄存器描述 2.Abort模式是什么 3.实例详解 1.R52 AArch32通用寄存器描述 上篇文章我们阐述了关于R52异常如何定位,其中详细说明了发生异常后应该在什么模式下去观察寄存器。 今天就以Abort异常为例,详解下如何精准定位Abort异…

一文读懂网络安全等级保护

网络安全等级保护(简称“等保”)是我国为了保护信息安全而推出的一项制度,旨在通过对信息系统分等级实施安全保护,确保信息安全。它涵盖了信息和存储、传输、处理这些信息的信息系统,以及使用的信息安全产品。等级保护…

素数筛的一个易错点

前言&#xff1a;之前运用素数筛的时候都没注意&#xff0c;一个不是素数的数可能会被反复标记为1 题目地址 #include <bits/stdc.h> using namespace std; #define int long longconst int N (int)3e7 10; int a[N]; int n;signed main() {// 1// 2 2 // 3 3// 4 2cin…