文件系统---认识ext2文件系统

学习篇 | LINUX 内核的文件系统 -- ext2 Ext2 文件系统是 Linux 系统中的标准文件系统,是通过对 Minix 的文件系统进行拓展而得到的,其存储文件的性能极好. 阅读详情

磁盘的物理组成:

  • 扇区为最小的物理存储单位,每个扇区为512字节。
  • 将扇区组成一个圆,那就是柱面,柱面是分区的最小单位。
  • 第一个扇区很重要,里面有硬盘主引导记录(Masterbootrecord,MBR)及分区表,其中MBR占有446字节,分区表占有64字节。
  • 各种接口的磁盘在Linux中的文件名,①/dev/sd[a-p][1-15]:为SCSI,SATA,USB,Flash等接口的磁盘文件名;②/dev/hd[a-d][1-63]:为IDE接口的磁盘文件名。

磁盘分区:

磁盘分区是告诉操作系统“我这块磁盘在此分区可以访问的区域是A柱面到B柱面之间的块”,这样操作系统就知道它可以在所指定的快内进行文件数据的读、写、查找等操作。磁盘分区即指定分区的起始与结束柱面。
而指定分区的柱面范围记录在第一个扇区的分区表中。因为分区表只有64字节,所以最多只能记录4条分区的记录,这四条记录称为主分区或扩展分区。扩展分区还可以再分出逻辑分区。
一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(如mkfs命令)格式化成某种格式的文件系统,然后才能存储文件,格式化过程中会在磁盘上写一些管理存储布局的信息。

ext2文件系统

这里写图片描述

文件系统中存储的最小单元是块(block),一个块的大小是在格式化时确定的。启动块(Boot Block)的大小为1KB,由PC标准规定,用来存储磁盘分区信息和启动信息,任何文件系统都不能使用启动块。
启动块之后才是ext2文件系统的开始,ext2文件系统将整个分区划分成若干个同样大小的块组(Block Group)。

每个块组的组成:

1)超级块(Super Block)描述整个分区的文件系统信息,如inode/block的大小、总量、使用量、剩余量,以及文件系统的格式与相关信息。超级块在每个块组的开头都有一份拷贝。
2)块组描述符表(GDT,Group Descriptor Table)由很多块组描述符组成,整个分区分成多个块组就对应有多少个块组描述符。
每个块组描述符存储一个块组的描述信息,如在这个块组中从哪里开始是inode Table,从哪里开始是Data Blocks,空闲的inode和数据块还有多少个等等。块组描述符在每个块组的开头都有一份拷贝。
3)块位图(Block Bitmap)用来描述整个块组中哪些块已用哪些块空闲。块位图本身占一个块,其中的每个bit代表本块组的一个block,这个bit为1代表该块已用,为0表示空闲可用。假设格式化时block大小为1KB,这样大小的一个块位图就可以表示1024*8个块的占用情况,因此一个块组最多可以有1024*8个块。
4)inode位图(inode Bitmap)和块位图类似,本身占一个块,其中每个bit表示一个inode是否空闲可用。
5)inode表(inode Table)由一个块组中的所有inode组成。一个文件除了数据需要存储之外,一些描述信息也需要存储,如文件类型,权限,文件大小,创建、修改、访问时间等,这些信息存在inode中而不是数据块中。inode表占多少个块在格式化时就要写入块组描述符中。
inode记录的文件数据至少有:

  • 该文件的访问模式(rwx)
  • 该文件的所有者与组(owner/group)
  • 该文件的大小
  • 该文件创建或状态改变的时间(ctime)
  • 最近一次的读取时间(atime)
  • 最近修改内容的时间(mtime)
  • 定义文件特性的标志(flag),如SetUID等
  • 该文件真正内容的指向(Pointer)

6)数据块(Data Block)是用来放置文件内容的地方。根据不同的文件类型有以下几种情况:

  • 对于普通文件,文件的数据存储在数据块中。
  • 对于目录,该目录下的所有文件名和目录名存储在所在目录的数据块中,除了文件名外,ls -l命令看到的其它信息保存在该文件的inode中。
  • 对于符合链接,如果目标路径名较短则直接保存在inode中,如果较长则分配一个数据块来保存。
  • 设备文件、FIFO和socket等特殊文件没有数据块。

数据块寻址:

这里写图片描述

一个inode占128字节,其中60个字节用于指向存放文件内容的数据块指针。每个指针4字节,那么有15个指针。最后3个指针用分级间接寻址。
假设block为1KB。
这里写图片描述

12个直接指向,可以有12条记录。
一级间接寻址:1024/4=256,可以有256条记录。
二级间接寻址,可以有256*256条记录。
三级间接寻址,可以有256*256*256条记录。
所以对于1KB的块大小最大可以表示(256^3+256^2+256+12)*1KB≈16GB的文件。

Linux Ext2/Ext3/Ext4文件系统 目录 一、Ext2磁盘结构 二、Ext2 索引节点和数据块管理 三、Ext3文件系统 四、Ext4文件系统 一、Ext2磁盘结构 Ext2文件系统的磁盘结构如下图: 任何Ext2分区的第一个块都是引导块,引导块保存了分区和内核启动加载器相关的信息,不受文件系统管理。其余磁盘块被Ext2分成块组,每组包含的数据块和索引节点等都存放在相邻的磁道上,所有的块组大... 阅读详情

相关推荐

初窥Linux 之 ext2/ext3文件系统

Linux最传统的磁盘文件系统(filesystem)使用的是ext2,所以要了解文件系统就得要由ext2开始。 一、文件系统特性 磁盘分区完毕后还需要进行格式化,之后操作系统才能够使用这个分区。这是因为每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区进行格式化,以成为操作系统能够利用的文件系统格式。传统的磁盘与文件系统的应用中,一个分区誻只能够

ljianhui的专栏 2万+

【Linux】Ext2 文件系统

了解硬盘的结构以及认识硬盘的存储模式;理解Linux下的 Ext2 文件系统;了解软硬链接的本质;认识页框和页帧!

YoungMLet的博客 3763

ext2文件系统之ext2_lookup函数源代码分析

之前我们讲过vfs虚拟文件系统的lookup文件查找的实现,知道当内核的缓存没有找到的时候,就会调用到inode_operations结构体的lookup函数来实现,我们今天以ext2文件系统为例,来讲解一下对应文件系统的lookup函数的实现。 首先ext2的inode_operation结构体定义在ext2/namei.c,定义如下 const struct inode_operation

love coding 4084

深入理解ext2文件系统

深入理解ext2文件系统

sinat_37817094的博客 3973

Linux Ext2/Ext3/Ext4 文件系统分区

然而,在日志式文件系统中,由于详细纪录了每个细节,故当在某个过程中被中断时,系统可以根据这些记录直接回朔并重整被中断的部分,而不必花时间去检查其他的部分,故重整的工作速度相当快,几乎不需要花时间。ext3文件系统能够极大地提高文件系统的完整性,避免了意外宕机对文件系统的破坏。Ext3 的数据块分配策略是尽快分配,而 Ext4 和其它现代文件操作系统的策略是尽可能地延迟分配,直到文件在 cache 中写完才开始分配数据块并写入磁盘,这样就能优化整个文件的数据块分配,与前两种特性搭配起来可以显著提升性能。

m0_74282605的博客 1199

DDR内存条选购避坑指南:单Rank vs 双Rank性能实测对比(附2024年颗粒推荐)

本文深入解析了内存条中单Rank与双Rank设计的原理与性能差异。通过实战测试对比,揭示了双Rank内存在高负载场景(如3D渲染、视频剪辑)中凭借Rank Interleaving技术带来的显著性能优势,并提供了2024年针对不同用户需求的DDR4/DDR5内存选购策略与避坑指南。

ik678901的博客 1124

EXT2文件系统实现原理

目录 一    EXT2文件系统结构概览    2 1.1 EXT2文件系统结构框图    2 1.2 EXT2重要数据结构    3 二    块缓存    6 三    EXT2文件系统挂载    7 3.1 注册ext2文件系统类型    7 3.2 ext2文件系统挂载    7 3.3文件系统操作    9

chenying126的博客 7473

RK3588s Camera ISP调优详解(一)ISP调试工具及环境配置(附下载途径)

本文主要介绍了rkisp tuner工具的连接与使用,并附上了工具及依赖库的下载地址

zongheng_raobo的博客 6269

模拟实现EXT2文件系统

设计EXT2文件系统 实验目的 (1)掌握文件系统的工作原理 (2)理解文件系统的主要数据结构 (3)学习较为复杂的 Linux 下的编程 (4)了解 EXT2 文件系统的结构 实验内容 设计并实现一个二级文件系统程序: 提供以下操作: 文件创建 / 删除接口命令 touch / rm 目录创建 / 删除接口命令 mkdir / rmdir 显示目录内容命令 ls 切换目录命令 cd 读 / 写文件命令 read / write 更改文件权限命令 chmod 创建的文件不

qq_43791817的博客 4709

Vertx之Grpc消息发送

介绍 Vert.x gRPC 模块,它将 Google gRPC 的编程风格与 Vert.x 风格保持一致. gRPC 是一个高性能、开源、通用的RPC框架,是一种进程间通讯技术,由Google推出,基于HTTP2协议标准设计开发,默认采用Protocol Buffers数据序列化协议,支持多种开发语言。gRPC提供了一种简单的方法来精确的定义服务,并且为客户端和服务端自动生成可靠的功能库。 在gRPC客户端可以直接调用不同服务器上的远程程序,使用姿势看起来就像调用本地程序一样,轻松的实现远端服务的连接、

Lance 1188

MMORPG网络游戏开发之任务系统的架构与设计

在网路游戏中做任务已经成为游戏很重要的一个核心功能和玩法,如何做好一个灵活可扩展的任务系统的架构与设计,今天来给大家分享一些我们的设计经验。接下来我把整个的任务系统分成以下6个模块:对于单机游戏而言,这6个模块都放在客户端直接处理,对于网路游戏而言,模块1~5实现在服务端,模块6实现在客户端。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习unity的零基础小白,也有一些正在从事unity开发的技术大佬,欢迎你来交流学习。...

voidinit的专栏 3049

Ext2, Ext3和Ext4是什么以及如何创建和转换Linux文件系统

LInux Ext2, Ext3和Ext4文件系统创建和转换

yuyuyuliang00的博客 3964

021、反激变换器的软启动设计

本文分享了反激变换器软启动设计的实践经验。作者通过一次上电炸机事故引出软启动的重要性,分析了启动瞬间电流冲击和环路饱和问题。介绍了三种软启动方案:效果差的RC电路、推荐使用的数字芯片方案以及分立元件实现方法,重点指出数字方案的一致性优势。文章还探讨了软启动与过流保护的配合问题,提供了实测波形、温度影响等调试要点,并总结出软启动时间选择、批量生产一致性等实用建议。最后强调软启动是电源可靠性的关键设计,不应为节省成本而忽略。全文包含多个工程实践细节,对电源设计人员具有重要参考价值。(149字)

Jack010169的博客 174

Linux中的EXT2文件系统

1.分区 分区是为了方便操作系统在一块硬盘上进行数据访问,即去哪里读取数据。 分区的要点是记录每一个分区的起始和结束柱面。这个数据存在MBR的分区表中。MBR只能存四个分区的记忆,可以是四个主分区或三个主分区一个扩展分区。(3P+1E或4P) 2.文件系统 对分区进行格式化是为了在分区上建立文件系统。一个分区通常只能格式化为一个文件系统,但是磁盘阵列等技术可以将一个分区格式化为多个文件系统...

zpznba的博客 2278

光通量与辐射通量之间的换算

由理论和实验可知存在两种定义: 1W1W1W(瓦特)的频率为540×1012Hz540\times10^{12}Hz540×1012Hz(赫兹)的单色辐射的辐射通量等于683lm(流明)683lm(流明)683lm(流明).。 1lm1lm1lm的频率为540×1012Hz540\times10^{12}Hz540×1012Hz的单色通量等于1683=0.001464W\frac{1}{683}=0.001464W6831​=0.001464W。 从上述定义中我们可以得到什么呢?我们知道光速: c=3×

u011699626的博客 3271

MOSFET关断尖峰电压的机理与抑制

MOSFET在电力电子系统中存在开关尖峰电压/电流问题,主要源于寄生电感、密勒电容及开关瞬态特性。尖峰会引发过压击穿、功率损耗和EMI干扰。抑制措施包括优化驱动电路、添加缓冲网络(RC/RCD)、降低寄生电感(改进PCB布线/封装)、使用快速二极管及远端负载特殊处理(电抗器/滤波器)。系统性的器件选型与电路设计是确保功率电子稳定运行的关键。

硬核科技 1824

Linux 中 ext、ext2、ext3、ext4 文件系统介绍与区别

文件系统名称 介绍 特点 优势 ext 第一代扩展文件系统, 于1992年4月发表,是为Linux核心所做的第一个文件系统。采用Unix文件系统(UFS)的元数据结构,以克服MINIX文件系统性能不佳的问题。 它是Linux上第一个 利用虚拟文件系统实现的文件系统。 克服MINIX文件系统性能不佳的问题。 ext2 第二代扩展文件系统 是Linux内核所用的文件系统。它开始由Rémy Card设计,用以代替ext,于1993年1月加入Linux核心支持之中。ext2 的经典实现为Linu...

早知晓的博客 2万+

基于simulink创建一个针对双馈异步风力发电机并网运行的仿真模型

摘要:本文详细介绍了基于Simulink的双馈异步风力发电机(DFIG)并网运行仿真建模方法。系统包含风速输入、风力机、双馈发电机、电力电子变换器、控制器和并网接口等模块,通过8个步骤完整呈现了建模流程,包括风速模拟、机械功率计算、发电机特性建模、变流器控制策略设计等关键环节。仿真可评估系统在不同风速条件下的动态响应、最大功率跟踪能力和发电效率,为风力发电系统的优化设计提供有效验证手段。模型可根据实际需求扩展环境因素和电网交互等细节,提高仿真精度。

amy_mhd的博客 333

文件系统2-深度解析 ext2 文件系统

本文概述了操作系统在硬盘上以块为单位进行数据IO访问,以及文件系统如何管理文件。首先介绍了磁盘分区、格式化的概念,说明分区划分出操作系统可识别的盘符,格式化则是在分区上构建文件系统。接着详细解析了ext2文件系统的结构:超级块记录整体信息,块组内包含块位图、inode位图、inode表以及数据块,形成有效的资源管理机制。文中重点说明了inode中存储文件的元数据(权限、所有者、ACM时间和15个块指针)以及如何通过直接、一级、二级和三级间接块存储大文件。指出文件名存储与目录文件中,为之后介绍目录及目录项指路

a1933580388的博客 1201

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

文件系统系列专题之 Ext2/3/4

一、Ext概述EXT是延伸文件系统(Extended file system,缩写为 ext或 ext1),也译为扩展文件系统,由 Remy Card 设计,并于 1992 年 4 月引入到 Linux 中。采用Unix文件系统(UFS)的元数据结构,以克服MINIX文件系统性能不佳的问题。它是在linux上,第一个利用虚拟文件系统(VFS)实现出的文件系统,在linux核心0.96c版中首次加入支持,最大可支持2GB的文件系统。

存储随笔 4014

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

浅析Linux标准的文件系统(Ext2/Ext3/Ext4)

在 vi 的编辑会话期间,更改了该inode中的某些属性,当您完成操作并键入 :wq 时,将关闭并释放该 inode。Ext家族是Linux支持度最广、最完整的文件系统,当我们格式化磁盘后,就已经为我们规划好了所有的inode/block/metadate等数据,这样系统可以直接使用,不需要再进行动态的配置,这也是它最优秀的特点,不过这也是它最显著的缺点,磁盘容量越大,格式化越慢,centos7.x已经选用xfs作为默认文件系统,xfs是一种适合大容量磁盘和处理巨型文件的文件系统。du -sm 单位M。

m0_74282605的博客 1601

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Linux ext2, ext3, ext4 文件系统解读[4]

 ext2 ext3 ext4 文件系统的区别: ext2为非日志文件系统,即在文件系统的运行期间不会记录写操作的日志,这就有一个很大的弊端,即文件系统只能单纯依靠Inode和Data Block的Bitmap来确定数据写入的状态。 我们先来了解一下写入数据的一些具体的步骤: 当用户尝试写入一个文件时,首先系统判断当前用户对于这个文件尝试写入的目录是否有写权限,

Han的小站 2274

Linux ext2, ext3, ext4 文件系统解读[1]

ext2 文件系统结构分析: 首先来看一下ext2文件系统的结构示意图: Block: 对于ext2文件系统来说,硬盘分区首先被分割为一个一个的“Block”,每个Block就是实际用来存储数据的单元,大小相同,Block按照0,1,2,3的顺序进行编号,第一个Block的编号为0。对于ext2文件系统来说,支持的Block的大小有1024字节/2048字节/4096字节,Block的大小在创建文件系统的时候可以通过参数指定,如果不指定,则会从/etc/mke2fs.conf文件中读

Han的小站 1万+

ext2文件系统源代码之ext2.h

今天,我们看一下ext2文件系统源代码里面的ext2.h文件,这是一个头文件,里边都是一些函数的声明和一些结构体的定义,很多引用ext2的函数的地方都需要包含这个头文件,所以这个头文件用处是很广泛的,但是这个文件很简单,并且还很短,这就让我们理解变得很轻松了。 #include #include /*ext2挂载选项结构体*/ struct ext2_mount_options { /

love coding 3204

Ext2文件系统

当需要读写大量连续数据时,如果数据都存储在同一个柱面上,硬盘就可以在第一个盘面读写完后,无需移动磁头臂,直接切换到第二个盘面的磁头继续读写,然后再切到第三个...这样大大减少了磁头寻道的时间,极大地提高了读写速度。有时候编译项目时,我们可能会访问几百个文件,如果我们每次访问文件都要做一次完整的路径解析,而路径解析需要读取磁盘上的目录内容,那就意味着要做很多次磁盘访问,磁盘I/O操作比内存操作慢数万倍!如果这个文件时目录文件的话,那么就存储的是目录的结构信息(即文件名到 inode 号的映射关系)。

whispers421的博客 1059
上一篇: 文件IO---lseek、fcntl函数
下一篇: 文件系统---stat函数
_IanXiao
博客等级 码龄12年 84粉丝 241原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值