当前位置: 首页 > news >正文

22 文件系统

了解了被打开的文件,肯定还有没被打开的文件,就是磁盘上的文件。先从磁盘开始认识

磁盘

概念

内存是掉电易失存储介质,磁盘是永久性存储介质
磁盘的种类有SSD,U盘,flash卡,光盘,磁带。磁盘是外设,机械设备,访问慢,os也有提速的方式

磁盘物理结构

在这里插入图片描述

磁盘上面有盘片,伺服,磁头,音圈马达等
盘面上会存储数据,计算机只认识二进制,南极和北极,向磁盘写入数据本质就是改变磁盘上的正负极,磁头可以读取内容

磁盘的存储结构

在这里插入图片描述

在这里插入图片描述

磁盘有一个一个圈,每一个平看是一个盘面,一个盘面上每一圈圆叫磁道,将磁道分为了8份,每一份磁道就是扇区。磁道相同的盘面合在一起是一个柱面

磁盘寻道

磁盘怎么找到数据在哪里
在电脑中运行的时候,磁盘是在高速旋转,高速旋转让磁头悬浮在盘面上方,电脑找到地址后发送给磁头,驱动磁头臂精确寻道,找到数据存放的位置。读取数据时,磁头会移动到盘面上读取数据,读取完会回到起始位置。磁盘怎么确定数据在哪个扇区?

CHS寻址

要找到一个扇区,先确定在哪个面(对应哪个磁头),然后确定哪个磁道,最后确定在哪个扇区。
磁盘结构的抽象
在这里插入图片描述

磁带里面的塑料带就像磁盘的盘片,播放时会将磁带从一边卷到另一边。虽然是圆形的,但可以将磁带抽出来,就成了线性结构,里面分为很多部分。磁盘虽然是圆形的,也可以拉开抽象为线性结构,每一块就像一个扇区,访问一个扇区只需要知道下标,就像给每一个扇区编了号,这种寻址方式是LBA寻址。将LBA寻址转换为CHS寻址,就可以找到数据扇区

在这里插入图片描述

磁盘管理

将数据存储到磁盘变为存储到数组,找到扇区变为找到数组特定位置,这样对磁盘的管理变为对数组的管理,就方便了很多
在这里插入图片描述

一整个磁盘不好管理,可以将磁盘分为几个区,就可以转换为小分区的管理。 橙色部分是分区的信息,电脑启动的信息,不只存一份,还有几个备份,当启动出问题就可以拷贝过来恢复

在这里插入图片描述

上面的橙色部分就是BootBlock,一个分区还是大,可以划分为很多个快,其中每个块的结构如上图。

块组

在这里插入图片描述

虽然磁盘的基本单位是扇区,512字节,但是操作系统(文件系统)和磁盘进行IO的基本单位是:4KB(8*512byte),一个block块的大小,所以磁盘也叫块设备

为什么不以512字节为单位

1.如果给的太小,需要多次IO,效率会低
2.如果操作系统和磁盘一样的大小,万一磁盘基本大小编了,Os的源代码要不要改,硬件和软件(os)进行解藕

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

  • Block Group:ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。政府管理各区的例子
  • 超级块(Super Block):存放文件系统本身的结构信息。记录的信息主要有:block和inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息,Super Block的信息被损坏,可以说整个文件系统结构就被破坏了
  • GDT,Group Descriptor Tbale:块组描述符,描述块组属性信息,包含每个块组的总体信息,如数据位图的块号、索引节点位图的块号、索引节点表的起始块号、空闲数据块和 inode 的个数等。
  • 块位图(Block Bitmap):假设有1000+个blocks,就有1000+个比特位,和block一一对应,每个bit表示一个哪个数据块被占用,哪个没被占
  • inode位图(inode Bitmap):同上,表示inode是否空闲可用
  • inode节点表:一个大小128字节的空间,所有文件inode空间的集合,需要标识唯一性,每一个inode块,都要有一个inode编号。一般一个文件,一个inode,一个inode编号。存放文件属性和大小,所有者,最近修改时间等
  • data blocks:存放文件内容,多个4kb(扇区*8)大小的集合,保存的都是特定文件的内容

在上面的区分后,linux在存储文件时,内容和属性是分开存储的。文件=内容+属性,属性存在inode,内容存在data里。这样可以让一个文件的信息可追溯,可管理

在每个块组内写入相关的管理数据,整个分区就被写入了文件系统信息,这就是格式化

文件查找

找到文件,只要找到对应的inode编号,就能找到该文件的inode属性合集。那么文件的内容怎么知道,哪些块是这个文件的?

inode中存了文件的属性和同一个块组的编号
在这里插入图片描述

如果一个文件特别大,block数据块里不只可以放内容,也可以放其他块的编号,这样类似多叉树的机构,节点就会存在大量的数据块,就可以表示一个大文件

inode

在这里插入图片描述
文件属性第一串数字就是inode

找到inode编号,就能找到分区里特定的bg,然后有了inode属性和内容,怎么知道一个文件的inode编号 。在linux里,想找一个文件,首先知道的是文件名,但文件inode属性里并没有文件名,文件名是在哪里?

在linux目录下,有很多文件,但是同一个目录里没有重复的文件名。目录其实也是文件,有自己的inode,也有data block,data里就存文件名以及文件名和inode的映射关系,这两个互为key值。正因为目录也是文件,所以也有自己的权限,x就是进入目录,w创建文件,需要写入文件名,r显示文件名和属性,读取文件属性和内容

寻找inode编号,依托的是目录结构,所以相对路径和绝对路径的关键在于定位目录,才能读取目录里的文件。关于目录名怎么找到自己的inode,在linxu里有目录树结构,保存了目录之间的关系和目录名与inode的映射关系

创建文件
先找到目录所在的分区,然后找到块组,在inode bitmap找到没有被占用的编号,置为1,然后将文件的属性写入,比如权限,所属组,时间等,将datablock映射关系建立,block位图置为1。有了inode编号,还需要在目录block里写入文件名,编号和文件名映射关系。

删除文件
以文件名为key,找到对应文件的inode,将inode bitmap和block bitmap的内容修改为0,无占用。再将映射关系删掉就行了。有时候删部分文件只需要修改文件大小。所以删除文件比拷贝快的多,所以文件删除也是可以恢复,只需要找到inode,将inode bitmap恢复,将映射的数据块恢复。但是,如果这个inode和data block被再次占用覆盖了,就找不到了

查看文件
ls找到目录,显示目录的对应的文件名和文件属性
cat根据文件名找到文件inode,显示文件内容

磁盘空间或者块组还有空间,但文件创建失败

inode和block是固定的,如果一个申请不下来,就会出现这种情况

相关文章:

22 文件系统

了解了被打开的文件,肯定还有没被打开的文件,就是磁盘上的文件。先从磁盘开始认识 磁盘 概念 内存是掉电易失存储介质,磁盘是永久性存储介质 磁盘的种类有SSD,U盘,flash卡,光盘,磁带。磁盘是…...

OVITO-2.9版本

关注 M r . m a t e r i a l , \color{Violet} \rm Mr.material\ , Mr.material , 更 \color{red}{更} 更 多 \color{blue}{多} 多 精 \color{orange}{精} 精 彩 \color{green}{彩} 彩! 主要专栏内容包括: †《LAMMPS小技巧》: ‾ \textbf…...

【Java开发指南 | 第一篇】类、对象基础概念及Java特征

读者可订阅专栏:Java开发指南 |【CSDN秋说】 文章目录 类、对象基础概念Java特征 Java 是一种面向对象的编程语言,它主要通过类和对象来组织和管理代码。 类、对象基础概念 类:类是一个模板,它描述一类对象的行为和状态。例如水…...

Neo4j 图形数据库中有哪些构建块?

Neo4j 图形数据库具有以下构建块 - 节点属性关系标签数据浏览器 节点 节点是 Graph 的基本单位。 它包含具有键值对的属性,如下图所示。 NEmployee 节点 在这里,节点 Name "Employee" ,它包含一组属性作为键值对。 属性 属性是…...

002 springboot整合mybatis-plus

文章目录 TestMybatisGenerate.javapom.xmlapplication.yamlReceiveAddressMapper.xmlreceive_address.sqlReceiveAddress.javaReceiveAddressMapper.javaIReceiveAddressServiceReceiveAddressServiceImpl.javaReceiveAddressController.javaTestAddressService.javaSpringboo…...

代码随想录训练营第三十五期|第天16|二叉树part03|104.二叉树的最大深度 ● 111.二叉树的最小深度● 222.完全二叉树的节点个数

104. 二叉树的最大深度 - 力扣(LeetCode) 递归,可以前序遍历,也可以后序遍历 前序遍历是backtracking 下面是后序遍历的代码: /*** Definition for a binary tree node.* public class TreeNode {* int val;* …...

Mac版2024 CleanMyMac X 4.15.2 核心功能详解 cleanmymac这个软件怎么样?cleanmymac到底好不好用?

近些年伴随着苹果生态的蓬勃发展,越来越多的用户开始尝试接触Mac电脑。然而很多人上手Mac后会发现,它的使用逻辑与Windows存在很多不同,而且随着使用时间的增加,一些奇奇怪怪的文件也会占据有限的磁盘空间,进而影响使用…...

【华为OD机试】执行任务赚积分【C卷|100分】

题目描述 现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。 每个任务都有最晚处理时间限制和积分值,在最晚处理时间点之前处理完成任务才可获得对应的积分奖励。 可用于处理任务的时间有限,请问在…...

mybatis分页实现总结

1.mybatis拦截器相关知识 1.作用 mybatis的拦截器是mybatis提供的一个拓展机制,允许用户在使用时根据各自的需求对sql执行的各个阶段进行干预。比较常见的如对执行的sql进行监控,排查sql的执行时间,对sql进行拦截拼接需要的场景&#xff0c…...

Vue3——html-doc-js(html导出为word的js库)

一、下载 官方地址 html-doc-js - npm npm install html-doc-js 二、使用方法 // 使用页面中引入 import exportWord from html-doc-js// 配置项以及实现下载方法 const wrap document.getElementById(test)const config {document:document, //默认当前文档的document…...

第19天:信息打点-小程序应用解包反编译动态调试抓包静态分析源码架构

第十九天 本课意义 1.如何获取到目标小程序信息 2.如何从小程序中提取资产信息 一、Web&备案信息&单位名称中发现小程序 1.国内主流小程序平台 微信 百度 支付宝 抖音头条 2.小程序结构 1.主体结构 小程序包含一个描述整体程序的app和多个描述各自页面的page …...

外观模式:简化复杂系统的统一接口

在面向对象的软件开发中,外观模式是一种常用的结构型设计模式,旨在为复杂的系统提供一个简化的接口。通过创建一个统一的高级接口,这个模式帮助客户端通过一个简单的方式与复杂的子系统交互。本文将详细介绍外观模式的定义、实现、应用场景以…...

PHP数组去重

public function array_unique_key($arr,$key) {$tmp_arrarray();foreach($arr as $k > $v){if(in_array($v[$key],$tmp_arr)){ //判断是否重复unset($arr[$k]); //重复则删除}else{$tmp_arr[]$v[$key]; //将值存储在临时数组中}}return $arr; } public function array…...

论软件系统的架构风格,使用三段论 写一篇系统架构师论文

软件系统的架构风格是指在软件系统设计与开发过程中,采用的一组相互协调的设计原则、模式和实践。这些风格不仅影响着系统的技术实现,还关乎到系统的可维护性、可扩展性和可靠性等关键质量属性。通过三段论的结构,本文旨在探讨软件系统架构风…...

深度挖掘响应式模式的潜力,从而精准优化AI与机器学习项目的运行效能,引领技术革新潮流

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,坚持默默的做事。 🔥 转载自热榜文章:探索设计模式的魅力:深度挖掘响应式模式的…...

企业级网络安全:入侵防御实时阻止,守护您的业务安全

随着互联网技术的快速发展,企业级网络安全问题日益凸显。在这个数字化时代,企业的业务安全不仅关系到企业的形象和声誉,还直接影响到企业的生存和发展。因此,加强企业级网络安全,预防和抵御各种网络攻击已成为企业的重…...

(一)Java八股——Redis

1 Redis缓存 1.1 什么是缓存穿透 ? 怎么解决 ?(穿透) ​ 缓存穿透是指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到 DB 去查询,可能导致 DB 挂掉。这种情…...

2024.4.15力扣每日一题——设计哈希映射

2024.4.15 题目来源我的题解方法一 链表自定义哈希函数 题目来源 力扣每日一题&#xff1b;题序&#xff1a;706 我的题解 方法一 链表自定义哈希函数 使用链表存储每个<key,value>。由于题目有限制put的次数不超过10000次&#xff0c;因此对于哈希函数的设计为&#…...

数据结构DAY4--哈希表

哈希表 概念&#xff1a;相当于字典&#xff0c;可以根据数据的关键字来寻找相关数据的查找表。 步骤&#xff1a;建立->插入->遍历->查找->销毁 建立 建立数据&#xff0c;形式随意&#xff0c;但一般为结构体&#xff08;储存的数据量大&#xff09;&#xff…...

MySQL二阶段和三阶段提交

在分布式系统中&#xff0c;事务管理是一个至关重要的方面。MySQL作为一种常用的关系型数据库管理系统&#xff0c;提供了二阶段提交&#xff08;Two-Phase Commit&#xff0c;2PC&#xff09;和三阶段提交&#xff08;Three-Phase Commit&#xff0c;3PC&#xff09;等协议来支…...

代码随想录算法训练营第四十二天|01背包问题、416. 分割等和子集

动态规划 文章目录 一、01背包问题二、分割等和子集总结 一、01背包问题 1.在有限的背包内放入最高价值的东西 2.二维数据和一维数据都可以解决 3.二维数据&#xff0c;递推公式为dp[i][j] max(dp[i-1][j], dp[i-1][j-weight[i]]value[i])&#xff0c;分为两个状态&#xff0…...

JVM主要知识点详解

目录 1. 性能监控和调优 1.1 调优相关参数 1.2 内存泄漏排查 1.3 cpu飙⾼ 2. 内存与垃圾回收 2.1JVM的组成&#xff08;面试题&#xff09; 2.2 Java虚拟机栈的组成 2.3 本地方法栈 2.4 堆 2.5 方法区&#xff08;抽象概念&#xff09; 2.5.1 方法区和永久代以及元空…...

hot100 -- 链表(中)

不要觉得力扣核心代码模式麻烦&#xff0c;它确实比不上ACM模式舒服&#xff0c;可以自己处理输入输出 只是你对 链表 和 return 的理解不到位 &#x1f442; ▶ 屿前世 (163.com) &#x1f442; ▶ see you tomorrow (163.com) 目录 &#x1f382;两数相加 &#x1f6a9;删…...

数据结构面试常见问题

数据结构是计算机科学中非常重要的一部分&#xff0c;也是面试中经常被考察的内容。以下是一些在数据结构面试中常见的问题&#xff1a; 1. 数组 (Array): 描述数组和链表的区别。如何在数组中实现循环队列&#xff1f;给定一个数组&#xff0c;如何找到两个数的和等于给定值…...

蓝桥杯2024年第十五届省赛真题-R 格式(高精度乘法 + 加法)

本题链接&#xff1a;蓝桥杯2024年第十五届省赛真题-R 格式 - C语言网 题目&#xff1a;​​​​​​​ 样例&#xff1a; 输入 2 3.14 输出 13 思路&#xff1a; 根据题意&#xff0c;结合数据范围&#xff0c;这是一道模板的高精度乘以低精度问题。 题意是double 类型 d 与…...

普通人做抖音小店真的能赚钱吗?可以,但更取决于个人

大家好&#xff0c;我是电商花花。 现在做抖音小店的基本上都是一些新商家&#xff0c;对于我们众多零基础的朋友来说&#xff0c;是期待也是一份挑战。 抖音小店作为一个充满机会的新兴平台&#xff0c;许多人都欣喜的投入其中&#xff0c;期望能够借此来改变自己的命运&…...

基于单链表实现通讯管理系统!(有完整源码!)

​ 个人主页&#xff1a;秋风起&#xff0c;再归来~ 文章专栏&#xff1a;C语言实战项目 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己&#xff0c;律己则安&#xff01; 1、前言 友友们&#xff0c;这篇文章是基于单链…...

MATLAB入门介绍

MATLAB是由MathWorks公司开发的一款专业的数学计算软件&#xff0c;主要用于算法开发、数据可视化、数据分析以及数值计算等领域。它提供了一个易于使用的环境&#xff0c;让用户可以通过矩阵计算、函数和数据绘图、用户界面的创建以及编程和文档编写来解决各种数学问题。 MATL…...

【k8s】:深入理解 Kubernetes 中的污点(Taints)与容忍度(Tolerations)

【k8s】&#xff1a;深入理解 Kubernetes 中的污点&#xff08;Taints&#xff09;与容忍度&#xff08;Tolerations&#xff09; 1、污点&#xff08;Taints&#xff09;2、容忍度&#xff08;Tolerations&#xff09;3、示例演示-测试污点的具体应用场景3.1 给节点打污点&…...

Angular 使用DomSanitizer防范跨站脚本攻击

跨站脚本Cross-site scripting 简称XSS&#xff0c;是代码注入的一种&#xff0c;是一种网站应用程序的安全漏洞攻击。它允许恶意用户将代码注入到网页上&#xff0c;其他用户在使用网页时就会收到影响&#xff0c;这类攻击通常包含了HTML和用户端脚本语言&#xff08;JS&…...

ASP动态网站开发毕业设计指导及实例/aso关键词优化工具

作者&#xff1a; | 上传时间&#xff1a;2009-11-16 | 关键字&#xff1a;QinQ技术&#xff08;也称Stacked VLAN 或Double VLAN&#xff09;是指将用户私网VLAN标签封装在公网VLAN标签中&#xff0c;使报文带着两层VLAN标签穿越运营商的骨干网络&#xff0c;在公网中只根…...

电子商务网站开发背景/百度推广营销页

引用&#xff1a;http://www.cnblogs.com/yyangblog/archive/2011/01/07/1929657.html 如何解决&#xff1a;Android中 Error generating final archive: Debug Certificate expired on 10/09/18 16:30 的错误 问题概述&#xff1a; 在导入一个app后提示如下错误&#xff1a; “…...

宝鸡做网站哪家好/现在最好的免费的建站平台

人才的标准从来都不是一成不变的。在东方的战国时代和西方的骑士时代里&#xff0c;最受器重的是力敌万夫的勇士和巧舌善辩的谋臣&#xff1b;在中国的科举时代里&#xff0c;靠着“ 死记硬背”和“八股文章”而金榜题名的书生最容易出人头地&#xff1b;在西方工业革命风起云涌…...

企业做网站需要什么/宁波 seo整体优化

有时候&#xff0c;我们需要将两张图片融合在一起。 比如我们要把下面这两张合并为一张&#xff1a; 最后得到这两种效果图&#xff1a; 这些操作也不是很难。 在这之前我们需要了解一个函数 CV_EXPORTS_W void addWeighted(InputArray src1, double alpha, InputArray src2,d…...

企业网站建设中企动力/网站代运营价格

LocationManager locationManager (LocationManager)getSystemService(Context.LOCATION_SERVICE);//括号中的0,0分别表示每隔多长时间和每隔多长距离进行一次定位locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new TestLocationListener());p…...

网站制作平台有哪些/福州seo博客

转自&#xff1a;http://blog.csdn.net/gengv/article/details/5714834...