【linux深入剖析】深入理解基础外设--磁盘以及理解文件系统


🍁你好,我是 RO-BERRY
📗 致力于C、C++、数据结构、TCP/IP、数据库等等一系列知识
🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油

在这里插入图片描述


目录

  • 前言
  • 1.磁盘物理结构
  • 2.磁盘的物理存储
  • 3.磁盘的逻辑存储
  • 4.文件系统


前言

我们所有的文件都是与进程相关的文件–进程打开的文件

系统中是不是所有的文件都被打开了呢?如果没有被打开呢?那么没有被打开的文件在哪里保存起来呢?

  • 在宏观上,大部分文件是没有被打开的。没有被打开的文件保存在磁盘,SSD中。

文件被打开后会在内存里,也会像进程一般,OS会有一定的数据结构对其进行管理,那么OS要不要管理一下磁盘上的文件呢?

  • 操作系统OS本身是在内存里的,打开文件也是在内存里的,本质上OS是管理内存即可,但是磁盘是一个很重要的设备,里面存储着我们很多重要的数据以及程序等等,磁盘是一个大的存储设备,那么如何保证我们在磁盘里面准确的找到我们想要的文件并打开呢?OS就会在磁盘里做一个工作–快速定位一个文件

例如:我们日常生活中的菜鸟驿站,你在网上买了几个快递到了菜鸟驿站,每日会菜鸟驿站会到很多个快递,当快递到站了其工作人员会将快递按照快递单号都分门别类的放好,也便于人们去取快递,其核心工作就是为了让用户快速定位快递进行提取,这也就是相当于我们的OS所做的工作。
菜鸟驿站的老板不仅会做这些工作,还需要知道菜鸟驿站今天会到多少快递,已经存储了多少快递,还有预估还能存储多少快递等等信息,为让菜鸟驿站好好的运作下去,要让这些包裹都好好存储起来。

整个菜鸟驿站就是我们的磁盘,菜鸟驿站的包裹就是我们一个个没有被打开的文件,菜鸟驿站的老板就相当于我们OS内的一个文件管理模块–我们称为文件系统

  • 其主要工作是帮我们把磁盘空间好好管理起来,将众多文件分门别类的放好,给用户输出一种统一的服务,快速定位到文件,定位文件的方式就是我们的路径

1.磁盘物理结构

为了好好理解文件系统,我们先来认识一下磁盘

  • 磁盘我们大部分人都不理解,只是清晰其概念,是一个很大的存储设备。
  • 笔记本一般是不装磁盘了,一般都是SSD(固态硬盘),台式电脑可能还会有磁盘。
  • 磁盘一般按照功能划分会分成桌面级磁盘和企业级磁盘,退回到2012年,那个时候的电脑大部分装的都是磁盘,SSD(固态硬盘)在那个时候比较贵。

我们今天谈论的磁盘是企业级磁盘。磁盘在今天是并没有被淘汰,SSD在今天比磁盘依然是要贵的,磁盘存储的数据量比较大,又便宜,性价比比较高

* 这种磁盘比较薄就是我们笔记本上装的

  • 盘片:白色的盘像光盘一样的就是盘片,我们的数据就是存储在上面,我们平时见到的光盘是只读的,只能被写入一次,盘片是可以不限次数被写入的,光盘一般只有一面是光的,也就是只有一面有我们的数据,而盘片两面都是光的,没有正反,或者正反两面都可以存储数据,家用的桌面级磁盘,这个盘片只有一片两面,很薄;企业级磁盘拆开的就是一摞的。
  • 磁头:磁盘上一个像指针的东西,一个尖尖的就是我们的磁头,一面一个磁头,不是一个盘片一个磁头,加点后磁头就会移动到盘面区。在这里插入图片描述
  • 音圈马达:盘片中央的位置就是我们的音圈马达,马达就是充电了就会转,盘片就是被音圈马达带动着旋转,盘片转动的时候,我们的磁头就会来回左右摇摆,磁头的摆动就是在盘片上进行寻址。
    在这里插入图片描述
  • 伺服系统:在硬盘的背面,有磁盘对应的硬件电路,叫做伺服系统,用来控制我们的磁盘,磁盘内部的二进制指令通过伺服系统进行识别,比如开机关机寻址读写等等,控制盘片和磁头进行寻址。
    在这里插入图片描述
  1. 每一个盘片的转动速度取决于钱越多转动速度越快,磁头摆的也就越快,对应的速度也越快。
  2. 磁头贴在盘片上,好像是挨在一起,但是是没有挨在一起的,如果挨在一起就会刮花盘片,就会丢失数据。
  3. 在刚开机的时候一定是盘片高速旋转,然后磁头悬浮在盘面之上,帮我们找到数据,这个时候台式机最怕的就是突然断电或者强制关机,磁头失去动力就会落下来,由于惯性盘片会持续旋转,那么就会刮花盘片。这也是磁盘为什么被淘汰的原因之一
  4. 我们听到过很多说计算机只认识二进制01,这是没问题的,但是电脑上真正存的是01二进制数据吗?早期发明计算机的人发明了一种硬件电路,这个硬件电路可以短暂进行存储数据,存一个高低点位,我们叫做触发器,有一个触发器就存一个高电平,两个触发器就能存两个,一个高电平一个低电平,所以这就是有和无,也就是1和0。计算机里面存的根本就不是0和1这样的二进制数字,这是被人为规定出来的,根据不同的介质0和1也会被赋予不同的含义,有的是以信号的强弱表示0和1,有的是以信号的有无表示0和1,所以主要我们对应的计算机设备能够找出对应两态的就可以用0和1进行表示。
  5. 磁盘能存数据,我们可以将其想象成由无数个磁铁构成,磁铁是具有南北两极的,在磁盘当中每一块小磁铁可以看做南极为1,北极为0,这样盘片上连续写一二十个字节也就是在改变小磁铁的朝向,我们想改写全1,就是将小磁铁南极朝上即可。
  6. 一块磁铁扔到家里不管,如果很久不管依然会有磁性,这也就是磁盘为什么能长久存储数据的原因,所以我们将磁盘叫为永久存储设备

[总结]

1. 磁盘是有多个盘片和磁头组成的,盘片和磁头是1:1的
2. 磁头和盘片经过旋转移动进行定位寻址
3. 磁盘是机械设备,不允许我们在其开机时进行移动、搬迁等等,出现物理上的损失
4. 盘片和磁头离得比较近,所以要求我们的磁盘要防震,以及内部要是无尘的,磁盘是很需要高精度的技术的,国外走的比较早,所以国外的技术是非常领先的
5. 企业磁盘的数据失去其价值的时候,是不会将磁盘随便扔掉的,但是对于磁盘需要去销毁,有人说可以消磁也有人说可以丢进火里烧毁,当然了这两种办法都是可行的,但是这费人费力消耗太大,所以我们的企业通过和另一些企业通力合作,通过一定的指令技术,将磁盘数据全部写0或者1,来达到消除数据的功效,进行集中报废


2.磁盘的物理存储

在这里插入图片描述
磁盘各个面的展开图如下:
在这里插入图片描述

  • 磁道/柱面:这里面的扇区是我们磁盘IO的基本单位—不一定是系统和磁盘IO的基本单位,每一个扇区都有唯一的编号
    在这里插入图片描述
  • 磁头、盘面:盘片的每一个面叫做盘面,每一个盘面都有唯一的编号

如果我们想访问磁盘里的一个扇区:
通过磁头定位:磁道/柱面(cylinder),确认使用哪一个磁头(head),再进行确认哪一个扇区(sector)
这种定位方案叫做CHS定位法
了解了这些,那么文件不就是多个扇区承载的数据吗?

3.磁盘的逻辑存储

我们先来认识一下磁带
在这里插入图片描述
磁带存储的数据就在这一条带子上面,它是圈起来通过马达将其一点一点移动的,通过技术读取带子数据,这一整个带子圈起来就相当于盘片里的一面,全部抽出来拉直了不就是一恶搞线性存储结构吗?

在我看来,磁盘也就是一个非常巨大的线性空间,而扇区就是其中一块一块的连续空间,可以理解为磁盘是这一整个线性空间,而磁道和扇区就是这其中一个一个的子空间,也就是说,我们对磁盘的管理也就是对数组的增删查改!我们就可以通过一个磁道有多少个扇区来访问到目标扇区

  1. 磁盘是会自己转化成为线性地址供我们访问的

  2. 操作系统认为,一次和磁盘IO一个扇区单位太小了,访问速度太慢了,OS文件系统认为:IO的基本单位是4KB,如果一个扇区是512B,那么OS会一次访问8个扇区去进行IO。

  3. 在OS内部就会重新形成一个8个扇区为一个子数组的线性结构,这样每8个扇区就会对应一个数组下标。这每一块数组的地址就是逻辑区块地址(Logical Block Address, LBA)

  4. 逻辑区块地址(Logical Block Address, LBA)是描述计算机存储设备上数据所在区块的通用机制,一般用在像硬盘这样的辅助记忆设备。LBA可以意指某个数据区块的地址或是某个地址所指向的数据区块。现今计算机上所谓一个逻辑区块通常是512或1024位组。ISO-9660格式的标准CD则以2048位组为一个逻辑区块大小。

  5. LBA是非常单纯的一种定址模式﹔从0开始编号来定位区块,第一区块LBA=0,第二区块LBA=1,依此类推。这种定址模式取代了原先操作系统必须面对存储设备硬件构造的方式。最具代表性的首推CHS(cylinders-heads-sectors,磁柱-磁头-扇区)定址模式,区块必须以硬盘上某个磁柱、磁头、扇区的硬件位置所合成的地址来指定。CHS模式对硬盘以外的设备来说没什么作用(例如磁带或是网络存储设备),所以通常也不会用在这些地方。过去MFM(Modified Frequency Modulation, 改良调频式)和RLL(Run Length Limited)存储设备都曾使用CHS模式,ATA-1设备更将延伸CHS(Extended Cylinders-Heads-Sectors, ECHS)也派上了用场。

  6. SCSI采用LBA抽象定址。实际上硬件控制器还是以CHS来定址区块,但无论驱动程序还是任何以低级访问磁盘的应用程序(例如数据库软件)通常都不再需要这个参数。各种要求区块低级访问的系统调用把定义好的LBA传给驱动程序﹔最直接的情况下(逻辑器件与实体设备单一对应)驱动程序只是将LBA再传给硬件控制器。

一个磁盘整体空间是非常大的,我们OS会将其划分成一个一个小块。会对这个空间进行分区操作,分完区又会对其进行分组,将每一个小块进行管理就会将整个空间管理好了

大部分笔记本都只有一块磁盘,我们电脑里的C盘D盘是我们系统对其进行了分区的。


4.文件系统

Linux磁盘文件特性:

文件=内容+属性
内容和属性分开存储
内容是大小不确定,可能很大,也可能很小,这是可变的
属性是固定大小的,属性的类别是一样的,只不过每个类别内容不一样

我们所有的文件的属性对应的结构体存储都叫inode
注: 文件名不属于文件属性!

为了能解释清楚inode我们先简单了解一下文件系统
在这里插入图片描述

Linux ext2文件系统,上图为磁盘文件系统图(内核内存映像肯定有所不同),磁盘是典型的块设备硬盘分区被划分为一个个的block。一个block的大小是由格式化的时候确定的,并且不可以更改。例如mke2fs的-b选项可以设定block大小为1024、2048或4096字节。而上图中启动块(Boot Block)的大小是确定的

  • Block Group:ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。政府管理各区的例子

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

  • GDT,Group Descriptor Table:块组描述符,描述块组属性信息,有兴趣的同学可以在了解一下块位图(Block Bitmap):Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没有被占用

  • inode位图(inode Bitmap):每个bit表示一个inode是否空闲可用。

  • i节点表(inode table):存放文件属性 如 文件大小,所有者,最近修改时间等

  • 数据区:存放文件内容

使用指令ls -i就可以看到文件的inode
位于文件最前面的数字编号就是inode编号
在这里插入图片描述

系统中,标识一个文件,用的不直接是文件名,而是inode

将属性和数据分开存放的想法看起来很简单,但实际上是如何工作的呢?我们通过touch一个新文件来看看如何工作。
在这里插入图片描述
为了说明问题,我们将上图简化:
在这里插入图片描述
创建一个新文件主要有一下4个操作:

  1. 存储属性

内核先找到一个空闲的i节点(这里是263466)。内核把文件信息记录到其中。

  1. 存储数据

该文件需要存储在三个磁盘块,内核找到了三个空闲块:300,500,800。将内核缓冲区的第一块数据复制到300,下一块复制到500,以此类推。

  1. 记录分配情况

文件内容按顺序300,500,800存放。内核在inode上的磁盘分布区记录了上述块列表。

  1. 添加文件名到目录

新的文件名abc。linux如何在当前的目录中记录这个文件?内核将入口(263466,abc)添加到目录文件。文件名和inode之间的对应关系将文件名和文件的内容及属性连接起来。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】04串

串 1. 定义2. 串的比较3. 串的存储结构4. 具体实现5. 模式匹配5.1 常规思路实现5.2 KMP模式匹配算法5.2.1 next数组计算5.2.1 代码计算next数组5.2.2 KMP算法实现 1. 定义 串(string)是由零个或多个字符组成的有限序列,又叫字符串。 一般记为s a 1 , a 2 , . . . ,…

软件供应链安全:寻找最薄弱的环节

在当今的数字时代,软件占据主导地位,成为全球组织业务和创新的支柱。它是差异化、项目效率、成本降低和竞争力背后的驱动力。软件决定了企业如何运营、管理与客户、员工和合作伙伴的关系,以及充分利用他们的数据。 挑战在于,当今…

【MVCC】深入浅出彻底理解MVCC

MVCC概述 MVCC(Multi-Version Concurrency Control)即多版本并发控制。主要是为了提高数据库的并发性能而提供的,采用了不加锁的方式处理读-写并发冲突,确保了任何时刻的读操作都是非阻塞的。只需要很小的开销,就可以…

电视盒子哪个好?2024口碑网络电视盒子排行榜

多年来电视盒子始终占据重要地位,功能上并没有受到影响。在这么多品牌中哪些电视盒子的评价是最好的呢?小编根据各大电商平台的用户评价情况整理了口碑最好的网络电视盒子排行榜,跟着小编一起看看市面上的电视盒子哪个好吧。 TOP 1&#xff1…

如何访问远程MySQL数据库?

远程访问MySQL数据库是在不同设备之间实现数据交互的一种方式。通过远程访问,用户可以轻松地操作远程MySQL数据库,从而实现数据的读写、修改和查询等操作。本文将介绍远程访问MySQL数据库的原理和实现方法,以及一种被广泛应用的解决方案【天联…

[入门到放弃]设计模式-笔记

模块化设计 20240448 模块不包含数据,通过实例的指针,实现对实例的操作;唯一包含的数据是用于管理这些模块的侵入式链表模块只负责更具定义的数据结构,执行对应的逻辑,实现不同实例的功能; 参考资料 使用…

TCP/IP协议—UDP

TCP/IP协议—UDP UDP协议UDP通信特点 UDP头部报文UDP检验 UDP协议 用户数据传输协议 (UDP,User Datagram Protocol) 是一种无连接的协议,提供了简单的数据传输服务,不保证数据的顺序以及完整性。应用层很多通信协议都基于UDP进行传输&#x…

[当人工智能遇上安全] 13.威胁情报实体识别 (3)利用keras构建CNN-BiLSTM-ATT-CRF实体识别模型

《当人工智能遇上安全》系列将详细介绍人工智能与安全相关的论文、实践,并分享各种案例,涉及恶意代码检测、恶意请求识别、入侵检测、对抗样本等等。只想更好地帮助初学者,更加成体系的分享新知识。该系列文章会更加聚焦,更加学术…

最新常见的图数据库对比,选型,架构,性能对比

图数据库排名 地址:https://db-engines.com/en/ranking/graphdbms 知识图谱查询语言 SPARQL、Cypher、Gremlin、PGQL 和 G-CORE 语法 / 语义 / 特性SPARQLCypherGremlinPGQLG-CORE图模式匹配查询语法CGPCGPCGP(无可选)1CGPCGP语义子图同态、包 2无重复边、包 2子…

大唐极简史

唐朝(618年-907年),是中国历史上一个强盛的朝代,以其疆域辽阔、政治稳重、经济繁荣、文化繁荣而著称。唐朝的开国皇帝是李渊,他建立了一个强大的中央集权政府,使得唐朝成为当时世界上最繁荣的国家之一。 唐…

vmware虚拟机补救

更新了虚拟机里面工具和资料,进行了磁盘整理和压缩,虚拟机运行进不去系统了。 网站找的修复方法均不可行。补救措施:利用DiskGenius.exe(要用高版本不然复制的时候就知道了) DG1342.rar - 蓝奏云 加载虚拟硬盘 2008x…

最新微信支付商家转账到零钱各场景怎样开通?

商家转账到零钱是什么? 商家转账到零钱是企业付款到零钱的升级版,它的功能是,如果系统需要对用户支付费用,比如发放佣金、提成、退款等,可以直接转账到用户的微信零钱。这个功能在 2022 年 5 月 18 日之前叫做企业付款…

2024年MathorCup数模竞赛B题问题一二三+部分代码分享

inputFolderPath E:\oracle\images\; outputFolderPath E:\oracle\process\; % 获取文件夹中所有图片的文件列表 imageFiles dir(fullfile(inputFolderPath, *.jpg)); % 设置colorbar范围阈值 threshold 120; % 遍历每个图片文件 for i 1:length(imageFiles) % 读…

个人网站制作 Part 18 提升用户体验:添加页面404错误处理 | Web开发项目

文章目录 👩‍💻 基础Web开发练手项目系列:个人网站制作🚀 添加404错误处理页面🔨创建404错误处理页面🔧步骤 1: 在项目根目录创建404错误处理页面🔧步骤 2: 添加404错误处理页面内容 &#x1f…

数据结构复习指导之绪论(数据结构的基本概念)

文章目录 绪论: 考纲内容 知识框架 复习提示 1.数据结构的基本概念 1.1基本概念和术语 1.数据 2.数据元素 3.数据对象 4.数据类型 5.数据结构 1.2数据结构三要素 1.数据的逻辑结构 2.数据的存储结构 3.数据的运算 绪论: 考纲内容 算法时…

计算机网络----第十天

配置vlan 广播风暴的含义: 含义:设备发出的广播帧在广播域中传播,占用网络带宽,降低设备性能 隔离广播的方式: 方式:用路由器来隔离广播 用VLN隔离广播 vlan的定义: 定义:虚拟…

13-pyspark的共享变量用法总结

目录 前言广播变量广播变量的作用 广播变量的使用方式 累加器累加器的作用累加器的优缺点累加器的使用方式 PySpark实战笔记系列第四篇 10-用PySpark建立第一个Spark RDD(PySpark实战笔记系列第一篇)11-pyspark的RDD的变换与动作算子总结(PySpark实战笔记系列第二篇))12-pysp…

海外媒体宣发:这7个旅游业媒体套餐击中宣传痛点-华媒舍

旅游业如何有效宣传自身成为了一个重要的问题。众多旅游企业却面临着宣传痛点,即无法将优质内容传达给目标受众。近期,出现了7个旅游业媒体套餐,它们被称为解决宣传痛点的突破性方案。本文将介绍这7个旅游业媒体套餐,并说明它们为…

一篇实操vitrualbox虚拟机根目录扩容(详细,实操陈功)

一篇实操vitrualbox虚拟机根目录扩容(详细,实操陈功) 创建虚拟介质 第一步、 第二步、 第三步、一直下一步,直到下面的页面 分配空间到更目录下 第一步、 第二步、查看创建的物理磁盘 lsblk第三步、查看原本磁盘可用空间 df …

掌握现代 C++:Lambda 在 C++14、C++17 和 C++20 中的演变

深入研究Lambda 在 C14、C17 和 C20 中的演变 一、背景二、C14 中的 Lambda2.1、默认参数2.2、模板参数2.3、广义捕获2.4、从函数返回 lambda 三、C17 中的 Lambda四、C20 中的 Lambda总结 一、背景 Lambda 是现代 C 最受欢迎的功能之一。自从在 C 11 中引入以来,它…