<Linux>(极简关键、省时省力)《Linux操作系统原理分析之Linux文件管理(1)》(25)

《Linux操作系统原理分析之Linux文件管理(1)》(25)

  • 8 Linux文件管理
    • 8.1 Linux 文件系统概述
    • 8.2 EXT2 文件系统
      • 8.2.1 EXT2 文件系统的构造
      • 8.2.2 EXT2 超级块(super block)
      • 8.2.3 组描述符
      • 8.2.4 块位图
    • 8.3 EXT2 的 inode 和文件结构
      • 8.3.1 EXT2 文件系统 inode 结构
      • 8.3.2 inode 表和 inode 位图
      • 8.3.3EXT2 文件的物理结构
      • 8.3.4 EXT2 的目录结构

8 Linux文件管理

8.1 Linux 文件系统概述

本章主要介绍 EXT2 文件系统的结构特点以及 linux 虚拟文件系统 VFS 的特点及其实现技术。

  1. Linux 文件系统的树型结构
    Linux 最上层的是根目录,用/表示。
    在这里插入图片描述
    Linux 采用目录分解的方法管理文件目录。在树型目录中的目录项是文件的符号目录。如下图所示:
    在这里插入图片描述

  2. Linux 文件类型
    普通文件
    目录文件
    设备文件
    管道文件
    链接文件(基于索引节点共享)

  3. 文件的访问权限
    Linux 中的每个文件都归于一个特定的用户所有,而且一个用户一般都是与某个用户组相关。所以,linux 设置了三种针对访问者身份的权限:文件所有者、与文件所有者同组的用户、其他用户。
    对文件的访问限制主要体现在文件的 3 种操作上,即文件的读取、写入和执行。对 3 种访问者的 3 种操作限制形成了 9 种情况,用 9 位二进制代码表示。

-rwxr-xr-x 1 user wheel 3212 Dec 4 12:36 a.out

8.2 EXT2 文件系统

8.2.1 EXT2 文件系统的构造

一个文件系统一般使用块设备上的一个独立逻辑分区,在这个分区内建立文件系统的树型层次结构 。EXT2 文件系统由逻辑序列块序列组成。EXT2 文件系统把它所使用的磁盘逻辑分区划分为若干块组(block group),并从 0 开始依次编号。每个块组中包含若干数据块,其中存放文件内容。每个组中除数据块之外包括 5 种用于管理和控制的信息块:超级块、组描述符、块位图、inode 位图和 inode 表。这些信息位
于每个块组的前部,后面是文件的数据块。

在这里插入图片描述

8.2.2 EXT2 超级块(super block)

EXT2 超级块(super block):用来描述 EXT2 文件系统整体信息的数据结构,主要描述文件在逻辑分区中的静态分布情况,以及描述文件系统的各种组成结构的尺寸、数量等。所有块组中包含的超级块的内容是相同的。系统运行期间 系统运行期间, 需要把超级块中的内容复制到内存缓冲区内。

在 linux 中,EXT2 文件系统超级块定义为 ext2_super_block 结构,定义在/include/linux/ext2_fs.h 中 。EXT2 超级块由两部分组成:

基本超级块:EXT2 文件系统得整体静态信息。
扩充块:反映所在块组的某些动态特性。

超级块本身占用一个物理块(1024B),基本块占 84B,扩充块占 20B,剩余的 920B 定义为元素长度为 4B 的数组 reserved[230],作为备用。

在这里插入图片描述

8.2.3 组描述符

组描述符:记录各个组块的描述信息(在位文件分配磁盘空间时需要使用这些信息)。这些组描述符集中在一起,就形成了组描述符表。组描述符可能占用多个物理块。和超级块一样的是:每个组块中的组描述符的内容完全相同,而且它的内容也要读入内存。

在这里插入图片描述
在 linux 中,组描述符(32B)是一个 ext2_group_desc 结构,定义在/include/linux/ext2_fs.h 中:

8.2.4 块位图

块位图:记录每块组的数据块的使用情况。它占用一个物理块。所以一个块组中数据块的最大数量是一个物理块的长度的 8 倍。例:对 1024 的物理块而言,其块位图就有 1024*8 位,即可以表示 8K 个数据块,也就是说一个块组的数据区的最大容量是 8M。如果 EXT2 文件系统使用的逻辑分区为 100M,则它可以划分为 12 个块组。

系统运行后,块位图装入一个高速缓存中,但是由于高速缓存空间有限,故只装入当前常用的 8 块(缺省值)位图。

8.3 EXT2 的 inode 和文件结构

8.3.1 EXT2 文件系统 inode 结构

Linux 中 EXT2 文件系统 inode 定义为 struct ext2_inode。它定义在/include/linux/ext2_fs.h。

8.3.2 inode 表和 inode 位图

inode 表:一个块组的所有文件的 inode 的集合。它可能占据多个物理块。每个块组可以包含的 inode 的数目由超级块中的成员项 s_inoders_per_group 给出。

Inode 位图:反映了 inode 表中各个项的使用情况,它的每一位表示 inode 表的一个表项。1 使用;0 空闲。与块位图相似,inode 位图也装入一个高速缓冲中。
在这里插入图片描述

8.3.3EXT2 文件的物理结构

采用混合索引结构。Inode 中 i_block[]数组共有 15 个地址。如下图所示:
EXT2 文件默认的物理块尺寸为 1K,EXT2 的块地址长度 4B,所以每个间接块中的索引表可以包括1024/4=256 个物理地址。所以

1.直接地址:允许文件不大于 12K 
2.一次间接地址:当文件大于 12K 时采用,允许文件长达 256K+12K
3.二次间接地址: 当文件大于 256K+12K 时采用,允许文件长达 256*256*K+256K+12K
4.三 次 间 接 地 址 : 当 文 件 大 于 256*256K+256K+12K 时 采 用 , 允 许 文 件 长 达256*256*256K+256*256K+256K+12K=16G+64M+256K+12K

但是实际上 linux 是 32 位文件系统,文件尺寸最大为 4G。
EXT2 文件系统按照文件的逻辑块号为索引值查找数据块,逻辑块从 0 依次编号。
例:如何查找逻辑块号 100 对应的物理块。

8.3.4 EXT2 的目录结构

Linux 树型目录结构中,每个文件目录都是一个目录文件,每个目录项都是一个 ext2_dir_entry 结构体,它
就是一个文件的符号目录。定义在/include/linux/ext2_fs.h。

Struct ext2_dir_entry
{
_u32 inode; /*inode 号*/
_u16 rec_len; /*目录项长度*/
_u16 name_len; /*文件名长度*/
Char name[EXT2_NAME_LEN]/*文件名*/
}

EXT2_NAME_LEN 缺省为 255,也就是文件名最大可以用 255 个字符。另外目录项长度根据文件名长度的大小是可变的。但是必须是 4 的倍数,不用部分用\0 填充。
删除文件时,将相应的 inode 号字段置 0,如果相邻有空白目录项则合并。
添加文件时,找到一个长度合适的空白目录项,并写入相应信息;若空白表项使用后剩余空间大于12B,则把剩余部分仍作为空白目录项。如果找不到合适的空目录项,就在文件尾部建立这个文件的目录项。

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

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

相关文章

智能优化算法应用:基于社交网络算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于社交网络算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于社交网络算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.社交网络算法4.实验参数设定5.算法结果6.参考…

用23种设计模式打造一个cocos creator的游戏框架----(七)代理模式

1、模式标准 模式名称:代理模式 模式分类:结构型 模式意图:为其他对象提供一种代理以控制对这个对象的访问。 结构图: ​ 适用于: 远程代理:也称为大使,这是最常见的类型,在分…

2022年第十一届数学建模国际赛小美赛C题人类活动分类解题全过程文档及程序

2022年第十一届数学建模国际赛小美赛 C题 人类活动分类 原题再现: 人类行为理解的一个重要方面是对日常活动的识别和监控。可穿戴式活动识别系统可以改善许多关键领域的生活质量,如动态监测、家庭康复和跌倒检测。基于惯性传感器的活动识别系统用于通过…

Kubernetes入门笔记——(2)k8s设计文档

​k8s最初源自谷歌的Brog项目,架构与其类似,主要包括etcd、api server、controller manager、scheduler、kubelet和kube-proxy等组件 etcd:分布式存储,保存k8s集群的状态 api server:资源操作的唯一入口,…

Kafka 的消息格式:了解消息结构与序列化

Kafka 作为一款高性能的消息中间件系统,其消息格式对于消息的生产、传输和消费起着至关重要的作用。本篇博客将深入讨论 Kafka 的消息格式,包括消息的结构、序列化与反序列化,以及一些常用的消息格式选项。通过更丰富的示例代码和深入的解析&…

2023年山东省职业院校技能大赛信息安全管理与评估二三阶段样题

2023年山东省职业院校技能大赛信息安全管理与评估二三阶段 样题 第二阶段 模块二 网络安全事件响应、数字取证调查、应用程序安全 一、竞赛内容 Geek极安云科专注技能竞赛技术提升,基于各大赛项提供全面的系统性培训,拥有完整的培训体系。团队拥有曾…

docker部署elasticsearch8.x

docker部署elasticsearch8.x 提示1 注意版本差别1.1 docker修改配置1.1.2 docker使用vim报命令不存在的解决办法1.1.3 docker 容器内报错 E: List directory /var/lib/apt/lists/partial is missing. - Acquire ( : No such file or directory) 或者其他权限 PermissionError: …

【Delphi】一个函数实现ios,android震动功能 Vibrate(包括3D Touch 中 Peek 震动等)

一、前言 我们在开发移动端APP的时候,有时可能需要APP能够提供震动功能,以便提醒操作者,特别是ios提供的3D Touch触感功能,操作者操作时会有触感震动,给操作者的感觉很友好。那么,在Delphi的移动端FMX开发中…

团建策划信息展示服务预约小程序效果如何

团建是中大型企业商家每年举办的员工活动,其形式多样化、具备全部参与的娱乐性。但在实际策划流程及内容时,部分公司便会难以入手,术业有专攻,这个时候团建策划公司便会发挥效果。 如拓展训练、露营、运动会、体育竞技等往往更具…

【算法】算法题-20231207

这里写目录标题 一、共同路径二、数字列表排序三、给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。 一、共同路径 给你一个完整文件名组成的列表,请编写一个函数,返回他们的共同目录路径。 # nums[/hogwarts/assets/style.cs…

算法通关村第十七关-黄金挑战跳跃问题

大家好我是苏麟 , 今天说说跳跃问题 . 跳跃游戏 描述 : 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true &#xff…

HBase-架构与设计

HBase架构与设计 一、背景二、HBase概述1.设计特点2.适用场景2.1 海量数据2.2 稀疏数据2.3 多版本数据2.4 半结构或者非结构化数据 三、数据模型1.RowKey2.Column Family3.TimeStamp 四、HBase架构图1.Client2.Zookeeper3.HMaster4.HRegionServer5.HRegion6.Store7.StoreFile8.…

Elasticsearch:什么是机器学习?

机器学习定义 机器学习 (ML) 是人工智能 (AI) 的一个分支,专注于使用数据和算法来模仿人类的学习方式,并随着时间的推移逐渐提高准确性。 计算机科学家和人工智能创新者 Arthur Samuel 在 20 世纪 50 年代首次将其定义为 “赋予计算机无需明确编程即可学…

【基于openGauss5.0.0简单使用DBMind】

基于openGauss5.0.0简单使用DBMind 一、环境说明二、初始化tpch测试数据三、使用DBMind索引推荐功能四、使用DBMind实现SQL优化功能 一、环境说明 虚拟机:virtualbox操作系统:openEuler 20.03 TLS数据库:openGauss-5.0.0DBMind:d…

2022年第十一届数学建模国际赛小美赛A题翼龙如何飞行解题全过程文档及程序

2022年第十一届数学建模国际赛小美赛 A题 翼龙如何飞行 原题再现: 翼龙是翼龙目中一个已灭绝的飞行爬行动物分支。它们存在于中生代的大部分时期:从三叠纪晚期到白垩纪末期。翼龙是已知最早进化出动力飞行的脊椎动物。它们的翅膀是由皮肤、肌肉和其他组…

云服务器与nas实现在冷热资源访问,nginx代理

在实际项目中,我们的文件存储是一个必不可少的环节,本博主了解到现在的存储方案有 购买纯系统的云服务器,自己安装个mino,再使用nginx代理给web使用购买OSS服务,现在有云厂商都有提供,储存价格也挺便宜的,…

13款趣味性不错(炫酷)的前端动画特效及源码(预览获取)分享(附源码)

文字激光打印特效 基于canvas实现的动画特效&#xff0c;你既可以设置初始的打印文字也可以在下方输入文字可实现激光字体打印&#xff0c;精简易用。 预览获取 核心代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&q…

生物动力葡萄酒的快速指南

虽然我们大多数人都熟悉有机酿酒和农业&#xff0c;但围绕生物动力学仍有许多困惑和神秘。无论你是否完全陌生&#xff0c;或者你已经听到一些小道消息&#xff0c;我们在这里揭开这种独特的葡萄酒生产方法的神秘面纱。 生物动力葡萄酒就是一个更全面的有机酿酒过程&#xff0c…

Ros智行mini,opencv,Gmapping建图,自主导航auto_slam,人脸识别,语音控制

功能 一、Gmapping建图 二、自主导航 起始点 、终点 三、人脸识别 四、语音控制 完成任务: 机器人先建图 建完图后给出目标点&#xff0c;机器人就可以完成调用自主导航走到目标点&#xff0c;期间会调用激光雷达扫描局部环境来进行自主避障&#xff0c;到达终点后进行语音…

HCIP考试实验

实验更新中&#xff0c;部分配置解析与分析正在完善中........... 实验拓扑图 实验要求 要求 1、该拓扑为公司网络&#xff0c;其中包括公司总部、公司分部以及公司骨干网&#xff0c;不包含运营商公网部分。 2、设备名称均使用拓扑上名称改名&#xff0c;并且区分大小写。 3…