Linux下ext2文件系统
文章目录
- 一 :penguin:基本概述
- 二 :star: ext2文件系统
- :star: 1. :star:Boot Block(引导块)
- 位置与作用
- 三 Block Group(块组)
- :star:1.:star: Super Block(超级块)
- :star:2.:star: Group Descriptor(块组描述符)
- :star:3. :star:Block Bitmap(块位图)
- :star:4. :star: inode Bitmap(inode位图)
- :star:5. :star:inode table(inode 表)
- :star:6. :star: DataBlocks(数据区)
- :full_moon_with_face:实际存放的内容
- :full_moon_with_face:存放的大小
一 🐧基本概述
ext2(Second Extended File System)是Linux操作系统中经典的文件系统类型之一,它在早期的Linux系统中被广泛使用,为文件和目录在磁盘等存储介质上的存储、管理以及访问提供了一套完善的机制。
二 ⭐️ ext2文件系统
Linux ext2文件系统,磁盘文件系统图

⭐️ 1. ⭐️Boot Block(引导块)
一个分区至少含有一个Boot Block(引导块),其它为Block Group.
位置与作用
Boot Block通常位于磁盘分区的最开始部分,也就是在整个ext2文件系统所在磁盘分区的起始位置,在超级块(Super Block)之前。它主要用于存放引导程序相关的代码和数据,起着引导操作系统启动的关键作用。
当计算机开机启动时,BIOS(基本输入输出系统)会首先执行硬件自检等初始化操作,之后它会按照预设的启动顺序去查找可引导的设备(比如硬盘)。一旦找到硬盘,BIOS就会将硬盘分区开头处的Boot Block加载到内存中,并将控制权转交给其中的引导程序代码。这个引导程序随后会进一步引导操作系统内核进行加载、初始化等后续启动流程,从而让整个计算机系统正常运转起来。
三 Block Group(块组)
ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。
位于Linux/fs/ext2/ext2.h下
⭐️1.⭐️ Super Block(超级块)
存放文件系统本身的结构信息。记录的信息主要有:bolck 和 inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息
// 定义ext2文件系统的超级块结构体
struct ext2_super_block {// 以下是文件系统中inode(索引节点)的总数__le32 s_inodes_count; /* Inodes count */// 文件系统中总的块(Blocks)数量,用于衡量磁盘分区存储容量大小(以块为单位)__le32 s_blocks_count; /* Blocks count */// 文件系统中当前空闲的块(Blocks)数量,操作系统可据此知晓还有多少块可用于分配给新文件等操作__le32 s_free_blocks_count; /* Free blocks count */// 文件系统中当前空闲的inode(索引节点)数量,用于判断是否还能创建新的文件或目录等(每个文件/目录需对应一个inode)__le32 s_free_inodes_count; /* Free inodes count */// 以2为底的对数形式表示块(Block)大小,例如,若值为10,则块大小为2^10 = 1024字节,用于确定数据存储基本单元的大小__le32 s_log_block_size; /* Block size */.............................
};
⭐️2.⭐️ Group Descriptor(块组描述符)
块组描述符就像是块组的 “管家”,它详细记录了本块组内各种资源(如数据块、inode 等)的使用情况以及关键结构(位图、表等)的位置信息,操作系统在对块组进行操作管理时,首先会读取块组描述符来获取这些基础信息,以便做出合理的资源分配决策等。
struct ext2_group_desc {// 本块组内数据块(Blocks)位图所在的块号,通过这个块号可以定位到块位图(Block Bitmap),__le32 bg_block_bitmap; /* Blocks bitmap block */// 本块组内inode(索引节点)位图所在的块号,据此能找到inode位图(inode Bitmap),__le32 bg_inode_bitmap; /* Inodes bitmap block */// 本块组内inode表(Inodes table)所在的块号,通过这个块号可以定位到inode表,__le32 bg_inode_table; /* Inodes table block */// 本块组内当前空闲的数据块(Blocks)数量统计,操作系统可以据此快速了解当前块组还有多少数据块可供分配,__le16 bg_free_blocks_count; /* Free blocks count */// 本块组内当前空闲的inode(索引节点)数量统计,结合块组内总的inode数量以及已使用的情况,。__le16 bg_free_inodes_count; /* Free inodes count */// 本块组内已使用的目录(Directories)数量统计,记录了该块组中包含的目录个数,__le16 bg_used_dirs_count; /* Directories count */..................
};
⭐️3. ⭐️Block Bitmap(块位图)
Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没有被占用
- 🌹它采用二进制位(bit)来表示每个数据块的使用状态。具体而言,块位图中的每一位都与块组内的一个具体数据块相对应,其中:
-
- 🌹如果某一位的值为 1,则表示对应的那个数据块已经被占用,即该数据块正在被某个文件用来存储数据内容,不可再分配给其他文件使用。
-
- 🌹如果某一位的值为 0,则意味着对应的那个数据块目前处于空闲状态,可供后续创建的文件分配使用,文件系统在为新文件分配磁盘空间时,就会查找这些值为 0 的位对应的空闲数据块进行分配。
⭐️4. ⭐️ inode Bitmap(inode位图)
使得文件系统能够快速知晓哪些 inode 是空闲的、可分配给新创建的文件或目录使用,哪些 inode 已经被占用,正用于记录已有文件或目录的属性信息等。
- 🌹采用二进制位(bit)来呈现每个 inode 的使用状态。具体来说,inode 位图中的每一位都与块组内的一个具体 inode 相对应,其中:
-
- 🌹 如果某一位的值为 1,则表示对应的那个 inode 已经被占用,意味着该 inode 已被分配给某个文件或目录,用于记录诸如文件权限、所有者、大小以及指向数据块的指针等属性信息,不可再分配给其他文件或目录使用了。
-
- 🌹 如果某一位的值为 0,则代表对应的那个 inode 目前处于空闲状态,可供后续创建的文件或目录分配使用。例如,当需要创建一个新文件时,文件系统会扫描 inode 位图,查找值为 0 的位对应的空闲 inode,然后将其分配给新文件,并更新该位为 1,以标记此 inode 已被占用。
⭐️5. ⭐️inode table(inode 表)
inode 表(inode table)是 ext2 文件系统中每个块组(Block Group)内用于存放该块组内所有文件和目录对应的 inode(索引节点)的区域。
inode 表本质上是由一系列连续存储的 ext2_inode 结构体组成的数组,每个 ext2_inode 结构体对应一个文件或目录。
struct ext2_inode {// 文件模式,用于表示文件的类型(如普通文件、目录、符号链接等)以及相应的权限设置(可读、可写、可执行等权限),__le16 i_mode; /* File mode */// 文件所有者的用户ID(uid)的低16位,用于标识该文件所属的用户,与系统的用户管理机制相结合,__le16 i_uid; /* Low 16 bits of Owner Uid */// 文件的大小,以字节为单位,明确了该文件所包含的数据量大小,这对于文件读写操作时确定读取或写入的范围等操作很关键,__le32 i_size; /* Size in bytes */// 文件最后一次被访问的时间,以时间戳的形式记录,便于系统统计文件的使用活跃度、了解文件的访问历史,__le32 i_atime; /* Access time */// 文件的创建时间,记录文件在文件系统中最初生成的时间点,对于追踪文件的来源、了解文件系统的历史变更等方面有一定帮助,__le32 i_ctime; /* Creation time */...............
};
⭐️6. ⭐️ DataBlocks(数据区)
🌝实际存放的内容
-
🌝普通文件的数据内容
对于普通文件来说,数据块区存放的就是文件所包含的实际数据。例如:- 🌹文本文件:像
.txt文件,其包含的文字字符信息会按照一定的编码方式(如 ASCII、UTF-8 等)依次存放在数据块中。比如一个简单的文本文件内容为 “Hello, world!”,这些字符对应的二进制编码就会被顺序存储在某个或某些数据块里。
- 🌹文本文件:像
-
🌝 目录文件的数据内容
目录在ext2文件系统中也是一种特殊的文件,其数据块区存放的是目录项(Directory Entry)信息。每个目录项主要包含两部分关键内容:- 🌹文件名:记录了该目录下包含的文件或子目录的名称,
- 🌹对应
inode编号:通过文件名关联其对应的inode编号,以此建立起从文件名到文件实际属性和数据存储位置(通过inode去查找)的映射关系。
🌝存放的大小
-
🌹数据块大小设定
数据块区中数据块的大小是在文件系统创建(格式化磁盘分区时)被设定的,常见的规格有 1024 字节(1KB)、2048 字节(2KB)、4096 字节(4KB)等 一般为4KB)。 -
🌹文件数据占用数据块数量及大小情况
- 小文件:如果一个文件的数据量小于设定的数据块大小,那么该文件的数据只占用一个数据块,这个数据块剩余的空间暂时处于未使用状态(但在文件系统层面仍将整个数据块视为被该文件占用)
- 大文件:对于数据量较大的文件,会根据文件系统采用的分配算法(如连续分配、链式分配、索引分配等,前面已介绍过)占用多个数据块。

相关文章:
Linux下ext2文件系统
文章目录 一 :penguin:基本概述二 :star: ext2文件系统:star: 1. :star:Boot Block(引导块)位置与作用 三 Block Group(块组):star:1.:star: Super Block(超级块):star:2.:star: Group Descriptor(块组描述符):star:…...
BUUCTF:web刷题记录(1)
目录 [极客大挑战 2019]EasySQL1 [极客大挑战 2019]Havefun1 [极客大挑战 2019]EasySQL1 根据题目以及页面内容,这是一个sql注入的题目。 直接就套用万能密码试试。 admin or 1 # 轻松拿到flag 换种方式也可以轻松拿到flag 我们再看一下网页源码 这段 HTML 代码…...
【微服务】面试题 6、分布式事务
分布式事务面试题讲解 一、问题背景与解决方案概述 因微服务项目涉及远程调用可能引发分布式事务问题,需解决。主流解决方案有阿里 Seata 框架(含 XA、AT、TCC 模式)和 MQ。 二、Seata 框架关键角色 事务协调者(TC)&…...
【2024年华为OD机试】(C卷,100分)- 分割均衡字符串 (Java JS PythonC/C++)
一、问题描述 题目描述 均衡串定义:字符串中只包含两种字符,且这两种字符的个数相同。 给定一个均衡字符串,请给出可分割成新的均衡子串的最大个数。 约定:字符串中只包含大写的 X 和 Y 两种字符。 输入描述 输入一个均衡串…...
Spring Data Elasticsearch简介
一、Spring Data Elasticsearch简介 1 SpringData ElasticSearch简介 Elasticsearch是一个实时的分布式搜索和分析引擎。它底层封装了Lucene框架,可以提供分布式多用户的全文搜索服务。 Spring Data ElasticSearch是SpringData技术对ElasticSearch原生API封装之后的产物,它通…...
GESP202312 四级【小杨的字典】题解(AC)
》》》点我查看「视频」详解》》》 [GESP202312 四级] 小杨的字典 题目描述 在遥远的星球,有两个国家 A 国和 B 国,他们使用着不同的语言:A 语言和 B 语言。小杨是 B 国的翻译官,他的工作是将 A 语言的文章翻译成 B 语言的文章…...
键盘过滤驱动
文章目录 概述注意源码参考资料 概述 irp请求会从io管理器中传递到设备栈中依次向下发送,当到达底层真实设备处理完成后,会依次返回,这时如果在设备栈中有我们自己注册的设备,就可以起到一个过滤的功能。键盘过滤驱动就是如此&am…...
dolphinscheduler2.0.9升级3.1.9版本问题记录
相关版本说明 JDK:JDK (1.8) DolphinScheduler :3.1.9 数据库:MySQL (8),驱动:MySQL JDBC Driver 8.0.16 注册中心:ZooKeeper (3.8.4) 问题一:dolphinscheduler2.0.9对应zk版本使用…...
【权限管理】Apache Shiro学习教程
Apache Shiro 是一个功能强大且灵活的安全框架,主要用于身份认证(Authentication)、授权(Authorization)、会话管理(Session Management)和加密(Cryptography)。它旨在为…...
9.4 visualStudio 2022 配置 cuda 和 torch (c++)
一、配置torch 1.Libtorch下载 该内容看了【Libtorch 一】libtorchwin10环境配置_vsixtorch-CSDN博客的博客,作为笔记用。我自己搭建后可以正常运行。 下载地址为windows系统下各种LibTorch下载地址_libtorch 百度云-CSDN博客 下载解压后的目录为: 2.vs…...
python特殊参数
一、默认值参数和关键字参数 1.默认值参数 形参设定默认值 称为 默认参数。调用函数时,可以使用比定义时更少的参数。调用函数时,如果没有传入默认参数对应的实参,则实参使用默认值默认参数在调用的时候可以不传递,也可以传递 …...
Ubuntu系统Qt的下载、安装及入门使用,图文详细,内容全面
文章目录 说明1 在线安装2 离线安装3 使用Qt Creator创建Qt应用程序并构建运行补充补充一:注册Qt账号 说明 本文讲解Ubuntu系统下安装Qt,包括在线安装和离线安装两种方式,内容充实细致,话多但是没有多余(不要嫌我啰嗦…...
elasticsearch集群部署
一、创建 elasticsearch-cluster 文件夹 创建 elasticsearch-7.6.2-cluster文件夹 修改服务es服务文件夹为node-001 修改config/elasticsearch.yml 配置文件 # Elasticsearch Configuration # # NOTE: Elasticsearch comes with reasonable defaults for most settings. # …...
初学stm32 --- DAC模数转换器工作原理
目录 什么是DAC? DAC的特性参数 STM32各系列DAC的主要特性 DAC框图简介(F1/F4/F7) 参考电压/模拟部分电压 触发源 关闭触发时(TEN0)的转换时序图 DMA请求 DAC输出电压 什么是DAC? DAC,全称:Digital…...
保证Mysql数据库到ES的数据一致性的解决方案
文章目录 1.业务场景介绍1.1 需求分析1.2 技术实现方案 2.业界常用数据一致性方案分析2.1 同步双写方案2.2 MQ异步双写方案2.3 扫表定期同步方案2.4 监听binlog同步方案 1.业务场景介绍 1.1 需求分析 某知名的在线旅游平台,在即将到来的春季促销活动之前ÿ…...
Flutter Xcode 16+ iOS 18.1 使用image_pickers无法弹出选择图片的视图问题
解决 Flutter Xcode 16 使用 image_pickers 无法弹出选择图片视图的问题 在开发 Flutter 应用时,图片选择功能是常见的需求之一。image_pickers 库因其便捷性和功能丰富性,成为了许多开发者的选择。然而,随着 Xcode 版本的不断更新ÿ…...
socket网络编程-TC/IP方式
网络编程 1.概念:两台设备之间通过网络数据传输。 2.网络通信:将数据通过网络从一台设备传输另外一台设备。 3.java.net包下提供了一系列的类和接口,提供程序员使用,完成网络通信。 TCP和UDP TCP协议: 1.使用TCP协…...
《分布式光纤测温:解锁楼宇安全的 “高精度密码”》
在楼宇建筑中,因其内部空间庞大,各类电器设施众多,如何以一种既高效又稳定,兼具低成本与高覆盖特性的方式,为那些关键线路节点开展温度监测,是目前在安全监测领域一项重点研究项目,而无锡布里渊…...
C语言基本知识复习浓缩版:数组
所谓数组(Array),就是一系列数据的集合。这些数据具有相同的类型,并且在内存中挨着存放,彼此之间没有缝隙。换句话说,数组用来存放多份数据,但是它有两个要求: 这些数据的类型必须相…...
Python贪心
贪心 贪心:把整体问题分解成多个步骤,在每个步骤都选取当前步骤的最优方案,直至所有步骤结束;每个步骤不会影响后续步骤核心性质:每次采用局部最优,最终结果就是全局最优如果题目满足上述核心性质…...
NCM格式高效解密工具:三步解决网易云音乐文件播放限制问题
NCM格式高效解密工具:三步解决网易云音乐文件播放限制问题 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 您是否曾经遇到下载的网易云音乐文件无法在其他设备播放的困扰?ncmdump工具正是为解决这一痛点而生&…...
Weblogic IIOP协议漏洞(CVE-2020-2551)修复指南:不止是打补丁
Weblogic IIOP协议漏洞深度防护指南:从补丁到立体防御 当Oracle在2020年1月发布CVE-2020-2551漏洞公告时,这个CVSS评分高达9.8的IIOP协议反序列化漏洞立刻成为企业安全团队的噩梦。作为Weblogic的核心组件之一,IIOP协议的远程代码执行风险让…...
如何高效解密网易云音乐NCM文件?ncmdump工具全指南
如何高效解密网易云音乐NCM文件?ncmdump工具全指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否遇到过下载的网易云音乐NCM文件无法在其他播放器中打开的问题?ncmdump作为一款专业的NCM格式解密工具…...
开发者利器:OpenClaw+千问3.5-9B自动生成单元测试
开发者利器:OpenClaw千问3.5-9B自动生成单元测试 1. 为什么需要AI生成单元测试 作为一名长期奋战在一线的开发者,我深知单元测试的重要性——它不仅是代码质量的守护者,更是重构时的安全网。但现实情况是,在紧张的开发周期中&am…...
文墨共鸣大模型开源项目协作:GitHub Issue分析与PR描述生成
文墨共鸣大模型开源项目协作:GitHub Issue分析与PR描述生成 1. 引言:开源项目维护的“甜蜜负担” 如果你维护过一个稍微有点人气的开源项目,大概能懂这种感受:每天打开GitHub,通知栏里塞满了新消息。有用户提了个Iss…...
无需API密钥:AI股票分析师daily_stock_analysis私有化部署全解析
无需API密钥:AI股票分析师daily_stock_analysis私有化部署全解析 1. 引言:为什么选择私有化部署的AI股票分析工具 在金融分析领域,数据安全和隐私保护越来越受到重视。传统的股票分析工具往往需要连接到外部API,这不仅可能带来数…...
告别系统臃肿与隐私泄露:Win11Debloat让Windows效率提升80%
告别系统臃肿与隐私泄露:Win11Debloat让Windows效率提升80% 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter a…...
千问3.5-9B多模态扩展:OpenClaw处理图片与文本混合任务
千问3.5-9B多模态扩展:OpenClaw处理图片与文本混合任务 1. 为什么需要本地多模态自动化 去年夏天,我电脑里堆积了上千张混杂着文字说明的截图——有技术文档片段、会议纪要、临时灵感记录。手动整理这些内容时,我突然意识到:如果…...
OpenClaw视觉增强:Phi-3-vision-128k-instruct与本地OCR工具链整合
OpenClaw视觉增强:Phi-3-vision-128k-instruct与本地OCR工具链整合 1. 为什么需要视觉增强的OpenClaw 上周我需要从一堆扫描版PDF中提取表格数据时,突然意识到一个问题:现有的OCR工具要么识别率感人,要么对复杂版式束手无策。更…...
西门子1500T插补控制从入门到精通:手把手教你配置直线与圆弧轨迹(附程序源码)
西门子1500T插补控制从入门到精通:手把手教你配置直线与圆弧轨迹(附程序源码) 在工业自动化领域,精确控制多轴协同运动一直是核心挑战。想象一下机械臂需要画一个完美的圆,或者CNC机床要切割复杂曲线——这些场景都离不…...
