Linux——文件系统

一·、从硬件出发

1)磁盘的主要构成

        通常硬盘是由盘片、主轴、磁头、摇摆臂、马达、永磁铁等部件组成,其中一个硬盘中有多块盘片和多个磁头,堆叠在一起,工作时由盘片旋转和摇摆臂摇摆及逆行寻址从而运作,磁头可以对盘片进行读写操作,磁头和盘片之间不是挨着的,而是存在一个很小的距离,很具制作工艺不同,可能达到微米级或者是纳米级。每一个盘片的双面都可以进行数据读写,每一面对应一个磁头。

2)磁盘查找数据

        在硬盘上,每一个扇面都有对应的一个磁头,每个扇面都被一个个同心圆划分为多个圆环,这些圆环叫做柱面或者磁道、每一个柱面又被多条半径切割为若干个小块,称作扇区,扇区是磁盘IO的基本单位但不一定是系统IO的基本单位,每一个扇区可以存储的数据大小是相同的,所以越中心区密度越大,越往外密度越小。每个磁头、盘面、柱面、扇区都有自己唯一的编号,所以当查找数据的时候只需要磁头编号、柱面编号、扇区编号这三个参数即可,该定位方法叫做CHS定位法。

3)磁盘逻辑结构抽象

        在磁盘层面,由于每一次IO读取的单位是一个扇区,而每一个扇区的大小都是相同的,所以所有盘面上的所有扇区可以抽象为一个数组,每一个单位都是一个扇区,在操作系统启动的时候,可以获取每个盘面上柱面的个数以及柱面上扇区的个数。当获取到了一个需要进行读取的sectorno后,只需要对扇区编号通过以下操作就可以获取CHS参数,再通过CHS定位法找到指定位置。

         在操作系统层面,由于一次IO只读取一个扇区太慢了,所以会将多个连续的扇区绑定在一起,称为数据块,每次IO读取一个数据块,在管理时,只需要指导起始扇区和扇区偏移量就可以找到所需要读取的扇区编号,再交给磁盘进行IO。文件系统对整个磁盘又进行了分区,每个分区又经过了分组划分为不同的组。

二、文件系统对分组的管理

        文件系统管理

        在磁盘分区格式化时,分区就被划分为一个个分组,分组大小确定后不能改变直至下一次格式化,每个分组由SuperBlock、Group Descriptor Table、Block Bitmap、inode Bitmap、inode Table、Data Blocks组成。在文件系统中,由于文件的内容大小不确定,而文件属性的大小是确定的,所以文件的内容和文件属性是分别存储的。每个系统分区都一定挂载在某个文件下面,访问文件时都是通过文件绝对路径进行访问,使用路径匹配就能确定文件所在的分区。

超级块(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是否空闲可用。在创建一个文件时,会自动遍历inode位图,找到第一个未被占用的节点,将其改为已经占用并且记录偏移量,在节点表中找到对应的位置的inode进行属性管理。

i节点表(inode Table):存放文件属性,如文件大小、所有者、最近修改时间、权限、inode编号(在分区中是唯一的)等。

数据区:存放文件内容。

        文件查找逻辑

        在查找文件时,先通过文件inode编号确定在哪个分组当中,通过inode编号-分组起始inode编号得到偏移量,再通过偏移量,在inode Table中查找对应的inode。在inode结构体中,存在一个block数组用于存放文件对应的数据块位置,其大小是15,其中前12个位置直接指向存放数据的数据块,13、14两个位置存放的数据块里面存放存储数据的数据块位置,(即a,b,c...指向数据,a,b,c...存放在d中,13、14指向d)15在13、14的基础上再套一层(即a,b,c,指向数据,a,b,c存放在d中,d存放在e中,15指向e)。

        超级块(Super Block)

        一个文件系统只存在一个Super Block,只存在于个别分组中,并不是每个分组都存在,每个超级块的数据始终保持一致,这样做的原因是为了将数据块进行备份,同时保持较高的效率。超级块存放了每个分组inode编号的范围,记录了分区的容量与使用情况。

        重谈文件的增删查改

        在linux下面,任何文件都一定在某个文件夹下面,文件夹的本质也是一个文件,其内容存放的是目录下面的文件名和inode编号映射关系,在创建文件的时候,在创建inode后,还需要将inode编号和文件名映射关系写入到文件夹的数据区中。

        所以,在文件夹没有写权限的时候,无法在该文件夹下面创建、修改或者是删除文件,而文件夹没有读权限的时候,无法读取文件夹下面的文件信息。在对文件进行增删查改的时候,都需要对所在的文件夹进行修改,以此类推,直至对根目录文件进行修改。

        

        

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

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

相关文章

FPGA 时钟多路复用

时钟多路复用 您可以使用并行和级联 BUFGCTRL 的组合构建时钟多路复用器。布局器基于时钟缓存 site 位置可用性查找最佳布局。 如果可能,布局器将 BUFGCTRL 布局在相邻 site 位置中以利用专用级联路径。如无法实现,则布局器将尝试将 BUFGCTRL 从…

C++底层学习预备:模板初阶

文章目录 1.编程范式2.函数模板2.1 函数模板概念2.2 函数模板原理2.3 函数模板实例化2.3.1 隐式实例化2.3.2 显式实例化 2.4 模板参数的匹配原则 3.类模板希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力! 进入STL库学习之前我们要先了解有关模板的…

Baklib如何在知识管理领域成为领军者与六款产品的综合评析

内容概要 在知识管理领域,Baklib凭借其卓越的技术和创新的产品线,已经确立了行业的领导地位。作为一个全面的知识管理平台,Baklib为企业提供了高效、便捷的知识存储和管理方案,帮助组织有效整合内外部知识资源。其主要特点包括强…

Baklib阐明企业内容管理与内容中台的本质差异

内容概要 在快速发展的数字时代,企业对信息的管理愈加重视。内容管理在企业日常运营中扮演了重要角色,而随着技术的不断进步,内容中台的概念逐渐走入视野。了解这两者的不同,不仅有助于企业更有效地管理内容,还能提升…

Java 大视界 -- Java 大数据在智能电网中的应用与发展趋势(71)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

deepseek 本地化部署和小模型微调

安装ollama 因为本人gpu卡的机器系统是centos 7, 直接使用ollama会报 所以ollama使用镜像方式进行部署, 拉取镜像ollama/ollama 启动命令 docker run -d --privileged -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama 查看ollama 是否启动…

【腾讯前端面试】纯css画图形

之前参加腾讯面试,第一轮是笔试,面试官发的试卷里有一题手写css画一个扇形、一个平行四边形……笔试时间还是比较充裕的,但是我对这题完全没有思路😭于是就空着了,最后也没过。 今天偶然翻到廖雪峰大佬的博客里提到了关…

物联网 STM32【源代码形式-ESP8266透传】连接OneNet IOT从云产品开发到底层MQTT实现,APP控制 【保姆级零基础搭建】

一、MQTT介绍 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种基于发布/订阅模式的轻量级通讯协议,构建于TCP/IP协议之上。它最初由IBM在1999年发布,主要用于在硬件性能受限和网络状况不佳的情…

探秘Linux IO虚拟化:virtio的奇幻之旅

在当今数字化时代,虚拟化技术早已成为推动计算机领域发展的重要力量。想象一下,一台物理主机上能同时运行多个相互隔离的虚拟机,每个虚拟机都仿佛拥有自己独立的硬件资源,这一切是如何实现的呢?今天,就让我…

MATLAB实现单层竞争神经网络数据分类

一.单层竞争神经网络介绍 单层竞争神经网络(Single-Layer Competitive Neural Network)是一种基于竞争学习的神经网络模型,主要用于数据分类和模式识别。其核心思想是通过神经元之间的竞争机制,使得网络能够自动学习输入数据的特…

网络协议基础

文章目录 前言一、网络协议分层1.应用层2.传输层3.网络层4.数据链路层5.物理层 二、图解IP1.IP基本认识(1)IP的作用(2)IP与MAC的关系 2.IP地址的基础知识(1)IP地址的定义(2)IP地址的…

(CICD)自动化构建打包、部署(Jenkins + maven+ gitlab+tomcat)

一、平滑发布与灰度发布 **什么叫平滑:**在发布的过程中不影响用户的使用,系统不会因发布而暂停对外服务,不会造成用户短暂性无法访问; **什么叫灰度:**发布后让部分用户使用新版本,其它用户使用旧版本&am…

【C语言】自定义类型讲解

文章目录 一、前言二、结构体2.1 概念2.2 定义2.2.1 通常情况下的定义2.2.2 匿名结构体 2.3 结构体的自引用和嵌套2.4 结构体变量的定义与初始化2.5 结构体的内存对齐2.6 结构体传参2.7 结构体实现位段 三、枚举3.1 概念3.2 定义3.3 枚举的优点3.3.1 提高代码的可读性3.3.2 防止…

deep generative model stanford lecture note3 --- latent variable

1 Introduction 自回归模型随着gpt的出现取得很大的成功,还是有很多工程上的问题并不是很适合使用自回归模型: 1)自回归需要的算力太大,满足不了实时性要求:例如在自动驾驶的轨迹预测任务中,如果要用纯自回…

变形金刚多元宇宙

涉及的公司: 日本Takara公司 Diaclone可变形机器人玩具 Microman可变形机器人玩具 孩之宝 孩之宝与Takara签订协议后,孩之宝开始使用Takara的专利进行研发。 漫威 为了推广玩具,1984年5月,孩之宝玩具与漫威《变形金刚》漫画试探…

Day33【AI思考】-分层递进式结构 对数学数系的 终极系统分类

文章目录 **分层递进式结构** 对数学数系的 **终极系统分类**总览**一、数系演化树(纵向维度)**数系扩展逻辑树**数系扩展逻辑** **二、代数结构对照表(横向维度)**数系扩展的数学意义 **三、几何对应图谱(空间维度&am…

蓝桥杯python基础算法(2-1)——排序

目录 一、排序 二、例题 P3225——宝藏排序Ⅰ 三、各种排序比较 四、例题 P3226——宝藏排序Ⅱ 一、排序 (一)冒泡排序 基本思想:比较相邻的元素,如果顺序错误就把它们交换过来。 (二)选择排序 基本思想…

对象的实例化、内存布局与访问定位

一、创建对象的方式 二、创建对象的步骤: 一、判断对象对应的类是否加载、链接、初始化: 虚拟机遇到一条new指令,首先去检查这个指令的参数能否在Metaspace的常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化…

OSCP - Proving Grounds - Roquefort

主要知识点 githook 注入Linux path覆盖 具体步骤 依旧是nmap扫描开始,3000端口不是很熟悉,先看一下 Nmap scan report for 192.168.54.67 Host is up (0.00083s latency). Not shown: 65530 filtered tcp ports (no-response) PORT STATE SERV…

Python + Tkinter + pyttsx3实现的桌面版英语学习工具

Python Tkinter pyttsx3实现的桌面版英语学习工具 在多行文本框输入英文句子,双击其中的英文单词,给出英文读音和中文含义和音标。 本程序查询本地词典数据。通过菜单栏"文件"->"打开词典编辑器"进入编辑界面。 词典数据存储…