linux操作系统中EXT2文件的组成_朱颂
ext2文件的逻辑结构和物理结构的映射过程
标题:深入探讨ext2文件的逻辑结构和物理结构的映射过程在计算机科学领域,文件系统是操作系统中的重要组成部分,用于管理文件的存储和检索。
而ext2文件系统是Linux操作系统中常见的文件系统之一,其结构复杂、功能强大。
在本文中,我将深入探讨ext2文件系统的逻辑结构和物理结构的映射过程,以便更好地理解这一主题。
一、理解ext2文件系统1. ext2文件系统的基本概念在开始深入讨论ext2文件系统的逻辑结构和物理结构的映射之前,需要首先理解ext2文件系统的基本概念。
ext2是Linux操作系统中常见的文件系统类型,它采用了类Unix文件系统的基本概念,包括inode、超级块、块组描述符等重要概念。
2. ext2文件系统的特点ext2文件系统具有一些独特的特点,如支持大容量的文件系统、高效地组织和管理磁盘空间、高速的文件读写性能等。
这些特点使得ext2文件系统在Linux系统中得到了广泛的应用。
二、逻辑结构和物理结构的映射过程1. 磁盘空间的组织ext2文件系统的逻辑结构和物理结构的映射过程首先涉及到磁盘空间的组织。
磁盘空间被组织成多个块组,每个块组包含若干个数据块,用于存储文件数据;同时还包含若干个inode块,用于存储文件的元数据信息。
2. inode与文件的映射在ext2文件系统中,每个文件都对应一个唯一的inode,该inode记录了文件的元数据信息,如文件大小、权限、所有者等。
逻辑上,文件可以通过inode进行标识和管理,而物理上,inode则映射到具体的磁盘块中。
3. 数据块的映射文件的实际数据则存储在数据块中。
数据块的映射过程是ext2文件系统逻辑结构和物理结构的重要部分,它涉及到磁盘空间的分配和管理,以及文件数据与磁盘块的对应关系。
三、个人观点和总结通过对ext2文件系统的逻辑结构和物理结构的映射过程进行深入探讨,我对文件系统的工作原理有了更深入的理解。
在实际应用中,对文件系统的深入理解能够帮助我们更好地进行文件管理和存储空间的优化,提高系统的性能和稳定性。
Linux--Ext2文件系统
系统记录文件的存放地,同时也存放着一些系统的配置文件
存在于所有的文件系统中,保存文件碎片 由一些外部应用程序使用的目录
嵌入式Linux常用文件系统
Flash Memory简介 Flash Memory上的两种技术
NAND:串行;顺序读取;适合大容量;通常需MTD NOR
:并行;随机读取;适合数据或程序存储;XIP; 在嵌入式中常见的文件系统有cramfs、 romfs、jffs、yaffs、Ext2fs 等 。
任何Ext2分区中的第一个块从不受Ext2文件 系统的管理,因为这一块是为分区的启动 扇区所保留的。 Ext2分区的其余部分分成块组(block group 每个块组的分布图
超级块
EXT2文件系统的超级块一共有1024字节, 它存储在引导块的后面。文件系统管理器利 用它们来使用和维护文件系统。 超级块中含有文件系统的布局信息,其主要 功能是给出文件系统不同部分的大小形状。 如给定块大小、I节点总数、每组内I节点数、 空闲块和空闲I节点数等。 在Linux启动时,根设备中的超级块被读入 内存,存放在ext2-super block结构中。
内核层
虚拟文件系统
JFFS2
RAMFS
MTD字符设备
MTD块设备
底层驱动
MTD设备驱动
硬件层 NOR Flash RAM
NFS文件系统(1)
NFS为Network File System的简称,最早是由Sun公司提出发展 起来的,其目的就是让不同的机器、不同的操作系统之间通过 网络可以彼此共享文件。NFS可以让不同的主机通过网络将远 端的NFS服务器共享出来的文件安装到自己的系统中,从客户 端看来,使用NFS的远端文件就像是使用本地文件一样。在嵌 入式中使用NFS会使应用程序的开发变得十分方便,并且不用 反复地进行烧写映像文件。 NFS的使用分为服务端和客户端,其中服务端是提供要共享的 文件而客户端则通过挂载(“mount”)这一动作来实现对共 享文件的访问操作。下面主要介绍NFS服务端的使用。在嵌入 式开发中,通常NFS服务端在宿主机上运行,而客户端在目标 板上运行。
Ext2文件系统
ext2的索引结点中使用了组合索引方式。
前12项用作直接索引 第13项用作间接索引 第14项用作二次间接索引 第15项用作三次间接索引
EXT2文件系统中的每个文件由一个inode描述,且只能由一个 inode描述。 inode与文件一起存放在外存,系统运行时,把inode写入内存建 立映像,加快文件系统速度。
Ext2文件系统简介
EXT2文件系统是EXT文件系统的升级, 在Linux中得到了广泛的使用。
Linux最常见的根文件系统
介绍EXT2文件系统的
磁盘组织 目录项和支持的文件类型
一个文件系统一般使用块设备上一个独立的逻 辑分区; 文件逻辑分区中除了有表示文件内容的逻辑 块(称为数据块)外,还设置了包含管理和控制 信息的逻辑块。 磁盘上可能有多个逻辑分区,每个分区可以 使用不同的文件子系统。
块组描述符
块组描述符用来描述一个磁盘块组的相关信息 块组描述符组由若干块组描述符组成,描述了文件系 统中所有块组的属性,存放于超级块所在块的下一个 块中。
一个块组描述符的结构如下 :
数据块位图和索引结点块位图
EXT2的空闲盘块分配算法采用了位图法 位图: 为便于查找数据块或索引结点的分配信息 每个位(bit)都对应了一个磁盘块:
2个位图分别占用一个专门的磁盘块;位于组描述符表 之后 根据磁盘块的大小,可以计算出每个块组中最多能容 纳的数据块个数和索引节点块个数
0,表示对应的磁盘块(或索引结点)空闲 1,表示占用。
索引结点
EXT2中所有的索引结点大小相同,都是128个字节。 一个inode的结构如下:
ext2文件系统学习(二)——目录磁盘结构
ext2⽂件系统学习(⼆)——⽬录磁盘结构创建镜像、mount等操作和上⼀篇⼀样,测试⽬录结构如下:⼀些⽂件系统信息如下:Block size: 1024Inodes per group: 128Inode size: 128Block bitmap at 6Inode bitmap at 7Inode table at 8-23下⾯看看⽂件系统根⽬录的结构,ext2的根⽬录的索引节点号是2,根据上⾯的信息可以计算出根⽬录的索引节点地址是0x002080。
如果是⽤vim打开的镜像⽂件,可以通过以下命令计算地址::echo printf("%x", 8*1024+128)⽂件内容如下:对照结构定义:i_mode: 0x41ed 对照可知⽂件格式为EXT2_S_IFDIRi_uid: 0i_size: 0x000400,也就是1K (可以通过ls -ld /tmp/ext2验证)i_block: 0x000018,说明该⽬录只占⽤了⼀个block,地址为0x18 * 1024=0x6000,这⾥也就是根⽬录的内容0x6000地址处内容如下:ext2的⽬录是⼀个特殊的⽂件,⽂件内容是多个结构的⽬录项,每个⽬录项是⽂件名和索引节点的集合。
对照ext2_dir_entry_2的结构,第⼀个⽬录项信息如下:inode : 2rec_len: 0x000Cname_len: 0x01file_type: 0x02,表⽰⽬录name: 0x2E,也就是“."因为上⼀个⽬录项rec_len是0x0C,所以下⼀个⽬录项地址为0x600C,对应⽬录项信息如下:inode: 2rec_len: 0x000Cname_len: 0x02file_type: 0x02,表⽰⽬录name: 0x2E,0x2E,也就是“..”下⼀个⽬录项地址为上⼀个⽬录项地址加上上⼀个⽬录项的rec_len,也就是0x600C + 0x0C = 0x6018,信息如下:inode: 0x0B,11rec_len: 0x14,20name_len: 0x0A,10file_type: 0x02, 2,表⽰⽬录name: 0x6C,0x6F, ...,也就是“lost+found”以此类推就可以找到所有根⽬录下的⽬录项。
Linux ext2
Linux ext2ext2文件系统是早期Linux发布版的基础,Linux默认直接支持的文件系统。
该文件系统非常优势,也是ext3文件系统的基础。
ext2文件系统和其他现代Unix 使用的文件系统非常相似,但更接近于BSD(Berkeley Software Distribution:Berkeley 软件分发版)系统所用的Berkeley Fast Filesystem。
ext2文件系统除了具有标准功能外,还支持一般Unix文件系统中所没有的高级功能,如设置文件属性、支持数据更新时同步写入、允许磁盘管理员在创建文件系统时选择逻辑数据块的大小、实现快速符号链接以及提供两种定期强迫进行文件系统工具等。
1.ext2文件系统的物理结构ext2文件系统像多数文件系统一样,建立在文件数据存放在数据中的前提下。
ext2文件系统中的数据块具有相同的长度,虽然不同的ext2文件系统的块长度可以不同,但是对于某个特定的ext2文件系统,它的块长度在创建的时候就已经确定了。
每一个文件的长度都会按照块取整,例如,存在一个文件1025字节,而一个块的大小为1024字节时,该文件就会占用两个1024字节的块,这就意味着平均每一个文件都有可能浪费一部分磁盘空间。
每个块包含了相同的信息如:超级块、块组描述结构、块位图索引节点、索引点表和数据块等内容,图4-2演示了ext2文件系统的物理结构。
图4-2 ext2物理结构2.块组的构造从图4-2中可看到每一个块组都重复保存着一些有关整个文件系统的关键信息,以及真正的文件和目录的数据块。
超级块包含有文件系统本身的大小和形式的基本信息,系统管理员可以利用这些信息使用和维护文件系统。
在安装文件系统时,系统只读取数据块组1中的超级块,将其放入内存直到该文件系统被卸载,超级块中包含了以下内容。
●块数用于确认安装的文件系统是否为ext2的超级块。
●修订级别这是文件系统的主版本号和次版本号。
13、LINUX EXT2文件系统的主要信息
EXT2文件系统的主要信息一、Boot Sector(启动扇区)1、每个文件系统最前面有一个启动扇区(可制作多重引导的环境),可安装引导加载程序,但是不是硬盘第一扇区。
二、Super Block主要信息:1.block/inode总量以及未使用/已使用的数量。
2.block/inode的大小3.文件系统的挂载时间,最后一次写入数据时间,最近一次检查磁盘的时间等文件系统的相关信息。
4.validbit数值:0或者1,0表示挂载,1表示没有被挂载。
三、Inode Table(Inode表格)存放inode的区域,每个文件对应一个inode号码。
主要数据:1.该文件的访问模式(r/w/x)2.文件的所有者与组3.文件的大小4.三种时间(atime mtime ctime)5.文件特殊权限。
如:SGID等6.该文件真正内容的指向(Block号)特点:1、inode的大小均固定为128bytes2、每个文件仅会占用一个inode3、单个文件的大小由inode的指向数及block大小决定4、读取:读取文件-->inode-->检查权限-->block号-->实际数据。
5、每条block号码记录用4bytes6、inode记录的block号码的区域定义为12个直接,1个间接,1个双间接,1个三间接。
四、Data Block放置文件实际内容数据。
EXT2支持的BLOCK的大小为:1KB 2KB 4KB每个block内最多只能放一个文件的数据。
如果单个文件大于block的的容量,则会占用多个block来存放。
如果单个文件小于blokc的容量,则只占用这一个,且该block中的剩余空间不会再被利用。
五、File System Description(文件系统描述说明)主要信息:记录每个block group的开始/结束的block号码。
superblock、bitmap、datablock、inodetable分别介于哪些block号之间。
ext2读取文件原理
ext2读取文件原理以ext2读取文件原理为题,本文将介绍ext2文件系统是如何读取文件的。
ext2是一种常用的Linux文件系统,被广泛应用于Linux 操作系统中。
我们需要了解一下ext2文件系统的基本结构。
ext2文件系统将存储设备划分为多个块组,每个块组都包含了若干个数据块和一些元数据。
元数据包括了超级块、块位图、inode位图和inode表等。
超级块记录了整个文件系统的重要信息,如块大小、块组大小、inode数量等。
块位图用于记录数据块的使用情况,而inode位图则用于记录inode的使用情况。
inode表中存储了每个文件的元数据信息,如文件类型、权限、大小、访问时间等。
每个文件和目录都对应一个inode。
当我们要读取一个文件时,首先需要找到该文件所在的inode。
我们可以通过目录来查找文件的inode。
每个目录都包含了一系列的目录项,每个目录项都对应一个文件或子目录。
目录项中记录了文件名和对应的inode号,通过遍历目录项,我们可以找到目标文件的inode。
找到目标文件的inode之后,我们就可以通过inode中的数据块指针来读取文件的内容。
ext2文件系统中的文件数据块被组织成一棵多级索引的树状结构。
inode中的数据块指针包括了直接块指针、一级间接块指针、二级间接块指针和三级间接块指针。
直接块指针直接指向文件的数据块,而间接块指针则指向一级、二级或三级块。
通过多级间接块指针的组合,我们可以寻址到任意数据块。
在读取文件时,我们首先通过直接块指针读取文件的直接数据块。
如果文件的大小超过了直接块的容量,那么我们需要通过一级间接块指针来读取更多的数据块。
一级间接块中存储了多个二级块的地址,通过二级间接块指针,我们可以读取更多的数据块。
同样地,如果文件的大小超过了一级间接块的容量,我们就需要通过二级间接块指针来读取更多的数据块。
二级间接块中存储了多个三级块的地址,通过三级间接块指针,我们可以再次读取更多的数据块。
Linux的Ext2文件系统详解
前述:Linux系统管理员很重要的任务之一就是管理好自己的磁盘文件系统,每个分区不可太大也不可以太小,太大会导致磁盘容量的浪费,太小会导致产生的文件无法存储的问题。
在Linux里面文件是由两部分数据组成,一部分是metadata,另一部分是data。
那么这些数据都存放在文件系统的什么地方呢?这就让我们必须得了解文件系统的Inode与Block 的基本原理了,而Linux最传统的磁盘文件系统使用的是Ext2,所以我们了解下它的内部原理。
第一部分:磁盘的组成和分区(基础)磁盘的机械部分:1、圆形的盘片(主要记录数据的部分)2、机械手臂与机械手臂上的磁头(可读写盘片上的数据)3、主轴马达,可以转动盘片,让机械手臂的磁头在盘片上读写数据磁盘的基本概念1、扇区是最小的物理存储单元(512bytes)2、将扇区组成一个园,那就是柱面,柱面是分区的最小单位3、第一个扇区最重要,里面有硬盘的主引导程序(MBR)占446bytes和分区表(partision tables)占64bytes。
4、目前流行的家用硬盘接口SATA和服务器硬盘接口SAS。
磁盘分区部分:1、主分区和扩展分区最多可以有4个(硬盘的限制)2、扩展分区最多只能有一个(操作系统限制)3、逻辑分区是由扩展分区分化出来的分区4、主分区和逻辑分区的内容可以被格式化,而扩展分区无法格式化第二部分:文件系统的基本特性我们都知道硬盘分区后都是需要格式化,之后操作系统才能使用该分区,为什么呢?这是因为各种操作系统的文件的属性和权限并不相同的,为了能够存放这些文件,因此将分区格式化,以成为操作系统能利用的系统格式。
文件系统通常会将两部分的数据分别放在不同的块,权限与属性放置到inode中,实际的数据放置到data block块中,另外还有一个超级块(superblock)会记录整个文件系统的整体信息,包括inode和block的总量、使用量、剩余量,以及文件系统的格式与信息。
在Linux操作系统里有Ext2、Ext3、Linuxswap和VFAT四种格式
在Linux操作系统⾥有Ext2、Ext3、Linuxswap和VFAT四种格式 Ext2: Ext2是GNU/Linux系统中标准的⽂件系统。
这是Linux中使⽤最多的⼀种⽂件系统,它是专门为Linux设计的,拥有极快的速度和极⼩的CPU占⽤率。
Ext2既可以⽤于标准的块设备(如硬盘),也被应⽤在软盘等移动存储设备上。
Ext3: Ext3是Ext2的下⼀代,也就是保有Ext2的格式之下再加上⽇志功能。
Ext3是⼀种⽇志式⽂件系统(Journal File System),
最⼤的特点是:它会将整个磁盘的写⼊动作完整的记录在磁盘的某个区域上,以便有需要时回溯追踪。
当在某个过程中断时,系统可以根据这些记录直接回溯并重整被中断的部分,重整速度相当快。
该分区格式被⼴泛应⽤在Linux系统中。
Linux swap: 它是Linux中⼀种专门⽤于交换分区的swap⽂件系统。
Linux是使⽤这⼀整个分区作为交换空间。
⼀般这个swap格式的交换分区是主内存的2倍。
在内存不够时,Linux会将部分数据写到交换分区上。
VFAT: VFAT叫长⽂件名系统,这是⼀个与Windows系统兼容的Linux⽂件系统,⽀持长⽂件名,可以作为Windows与Linux交换⽂件的分区。
linux操作系统中EXT2文件的组成
_
l块 l块I块}块… 组 o组 l组 2组 N I
l
超级 块 组块 块位 图 引位图 索 索线 表 数据块 描述表 图 1 硬 盘 、 区 、 组 的 组 成 分 块
Fi .1 Co po ii n o r rve,Zo ng a l c r up g m sto fha d d i ni nd b o k g o
第 3 3卷第 4 期 21 0 1年 O 4月
武
汉
工
程
大
学
学
报
V ol 3 NO. _3 4 A Dr 2 . O11
J W u a I s. Teh . hn nt c.
文 章 编 号 :6 4—2 6 ( 0 1 0 17 8 9 2 1 ) 4—0 9 0 4—0 3
一
致性检查时 , 就会将块组 0中的超级 块拷贝到其他
标 准文 件 系统 也 得 到 了 广泛 的 支 持 和 考 验. 精 其
巧 、 活 的 设 计 , 存 取 中小 文 件 时 的 性 能 非 常 灵 在 好 , 大地 满 足 了人 们 对 数 据 存 储 的要 求 . 时 , 极 同 e t 文 件 系 统也 是 其 后 继 e t x2 x 3和 e t 日志文 件 x4 系统 的 基 础 . 析 e t 剖 x 2文 件 系 统 , 深 入 理 解 对
l u i x操作 系统 中 E T2 n X 文件的组成
朱 颂
( . 汉大 学计算机 学 院 , 北 武汉 4 0 7 ;. 1武 湖 3 0 2 2 孝感 学 院计 算机 与信 息科 学 学院 , 北 孝感 4 2 0 ) 湖 3 0 0
Linux中的EXT系列文件系统格式详解
Linux中的EXT系列⽂件系统格式详解Linux⽂件系统常见的硬盘如上图所⽰,每个盘⽚分多个磁道,每个磁道分多个扇区,每个扇区512字节,是硬盘的最⼩存储单元,但是在操作系统层⾯会将多个扇区组成块(block),是操作系统存储数据的最⼩单元,通常是8个扇区组成4K字节的块。
对于Linux⽂件系统,需要考虑以下⼏点:⽂件系统需要有严格的组织形式,使⽂件能够以块为单位存储⽂件系统需要有索引区,⽅便查找⼀个⽂件分成的多个块存在了什么位置如果有⽂件近期经常被读写,需要有缓存层⽂件应该⽤⽂件夹的形式组织起来⽅便管理和查询Linux内核要在⾃⼰的内存⾥维护⼀套数据结构,保持哪些⽂件被哪些进程打开和使⽤Linux⾥⾯⼀切皆⽂件,都有以下⼏种⽂件(从ls -l结果的第⼀位标识位可以看出来):- 表⽰普通⽂件d 表⽰⽂件夹c 表⽰字符设备⽂件b 表⽰块设备⽂件s 表⽰套接字socket⽂件l 表⽰软链接Inode和块存储下⾯就以EXT系列格式为例来看⼀下⽂件是如果存在硬盘上的。
⾸先⽂件会被分成⼀个个的块,分散得存在硬盘上,就需要⼀个索引结构来帮助我们找到这些块以及记录⽂件的⼀些元信息,这就是inode,其中i代表index。
inode数据结构如下:struct ext4_inode {__le16 i_mode; /* File mode */__le16 i_uid; /* Low 16 bits of Owner Uid */__le32 i_size_lo; /* Size in bytes */__le32 i_atime; /* Access time */__le32 i_ctime; /* Inode Change time */__le32 i_mtime; /* Modification time */__le32 i_dtime; /* Deletion Time */__le16 i_gid; /* Low 16 bits of Group Id */__le16 i_links_count; /* Links count */__le32 i_blocks_lo; /* Blocks count */__le32 i_flags; /* File flags */union {struct {__le32 l_i_version;} linux1;struct {__u32 h_i_translator;} hurd1;struct {__u32 m_i_reserved1;} masix1;} osd1; /* OS dependent 1 */__le32 i_block[EXT4_N_BLOCKS];/* Pointers to blocks */__le32 i_generation; /* File version (for NFS) */__le32 i_file_acl_lo; /* File ACL */__le32 i_size_high;__le32 i_obso_faddr; /* Obsoleted fragment address */union {struct {__le16 l_i_blocks_high; /* were l_i_reserved1 */__le16 l_i_file_acl_high;__le16 l_i_uid_high; /* these 2 fields */__le16 l_i_gid_high; /* were reserved2[0] */__le16 l_i_checksum_lo;/* crc32c(uuid+inum+inode) LE */__le16 l_i_reserved;} linux2;struct {__le16 h_i_reserved1; /* Obsoleted fragment number/size which are removed in ext4 */__u16 h_i_mode_high;__u16 h_i_uid_high;__u16 h_i_gid_high;__u32 h_i_author;} hurd2;struct {__le16 h_i_reserved1; /* Obsoleted fragment number/size which are removed in ext4 */__le16 m_i_file_acl_high;__u32 m_i_reserved2[2];} masix2;} osd2; /* OS dependent 2 */__le16 i_extra_isize;__le16 i_checksum_hi; /* crc32c(uuid+inum+inode) BE */__le32 i_ctime_extra; /* extra Change time (nsec << 2 | epoch) */__le32 i_mtime_extra; /* extra Modification time(nsec << 2 | epoch) */__le32 i_atime_extra; /* extra Access time (nsec << 2 | epoch) */__le32 i_crtime; /* File Creation time */__le32 i_crtime_extra; /* extra FileCreationtime (nsec << 2 | epoch) */__le32 i_version_hi; /* high 32 bits for 64-bit version */__le32 i_projid; /* Project ID */};其中__le32 i_block[EXT4_N_BLOCKS]存储了到数据块的引⽤,EXT4_N_BLOCKS定义如下:#define EXT4_NDIR_BLOCKS 12#define EXT4_IND_BLOCK EXT4_NDIR_BLOCKS#define EXT4_DIND_BLOCK (EXT4_IND_BLOCK + 1)#define EXT4_TIND_BLOCK (EXT4_DIND_BLOCK + 1)#define EXT4_N_BLOCKS (EXT4_TIND_BLOCK + 1)在ext2和ext3中i_block前12项存储了直接到数据块的引⽤,第13项存储的是到间接块的引⽤,在间接块⾥存储着数据块的位置,以此类推,第14项⾥存储着⼆次间接快的位置,第15项⾥存储着三次间接块的位置,如下图所⽰:不难看出,对于⼤⽂件,需要多次读取硬盘才能找到相应的块,在ext4中就提出了Extents Tree来解决这⼀问题,其核⼼思想就是把连续的块⽤开始位置加块的个数来表⽰,不再是⼀个⼀个去记录每⼀个块的位置,这样就能节约存储空间。
EXT2文件系统
EXT2⽂件系统对⽂件系统⽽⾔,⽂件仅是⼀系列可读写的数据块。
⽂件系统并不需要了解数据块应该放到物理介质上什么位置。
这些都是设备驱动的任务。
⽆论何时,只要⽂件系统需要从包含它的块设备中读取信息或数据,它就将请求底层的设备驱动读取⼀个基本块⼤⼩整数倍的数据块。
EXT2⽂件系统将它所使⽤的逻辑分区划分成数据块组。
每个数据块组都将那些对⽂件系统完整性最重要的信息复制出来,同时将实际⽂件盒⽬录看做信息与数据块。
罗即⽂件系统管理的是⼀个逻辑空间,这个逻辑空间就像⼀个⼤的数组,数组的每个元素就是⽂件系统操作的基本单位——逻辑块。
逻辑块是从0开始编号的,⽽且,逻辑块是连续的,逻辑块相对的是物理块。
通常,EXT2的物理块占⼀个或⼏个连续的扇区。
⼀般⽽⾔,只有块组0的超级块才读⼊内存,其他块组的超级块仅仅作为备份。
在系统运⾏期间,要将超级块复制到内存系统缓冲区。
块位图和节点位图在EXT2⽂件系统中,采⽤位图描述数据块和索引节点的使⽤情况,每个块组中占⽤两个块,即⼀个⽤来描述该数据块的使⽤情况,另⼀个描述该组索引节点的使⽤情况。
这两个块分别称为数据位图块和索引节点位图块。
数据位图块中的每⼀位表⽰该块组中的每⼀个块的使⽤情况,如果为0,则表⽰相应数据块空闲,如果是1,则表⽰已分配。
索引节点表每个块组中的索引节点都存储在各⾃的索引节点表中,并且按索引节点号依次存储。
索引节点表通常占好⼏个数据块,索引节点表所占的块使⽤时也想普通的数据块⼀样被调⼊块⾼速缓存。
EXT2整个磁盘的逻辑结构如图所⽰:EXT2⽂件系统的⼏个数据结构1 EXT2超级块超级块中包含了描述⽂件系统基本尺⼨和形态的信息。
⽂件系统管理器利⽤他们来使⽤和维护⽂件系统。
EXT2超级块是⽤来描述EXT2⽂件系统整体信息的数据结构,是EXT2的核⼼所在。
超级块经函数ext2_fill_supter读⼊后,⼜在内存中建⽴⼀个映像super_block.u.ext2_sb_info结构。
linux系统文件的构成
linux系统文件的构成
Linux系统文件的构成是指Linux操作系统中文件的组织方式和结构。
Linux系统的文件系统采用了层次结构的方式,主要由以下几个部分组成:
1. 根目录(/):是整个文件系统的起点,所有的文件和目录都从这里开始。
根目录下包含了许多子目录,包括/usr、/bin、/etc
等等。
2. /usr目录:包含用户软件的大部分内容,如应用程序、库文件等。
/usr目录通常包含bin、lib、include、share等子目录。
3. /bin目录:包含基本的系统命令,如ls、cp、mv等。
4. /etc目录:包含系统的配置文件,如网络配置文件、用户账号信息等。
5. /dev目录:包含设备文件,用于访问硬件设备,如磁盘、打印机、鼠标等。
6. /lib目录:包含系统库文件,用于支持系统中的各种功能,如网络、文件系统等。
7. /tmp目录:临时文件目录,用于存放系统和应用程序产生的临时文件。
8. /var目录:包含系统和应用程序产生的变化文件,如日志文件等。
Linux系统文件的构成是一个复杂的体系,不同的目录和文件在系统的运行中扮演着不同的角色和作用。
了解Linux系统文件的构成
对于Linux系统管理员和开发人员来说是非常重要的。
linux操作系统中EXT2文件的组成
linux操作系统中EXT2文件的组成
朱颂
【期刊名称】《武汉工程大学学报》
【年(卷),期】2011(033)004
【摘要】EXT2文件系统是linux操作系统的重要组成部分,其核心由超级块、组块描述表、索引节点表组成.通过源代码,剖析了这几个关键部分的数据结构和作用.介绍了linux操作系统寻找文件的过程.
【总页数】3页(P94-96)
【作者】朱颂
【作者单位】武汉大学计算机学院,湖北武汉430072;孝感学院计算机与信息科学学院,湖北孝感432000
【正文语种】中文
【中图分类】TP316
【相关文献】
1.基于嵌入式Linux的Ext2根文件系统制作分析 [J], 王恒亮;王俊超
2.对Ext2文件系统的研究 [J], 谈颢阳
3.Linux下Ext2文件系统的精剪与优化设计 [J], 周俊杰;柯跃
4.基于EXT2文件系统的Linux文件恢复 [J], 吉治钢;蔡利栋
5.EXT2文件系统格式化程序的设计与实现 [J], 刘晋;任洪敏;胡巍;陈天伦;沈俞超因版权原因,仅展示原文概要,查看原文内容请购买。
Linux 文件系统ext2 基本结构_Linux 编程基础_[共2页]
98 根目录/的路径。
当前目录指当前进程或者当前用户所处的目录位置。
Linux 中用“.”表示当前目录本身,而“..”表示当前目录的上级目录。
假设用户当前处于mydirA 目录中,“.”表示/mydirA 而“..”表示根目录/,使用mydirC/fileA.txt 可访问fileA.txt 文件,而如果执行ls mydirB/fileB.txt 命令,则系统提示找不到文件mydirB/fileB.txt ,这是因为在当前目录mydirA 下没有目录mydirB 。
在此情况下,可使用绝对路径/mydirB/fileB.txt 或者../mydirB/fileB.txt 。
目录的内容永远不会为空,总是包含“.”和“..”两个目录项。
4.3.2 Linux 文件系统ext2基本结构ext2是Linux 所支持的文件系统中的一种。
我们通过介绍ext2了解Linux 文件系统的基本原理。
操作系统将硬盘上的分区分成同样大小的块进行管理,并为每个磁盘块编号。
这就使得磁盘上的数据从逻辑上看类似于数组的组织方式,Linux 又将块组织为同样大小的块组,另外,文件系统相关数据是如何组织的呢?图4.9是ext2文件系统的结构示意图。
图4.9 ext2文件系统结构示意图引导块(Boot Block )的大小为1k 字节,它存储了磁盘的分区信息及启动信息,操作系统在启动时读取其中内容,文件系统不使用引导块。
每个块组又包括如下内容。
• 超级块(Super Block ):每个块组中的第一个数据块,这个块存放整个文件系统本身的信息,包括inode 数、块数、保留块数、空闲块数、空闲inode 数、第一个数据块位置、块长度、每个块组块数、每个块组inode 数,以及安装时间、最后一次写时间、文件系统状态信息等。
超级块十分重要,若它损坏,则会丢失整个分区的信息,因此每个块组中都有一个超级块作为备份,它在内存中只加载一次。
• 组描述符表(Group Descriptor Table ):由很多块组描述符组成,整个分区分成多少个块组就对应有多少个块组描述符,因此它保存在每个块组中以防止数据丢失。
Linux_ext2ext3文件系统介绍
Linux_ext2ext3文件系统介绍Linux_ext2/ext3文件系统介绍Linux ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表。
索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。
一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一一个元素对应。
系统给每个索引节点分配了一个号码,也就是该节点在数组中的索引号,称为索引节点号。
linux文件系统将文件索引节点号和文件名同时保存在目录中。
所以,目录只是将文件的名称和它的索引节点号结合在一起的一张表,目录中每一对文件名称和索引节点号称为一个连接。
对于一个文件来说有唯一的索引节点号与之对应,对于一个索引节点号,却可以有多个文件名与之对应。
因此,在磁盘上的同一个文件可以通过不同的路径去访问它。
Linux缺省情况下使用的文件系统为Ext2,ext2文件系统的确高效稳定。
但是,随着Linux系统在关键业务中的应用,Linux文件系统的弱点也渐渐显露出来了:其中系统缺省使用的ext2文件系统是非日志文件系统。
这在关键行业的应用是一个致命的弱点。
本文向各位介绍Linux下使用ext3日志文件系统应用。
Ext3文件系统是直接从Ext2文件系统发展而来,目前ext3文件系统已经非常稳定可靠。
它完全兼容ext2文件系统。
用户可以平滑地过渡到一个日志功能健全的文件系统中来。
这实际上了也是ext3日志文件系统初始设计的初衷。
Ext3日志文件系统的特点1、高可用性系统使用了ext3文件系统后,即使在非正常关机后,系统也不需要检查文件系统。
宕机发生后,恢复ext3文件系统的时间只要数十秒钟。
2、数据的完整性:ext3文件系统能够极大地提高文件系统的完整性,避免了意外宕机对文件系统的破坏。
在保证数据完整性方面,ext3文件系统有2种模式可供选择。
其中之一就是“同时保持文件系统及数据的一致性”模式。
linux文件系统
EXT2文件系统介绍1.分区部分基本知识:扇区是最小的物理存储单位,每个扇区512bytes;将扇区组成一个圆,那就是柱面,柱面是分区最小单位;第一个扇区最重要,里面有硬盘主引导记录(Masterbootrecord, MBR)及分区表,其中MBR占446bytes,分区表占64bytes;主分区与扩展分区最多可以有四个(硬盘限制);扩展分区最多只能有一个(系统限制)。
2.ext2文件系统分区格式化为可被挂载的文件系统,文件系统会将文件权限、属性等内容存放在inode 中,将文件数据存放在data block中,另外每个文件系统还存在一个superblock,用来记录文件系统inode总量,block总量以及使用量、剩余量等文件系统相关信息。
super block:记录文件系统的整体信息;inode:记录文件的属性,一个文件占用一个inode,同时来记录此文件的数据的block号码;block:实际记录文件的内容。
一个block内只能存放一个文件的数据。
●inode:1)每个inode大小均固定为128btyes;2)每个文件只能占用一个inode,因此文件系统的最大文件数量与inode数量有关;3)每个inode有12个直接指向,1个间接指向,1个双间接,一个三间接。
●superblock1)block与inode的总量,使用量,未使用量;2)block与inode的大小;3)文件系统的挂载时间、最近写入时间、最近检验磁盘时间等。
3.文件系统读取实例(读取/etc/passwd)1)通过/的挂载点信息,找到根目录的挂载inode号码(2),inode具有的权限让我们可以读取该block内容。
2)读取block内容,查找该内容有etc/目录的inode号码。
3)利用etc/的inode号码查找etc的block;4)在etc/的block中查找passwd的inode号码;5)根据inode号码以及其文件属性描述确定我们是否可以读取block中的相关内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
d.读取file.c文件的内容.
2 结 语
尽管EXT2文件系统设计目标明确,层次分
明,但是仍然有不少缺陷,例如对大文件的读写性
能,对文件的灾难恢复等,这些都不在本篇探讨范
围内.在用户要求不高,处理数据量不大的情况
下,EXT2文件系统依然是最好的选择.
参考文献:
function on these important parts by source code are analyzed. A process about Linux search a file is
shown.
Key words: super block; group descriptor; inode; EXT2 file system
旦达到最大次数,将进行文件系统检测.
1.2 块组描述符表
每一个块组都有一个块组描述符对应,若干
个块组描述符集中在一起按顺序存放,就是块组
描述符表.在分区中的地位仅次于超级块,也是分
区的全局数据信息,作用是描述整个分区中块组、
索引节点和数据块的使用情况,在每个块组中也
都有一份拷贝.bg block bitmap和bg inode
在linux内核源代码中超级块的数据结构定
义是ext2 super block,超级块的结构见图2,其结
构体较长,具体字段不罗列出来.
超级用户保留块(s r blocks count)字段是
为超级用户保留的总块数.当硬盘分区被其他用
户有意或无意的填满后,将无法登陆.超级用户则
可以利用这些保留的空间登陆,编辑配置文件,解
统会分配至少一个索引节点和相对于该文件大小
的数据块给文件.索引节点的数量是一个固定值,
其多少由格式化时的参数决定,默认两个块分配
一个索引节点.如果索引节点用完即便该分区还
有空间,也不能保存文件.
重点要提出的是ext2 inode结构中i block
[Ext2 N BLOCKS][4]字段,该字段保存了文件在
[1] Daniel P B,Marco C.深入理解Linux内核[ M].陈
莉君,冯锐,牛欣源,译.北京:中国电力出版社,
2001.
[2] 包怀忠.ext2文件系统分析[ J].计算机工程与设计,
2005,26(4):1022- 1024.
[3] 徐虹,张钦.EXT2文件系统的分析与研究[ J].成都
第33卷第4期2011年04月武 汉 工 程 大 学 学 报J. Wuhan Inst. Tech.Vol.33 No.4Apr. 2011
收稿日期:2010- 11- 29
作者简介:朱 颂(1982-),男,湖北云梦人,硕士研究生.研究方向:操作系统.
文章编号:1674- 2869(2011)04- 0094- 03
图2 超级块的结构
Fig.2 Structure of super block
统将最后多余的块划分到一个块组中,所以最后计算
结果向上取整.
块组中索引节点数(s inodes per group)也
很重要.在寻找索引节点的过程中,通过此字段,
可以计算出该索引节点所在的块组号:floor((ino-
信息工程学院报,2007,22(3):330- 333.
[4] 唐靖飚,周良源.UNIX平台下C语言高级编程指南
[M].北京:宇航出版社,2000.
[5] 郭学理,韦智,潘松.Linux的EXT2文件系统[ J].计
算机应用研究,2001,18(5):128- 130.
Construction of EXT2 File System in Linux operation system
系统读取文件/root/file.c时的过程:
a.系统从根目录信息可以得到/root目录的
索引节点号,并且读取索引节点号的内容,得到/
root目录的属性和数据块中的具体位置.
b.读取/root目录数据块内容,得到file.c文
件的索引节点号.
c.读取file.c文件的索引节点号,得到file.c
分布情况以及各种组成结构的尺寸、数量.一旦超级
块损坏,操作系统将无法读取该分区的信息,整块分
区的数据就会丢失.当有程序对ext2文件系统执行
一致性检查时,就会将块组0中的超级块拷贝到其他
块组中,这些多的拷贝信息可以帮助系统恢复分区的
信息,从而减少损失.正常情况下,linux系统只会读
取块组0中包含的超级块.
数据块中的具体位置.通常Ext2 N BLOCKS的
值是15[5],此字段的i block[0]~ i block[11]是
直接保存数据块的地址,i block[12]、i block[13]
和i block[14]分别是一级、二级和三级指针,见图
4.这样一个索引节点可以指向文件的大小是12*
图4 i block字段的作用
Fig.4 Function of i block
1.4 目录结构
在linux系统上,目录也是一种文件.目录内
保存着其他文件或目录的名称和索引节点号.当
建立一个目录时,系统会分配一个索引节点与至
少一个数据块给该目录,见图5.
图5 系统读取文件的过程
Fig.5 Process of read file
果值是0,块的大小就是1024 bytes,这就是最小
块.通常这个字段的值是2,块大小为4096 bytes,
正好是4 K.
块总数(s blocks count)和每个块组中的块数(s
blocks per group)两字段可以计算出块组总数ceil((s
blocks count- s first data block- 1)/s blocks per
group)[2].s blocks count字段里面包含了整个分区
所有块,包括描述信息所占用的块,例如:超级块、块
组描述符、位图块都会在分区上占用一定数量的块,
而这些块不在块组管理范围内,所以要减去s first
data block.分区划分块组时最后可能多出一些块,系第4期朱 颂:linux操作系统中EXT2文件的组成95
Abstract: The EXT2 file system is an important part of the Linux operating system, the key part
consists of the super block, the group descriptor table and the inode table. The data structure and
本文编辑:陈锦华
1)/s inodes per group)和在该块组中的偏移量:
(ino–1)%s inodes per group[2],这样就可以迅
速定位索引节点.
挂载计数(s mnt count)表示文件系统从最
近一次完整校验后被安装的次数,最大挂载计数
(s max mnt count)记录了能够挂载最大次数,一
block+(block/4)* block+(block/4)2* block+
(block/4)3* block,如果block大小为4K,那么指
向的这个文件相当大了,但实际上该结构中i size
字段限制了索引节点指向文件的大小,该字段是
一个无符号的32位整数,所以最大文件只能是
232= 4G.96 武汉工程大学学报第33卷
table)和数据块(data block)[1].
图1 硬盘、分区、块组的组成
Fig.1 Composition of hard drive, Zoning and block group
1.1 超级块
超级块是硬盘分区中最重要的结构,是一个分区
的全局数据信息,描述文件系统的目录和文件的静态
bitmap字段分别指出了块位图(block bitmap)和
索引节点位图(inode bitmap)第一个块的位置.
硬盘格式化之后,硬盘上的数据块和索引节
点的数量就确定下来,是一个固定值,只要存放文
件,就会占用数据块和索引节点.块位图和索引节
点位图的作用就是表示数据块和索引节点使用的
巧、灵活的设计,在存取中小文件时的性能非常
好,极大地满足了人们对数据存储的要求.同时,
ext2文件系统也是其后继ext3和ext4日志文件
系统的基础.剖析ext2文件系统,对深入理解
linux操作系统的文件存储方式很有帮助.
1 ext2文件系统整体结构
硬盘首先分区,然后格式化,才能使用.格式化的
linux操作系统中EXT2文件的组成
朱 颂1,2
(1.武汉大学计算机学院,湖北武汉430072;2.孝感学院计算机与信息科学学院,湖北孝感432000)
摘 要:EXT2文件系统是linux操作系统的重要组成部分,其核心由超级块、组块描述表、索引节点表组成.
通过源代码,剖析了这几个关键部分的数据结构和作用.介绍了linux操作系统寻找文件的过程.
过程会在硬盘上建立很多块,为了管理这些块,文件
系统将其分组,每个组称为块组(block group).每个
块组又由六部分组成(见图1):超级块(super block)、
块组描述表(group descriptor table)、块位图(block
bitmap)、索引位图(inode bitmap)、索引表(inode