【Linux探索学习】第二十三弹——理解文件系统:认识硬件、探索文件在硬件上的存储问题

Linux学习笔记:https://blog.csdn.net/2301_80220607/category_12805278.html?spm=1001.2014.3001.5482

前言:

我们前面讲过了文件的组成是由文件内容和文件属性两者组成的,但是我们前面接触的文件都是系统中的文件,都是已经在进程中被打开的文件,那么没有被打开的文件,即磁盘等硬件上的文件是如何被管理的呢?这就是今天我们要解决的问题——理解文件在硬件上的管理操作

目录

1. 文件属性

2. 认识硬件

2.1 磁盘

2.1.1 磁盘的硬件组成

2.1.2 磁盘的存储结构

2.1.2 磁盘的逻辑结构

2.2 回归硬件

3. inode

3.1 什么是inode

3.2 查看inode

4. 文件的存储

4.1 分区管理

4.2 文件的存储结构

5. 拓展

思考题


1. 文件属性

在认识硬件时,我们先来思考一下我们之前学到的一些知识点,当我们用ls -l执行查看文件时我们不仅能看到文件名,还能看到文件的一些元数据

每行包含七列,依次是:

 1. 模式
 2. 硬链接数
 3. 文件所有者
 4. 组
 5. 大小
 6. 最后修改时间
 7. 文件名

ls -l读取存取在磁盘上的文件信息,然后显示出来

除了用ls -l外,我们还可以通过stat指令查看更多的文件信息

stat 文件名

其中我们需要重点了解的就是inode,这也是本篇的重点,在学习inode之前,我们需要先对硬件的设计有所了解,下面我们就来讲解一下硬件的相关内容

2. 认识硬件

2.1 磁盘

磁盘是我们电脑中唯一的机器设备,也是一个外设,所以它的效率会偏低,但是它的容量很大,会存储很多文件,所以我们先来看看文件的存储方式

2.1.1 磁盘的硬件组成

磁盘的主要的硬件组成如图所示,由磁头、磁头停靠点、磁头臂、主轴和盘片构成,其中文件就是存储在盘片上的,盘片是一个看似光滑的薄片,实际上上面是有凹凸不平的小突起的,磁头通过输入不同的电流来向盘片中写入内容,同时也是通过这些突起和磁头来读取盘片上的内容,观察第一张图片最右边的小图,我们可以发现磁头和盘片的个数都不是唯一的,这是为了存储更多的内容,因此当我们查找磁盘中的文件时就需要定位不同的磁头和盘片,并定位盘片上的不同区域

下面我们来看一下磁盘的具体的存储结构

2.1.2 磁盘的存储结构

我们先来看一下磁盘的具体划分

磁头是会左右移动的,磁头左右移动的过程就是定位磁道和柱面的过程

我们还可以看到上面图中还有一个扇区的概念,扇区其实就是磁盘被访问的最基本的单位,它的大小是512字节,也就是4kb的大小,我们往磁盘中存储文件或读取文件时都是以扇区为单位的,我们可以把磁盘看作由无数个扇区组成的存储介质。

所以当我们想在磁盘上进行数据操作时,比如往磁盘上存储数据,要做的第一个内容就是定位扇区,定位扇区就需要我们先定位属于哪个面,然后是哪一个磁道,最后才是哪个扇区

2.1.2 磁盘的逻辑结构

我们可以把磁盘内部的结构抽象成线性的:每个盘面相当于一个连接的大数组,里面包含若干个小数组,代表磁道,而若干个小数组内又包含无数个更小的数组,代表扇区

当我们从磁盘中取数据时,是要找到指定扇区所在的物理位置的,如果我们此时知道扇区的逻辑扇区地址,我们就可以转换成相应的物理空间地址,相应的物理空间地址也可以转换成逻辑空间地址,转换规则:每个盘面对应的磁道数量是一致的,而每个磁道对应的扇区数量也是一样的,所以每个盘面对应的扇区个数是相等且可计算的,所以我们就可以通过相关计算实现逻辑地址和物理地址的互相转换

比如下面这个例子:

所以操作系统只需要关注磁盘的逻辑地址就可以了,在查找相应资源时会自动转化为物理地址

2.2 回归硬件

在这里我们了解一个小知识点:不仅仅CPU有“寄存器”,其它设备(外设也有)比如磁盘也有

3. inode

3.1 什么是inode

上面我们讲到文件是由文件内容和文件属性两者共同构成的,而且两者还是分开存储的。文件的内容在存储时是块式存储的,这个存储结构叫做数据块而文件属性则是存在叫inode的存储结构中的

而且这些inode其实就是我们上面讲的硬件中存储结构中的扇区等结构,简单点说就是inode就是存放在磁盘中的

3.2 查看inode

inode的查看方式可以用ls -li指令

ls -li

4. 文件的存储

文件在硬件上的存储方式基本一致,下面我们主要讲一下文件在磁盘上的存储方式

4.1 分区管理

要搞明白文件的在磁盘上的存储方式,首先就要先搞明白一个很重要的思想,叫做分区管理,在前面我们讲到磁盘的逻辑结构我们可以理解为一个长条的大块,假设整个存储空间为800G,我们可以把它分成不同的块,不同的块去存放不同的文件,就比如我们电脑的分盘就是一种分区管理操作,然后每个不同的块又可以分成更小的块,这样一直分下去,直到以扇区作为最小单位,这样分治的思想就叫做分区管理

4.2 文件的存储结构

按照上面分区管理的规则,磁盘上面的空间会被分成一个一个的小区来进行管理的,这些区域中存放着文件的内容和属性,基本结构如下:

我们先来讲解一下存放inode的位置inode Table:inode中存放的是单个文件的所有属性,大小为128字节,一个扇区的大小为512字节,所以一个扇区中可以存放四个inode,即一个块的大小是4kb其实就是四个inode的大小

一般来说一个文件对应一个inode,当有多个文件时就对应的有多个inode,所以我们也需要对inode进行编号管理,inode的编号就存放在inode结构中

inode中存放的内容:

磁盘中的空间可以抽象成这样的一个一个的小块,文件的内容就是存放在这些小块中的,这些小块都对应着自己的编号,所以我们就可以在inode中记录下文件的内容所存放的编号,这样以后在使用文件时就可以通过对应的编号来找到文件的内容

下面我们来看一下文件的存储结构中各部分内容分别代表什么

1、Super Block:文件系统的基本信息:文件系统的格式等整个分区的基本使用情况,比如一共有多少个组、每个组的大小、每个组的inode数量、每个组的block数量、每个组的起始inode、文件系统的类型与名称等!!!

为了提高效率,并不是每个组里面都有Super Block但是也不是第一个组才有,如果只有第一个组有,那当它损坏时就会导致整个区的inode无法定位
Super Block是搁几个组存在一个

2、GDT:描述整个组的基本信息和使用情况,比如使用了多少数据块,还剩多少

3、Block Bitmap(块位图):比特位的位置和块号映射起来,比特位的内容表示该块有没有被使用,我们可以借助块位图来得知那些块被使用,哪些没被使用,我们在删除文件内容时不需要删除对应的块中的内容,只需要借助位图把对应块的位置清0就行

4、inode Bitmap:比特位的位置和inode的编号映射起来,比特位的内容代表inode中索引数组是否有效

5、inode Table:上面讲过

6、Data blocks:存文件内容的区域,以块的形式呈现,常见的是4kb大小--文件系统的块大小也就是说我们在访问或存入内容时都是以块为单位的,即使我们存入的内容很小

格式化:每一个分区在被使用之前,都必须提前先将部分文件系统的属性信息提前设置进对应的分区中,方便我们后续使用这个分区或者分组

5. 拓展

在我们前面的学习中,我们也能感受到了使用者从来没有关心过inode,用的是文件名!!
那我们怎么知道一个文件的inode编号呢?

这就要我们引入几个新的知识了

如何理解“目录”:

我们之前讲过Linux下一切皆文件,所以目录也是文件,通过查看我们发现也有自己的inode编号的因为文件=文件属性+文件内容,所以目录也是有对应的内容的,也就是目录是有数据块的

目录的数据块中存放的是该目录下文件的文件名和inode映射关系

所以我们想要知道一个文件的inode的方法就是找到文件所在的目录即可,目录中包含的有该文件的文件名与inode的映射关系

思考题

接下来我们结合一下上面的讲解思考一下下面的问题:

1.为什么同一个目录下不能有同名文件

2.目录下,没有w权限,我们无法创建文件

3.目录下,没有r权限,我们无法查着文件

4.目录下,没有x权限,我们就无法进入这个目录

以上就是今天全部内容,感谢各位大佬观看!!

本篇笔记:


感谢各位大佬观看,创作不易,还请各位大佬点赞支持!!!

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

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

相关文章

Flask中@app.route()的methods参数详解

诸神缄默不语-个人CSDN博文目录 在 Flask 中,app.route 是用于定义路由的核心装饰器,开发者可以通过它为应用指定 URL 映射及相应的处理函数。在处理 HTTP 请求时,不同的业务场景需要支持不同的 HTTP 方法,而 app.route 的 metho…

工业相机镜头选型知识详解

工业相机在机器视觉、自动化生产和检测等领域扮演着重要角色,而镜头作为工业相机的关键组件,其选型直接影响到成像效果和系统的整体性能。在本篇博客中,我们将详细讲解工业相机镜头选型的相关知识,帮助您在实际应用中选择最合适的…

羊城杯2020 easycon

打开是这样一个页面,这样情况一般先想到的就是目录扫描了 好吧,不知道为什么gobuster扫不出来 dirsearch扫出个index.php和index.php/login,都访问一下 提醒我这个文件有一句话木马 怪怪的,不知道为什么weevely连接不上 蚁剑吧&am…

顶顶通呼叫中心中间件mod_cti模块安全增强,预防盗打风险(mod_cti基于FreeSWITCH)

文章目录 前言联系我们mod_cti版本支持安全加强说明 前言 FreeSWITCH暴露在公网最大的风险就是被不法之人盗打 出现盗打的主要原因以下几点: 分机密码太简单或者密码泄露了拨号方案配置不合理sofia配置错误 所以我们给顶顶通呼叫中心中间件添加了安全加强功能&am…

面试基础篇---迭代器,yield, tcp, 等

1.谈谈python的装饰器,迭代器,yield? 迭代器在内存中通常是一次性遍历的,也就是说,一旦遍历完所有元素,它就会停止工作,不可再用。 惰性计算:生成器按需生成数据,即只有在…

软件测试之测试用例

文章目录 测试用例测试用例的编写总结 测试用例 测试用例:描述测试点执行的文档(测试输入、执行条件、预期结果等) 作用 1.测试点能被精准执行 2.便于团队合作测试用例核心内容 用例编号、用例标题、所属模块、优先级、前置条件、测试步骤、测试数据、预期结果 测试用例的编写…

微机接口课设——基于Proteus和8086的打地鼠设计(8255、8253、8259)

原理图设计 汇编代码 ; I/O 端口地址定义 IOY0 EQU 0600H IOY1 EQU 0640H IOY2 EQU 0680HMY8255_A EQU IOY000H*2 ; 8255 A 口端口地址 MY8255_B EQU IOY001H*2 ; 8255 B 口端口地址 MY8255_C EQU IOY002H*2 ; 8255 C 口端口地址 MY8255_MODE EQU IOY003H*2 ; …

I.MX6U 启动方式详解

一、启动方式选择 BOOT 的处理过程是发生在 I.MX6U 芯片上电以后,芯片会根据 BOOT_MODE[1:0]的设置 来选择 BOOT 方式。 BOOT_MODE[1:0]的值是可以改变的,有两种方式,一种是改写 eFUSE(熔 丝),一种是修改相应的 GPIO 高低电平。第一种修改 eFUSE 的方式只能修改一次,后面就…

下载运行Vue开源项目vue-pure-admin

git地址:GitHub - pure-admin/vue-pure-admin: 全面ESMVue3ViteElement-PlusTypeScript编写的一款后台管理系统(兼容移动端) 安装pnpm npm install -g pnpm # 国内 淘宝 镜像源 pnpm config set registry https://registry.npmmirror.com/…

springboot-starter版本升级es版本问题

一、背景说明 版本漏洞处理,springboot版本升级,es版本暂不升级,但是pom引用中es版本一直为7.17.15高版本,不想显示声明版本,定位具体问题,最后还是重新定义了版本进行处理。 二、异常情况 这里看4.4.18是…

模型优化之知识蒸馏

文章目录 知识蒸馏优点工作原理示例代码 知识蒸馏优点 把老师模型中的规律迁移到学生模型中,相比从头训练,加快了训练速度。另一方面,如果学生模型的训练精度和老师模型差不多,相当于得到了规模更小的学生模型,起到模…

Hadoop集群(HDFS集群、YARN集群、MapReduce​计算框架)

一、 简介 Hadoop主要在分布式环境下集群机器,获取海量数据的处理能力,实现分布式集群下的大数据存储和计算。 其中三大核心组件: HDFS存储分布式文件存储、YARN分布式资源管理、MapReduce分布式计算。 二、工作原理 2.1 HDFS集群 Web访问地址&…

使用 acme.sh 申请域名 SSL/TLS 证书完整指南

使用 acme.sh 申请域名 SSL/TLS 证书完整指南 简介为什么选择 acme.sh 和 ZeroSSL?前置要求安装过程 步骤一:安装 acme.sh步骤二:配置 ZeroSSL 证书申请 方法一:手动 DNS 验证(推荐新手使用)方法二&#xf…

# 起步专用 - 哔哩哔哩全模块超还原设计!(内含接口文档、数据库设计)

↑ 上方下载文档 (大小374KB) 接口文档预览 (超过50个接口) 一、数据库25张表er-关系清晰构图!(tip: 鼠标右键图片 > 放大图像) 二、难点/经验 详细说明 热门评论排序评论点赞列表|DTO封装经验分享|精华接口文档说明 组员都说喜欢分档对应枚举码 如果这篇文章…

掌握 Ansys ACP 中的参考方向:简化复杂的复合材料设计

概括 在复合材料分析领域,精度至关重要,尤其是在定义纤维方向和铺层时。Ansys ACP(Ansys Composite PrepPost)提供了强大的工具来建立参考方向,这是实现精确结构模拟的关键步骤。在本博客中,我们将揭开在 …

牵手红娘:牵手App红娘助力“牵手”,脱单精准更便捷

随着互联网的普及,现代青年的社交圈层加速扩大,他们的恋爱观也正经历着前所未有的转变。在繁忙的工作之余,人们希望能够找到一种既高效又真诚的交友方式。于是,线上交友平台成为了他们寻找爱情的新选择。让不同文化背景、不同工作…

动态规划<四> 回文串问题(含对应LeetcodeOJ题)

目录 引例 其余经典OJ题 1.第一题 2.第二题 3.第三题 4.第四题 5.第五题 引例 OJ 传送门Leetcode<647>回文子串 画图分析&#xff1a; 使用动态规划解决 原理&#xff1a;能够将所有子串是否是回文的信息保存在dp表中 在使用暴力方法枚举出所有子串&#xff0c;是…

突发!!!GitLab停止为中国大陆、港澳地区提供服务,60天内需迁移账号否则将被删除

GitLab停止为中国大陆、香港和澳门地区提供服务&#xff0c;要求用户在60天内迁移账号&#xff0c;否则将被删除。这一事件即将引起广泛的关注和讨论。以下是对该事件的扩展信息&#xff1a; 1. 背景介绍&#xff1a;GitLab是一家全球知名的软件开发平台&#xff0c;提供代码托…

一网多平面

“一网多平面”是一种网络架构概念&#xff0c;具体指的是在一张物理网络之上&#xff0c;逻辑划分出“1N”个平面。以下是对“一网多平面”的详细解释&#xff1a; 定义与构成 01一网多平面 指的是在统一的物理网络基础设施上&#xff0c;通过逻辑划分形成多个独立的网络平面…

shell脚本定义特殊字符导致执行mysql文件错误的问题

记得有一次版本发布过程中有提供一个sh脚本用于一键执行sql文件&#xff0c;遇到一个shell脚本定义特殊字符的问题&#xff0c;sh脚本的内容类似以下内容&#xff1a; # 数据库ip地址 ip"127.0.0.1" # 数据库密码 cmdbcmdb!#$! smsm!#$!# 执行脚本文件&#xff08;参…