Ext2格式分析

合集下载

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文件系统的逻辑结构和物理结构的映射过程进行深入探讨,我对文件系统的工作原理有了更深入的理解。

在实际应用中,对文件系统的深入理解能够帮助我们更好地进行文件管理和存储空间的优化,提高系统的性能和稳定性。

SD卡Ext2格式分区详细图解教程+分区

SD卡Ext2格式分区详细图解教程+分区

pqmagic9分区方法的优势:这个分区方法,有一定电脑基础的人都会很熟悉,就是在电脑上用pqmagic进行无损分区而已,比在手机上recover分区,或者用固件管家那些分区方式好很多,一个是速度较快,另一个最重要的是可以无损分区!不会破坏你卡上原有的数据,而是把卡剩余的空间划一块出来做新分区,这对于我这种卡上存了7g内容的而又懒得给卡备份的人来说,是最好的选择!注意,尽量采用pqmagic 9以上版本,9以下版本不支持ext分区!pqmagic9中文绿色版软件下载连接见下:/file/f7863bc968pqmagic9分区的原理,这点希望大家理解,做起来就不会懵然了:分区原理其实很简单,就是利用pqmagic软件,从你的卡上(原有的整张卡一般就是fat32格式)上切出一部分的空间,这个新切出来的空间将是空白的,没有任何格式,然后再利用pqmagic软件把这个空间格式化成ext3。

具体分区过程(这里的电脑采用的是win xp sp3系统,win 7系统没有试验过,不多说):好,下面开始正式分区教程,最好采用手机磁盘模式接电脑分区,如果用读卡器,也最好不要笔记本的读卡器(采用读卡器的筒子,直接从下面第4步开始看)。

1、首先在手机上开启未知源和usb调试模式(设置--应用程序--未知源打勾,设置--应用程序--开发--usb调试模式打勾)2、把usb线插在机箱后面的主板usb接口上!另一端对准你的小6,插进去吧3、手机屏幕亮起,选择磁盘模式连接,点击完成4、插上后等一会儿,直到你的电脑上出现了新的可移动磁盘,并且可以正常进入可移动磁盘(即你的手机tf卡)进行读写操作(如果是读卡器,注意不要误开了写保护开关),即可开始下一步5、这步很重要,请一定做一下,一定程度上避免了各种问题的出现:在你的电脑上打开我的电脑---找到新出现的可移动磁盘---右键点击之---属性--工具--开始检查---勾选第一项自动修复(可视情况勾选第二项,不过那样会非常慢),分区之前先用这个工具修复一下你的磁盘逻辑错误,可以大幅降低各种问题出现的几率,不要存在侥幸心理,卡用久了,几乎每个人都会有磁盘逻辑错误!!!6、下载上面那个pqmagic9中文绿色版,解压后是一个单独文件,直接点击运行7、稍等进入pqmagic界面,我这里是一张8g卡,所以显示7.6g是正常的,分区格式是fat32,标准的windows格式8、右键点击logical disk(是右键点击htc android phone usb device下面那个logical disk,千万别弄错了,弄错了就是格式化你的硬盘!!!郁闷,就这么半天时间我就看到居然有三个人选了对硬盘做重分区,都没带眼镜是吧?),出现菜单,选择移动/调整分区大小,点击之,,,如果没有出现移动/调整分区大小,需要事先完整格式化一下整个sd卡即可出现这个命令,不过一般就不建议用pq去分这个卡了,兼容性不太好,建议换用别的方法分区9、出现界面后,调整free space after 这里为你想要的数值,根据你的卡的大小来设定,建议不要少于256M(256M估计可供150个中小型软件使用没问题,我这里是设置了500M,我是8g卡嘛),这个数值可能不会准确,差不多就行了,同时保持free space before为0不然会有浪费,完成后点“是”10、右键点击新出现的unallocated,选择创建分区11、在出现的界面上选择“为新分区选择文件系统”,选择“linux ext3”,其他什么都不要改动(见图),特别是盘符,保持默认为“无”,不要手贱设置了一个盘符哦,然后选“是”12、点击绿色的勾,等待,如果有防火墙或杀毒软件跳出来报错,选择允许即可(见图),进度条走后即可完成,有倒计时显示的不要着急,,,完成后,点击close关闭,退出pqmagic9即可解释一下这个绿色的勾,前面你所做的操作,其实都并没有真正执行,而是被记录成了一个步骤,只有按下绿色勾后才会真正执行,所以如果前面有操作失误等情况不要紧,直接退出pqmagic9再次进入重来即可点下绿色勾后,如果有杀毒软件或防火墙报错,选择允许!这是pq在给你分区,不是病毒或木马!至此分区过程结束,我的卡上现在共有7.1g的数据区和500M的ext文件区,这个500M就是为app2sd准备的,,,用这张卡拷贝2.2的wildpuzzle rom,刷完机后,即可自动开启app2sd 系统!你的机身内存空间将前无所有的巨大无比了!!!分区后,这样检验你的成果:正确分区后的效果如下,如果你进行了上述步骤后,不确定是否正确分区,可以先拔下手机的usb线,然后过会儿再插上线,再次以磁盘模式接上电脑,用pqmagic9看一下你的sd卡,如果有显示linux ext3分区即为正确分区,如下图所示:若有不明白可查看原帖http://www.**.com/bbs/thread-623628-1-1.html,发此贴,一是方便小白轻松掌握分区,二是方便自己收藏,请大家多多支持!!。

Linux系统ext2与ext3文件系统的区别与转换

Linux系统ext2与ext3文件系统的区别与转换
ext2与ext3文件系统的区别与转换
ext2和ext3是Linux比较旧的文件系统, 在Linux 7中支持的文件系统已经是 “xfs”,但是为了知识的衔接性,也为 了更深的认识文件系统之间的差别有必 要认识一下这两个文件系统。 这两个文件系统的格式是相同的,不 同的是在ext3文件系统中在硬盘的后面 留出一块磁盘空间来存放日志(journal) 记录。
全部消失。 如果你接手一个很重要的Linux系统, 而这个Linux系统的文件系统还是很老的 ext2,而为了提高性能还要保留原来的 数据就只能使用命令tune2fs命令(在线 转换文件系统ext2→ext3)了。
除了使用“-j”选项创建ext3文件系 统之外,可以直接使用mkfs.ext3 设备名
在开机时Linux系统都会检查每个文件 系统的Valid bit,值如为1则直接挂载该 文件系统,而如果为0值,则系统会扫描 这个文件系统(硬盘分区)查找损坏的 数据,如果这个硬盘分区很大,扫描时 间会很长。 1扫描
0不扫描 由于ext3文件系统有日志机制,开机 时系统会先检查日志中的信息,检查日
创建ext3文件系统。
journal=”日志”
使用命令dumpe2fs /dev/sdc1 | more 可以看到成功创建ext3文件系统。
二、在ext3格式文件系统上,数据写 入硬盘的操作过程为: ⑴数据同样先写 入缓冲区 ① ⑵当数据写入 缓冲区 (内存) 缓冲区满时,先通知 ③ 日志 ext3 文件 ⑶通知日志之后 ② ④ 系统 数据才会写入硬盘中 日志 ⑷数据写入硬盘后,系统 再通知日志数据已经写入硬盘。
三、日志机制 在ext2和ext3中,文件系统的格式是 一样的,不一样的地方是ext2没有日志 机制,而ext3有日志机制。 对于ext2,由于它没有日志机制,在 Linux使用Valid bit标志位来记录系统在 关机之前该文件系统是否已经卸载。因 每一个文件系统都有一个自己的Valid bit 。并且,Valid bit的值为1,则表示这个 文件系统已经卸载,而其值为0,则表示 这个文件系统没有正常关机。

磁盘格式分析Ext2格式分析

磁盘格式分析Ext2格式分析

Ext2格式分析Ext2的一般特征VFS主要是提供一个系统调用接口,然后将相关文件系统对象与具体的文件系统串联起来。

从本文开始,我们将选择一个具体的文件系统进行研究,这个文件系统就是第二扩展文件系统(Ext2)。

ext2是 Linux所固有的,事实上已在每个Linux系统中得以使用此外,Ext2在对现代文件系统的高性能支持方面也显示出很多良好的实践性。

Ext2文件系统具有以下一般特点:1、当创建Ext2文件系统时,系统管理员可以根据预期的文件平均长度来选择最佳的块大小(从1024B——4096B)。

例如,当文件的平均长度小于几千字节时,块的大小为1024B是最佳的,因为这会产生较少的内部碎片——也就是文件长度与存放块的磁盘分区有较少的不匹配。

另一方面,大的块对于大于几千字节的文件通常比较合合适,因为这样的磁盘传送较少,因而减轻了系统的开销。

2、当创建Ext2文件系统时,系统管理员可以根据在给定大小的分区上预计存放的文件数来选择给该分区分配多少个索引节点。

这可以有效地利用磁盘的空间。

3、文件系统把磁盘块分为组。

每组包含存放在相邻磁道上的数据块和索引节点。

正是这种结构,使得可以用较少的磁盘平均寻道时间对存放在一个单独块组中的文件并行访问。

4、在磁盘数据块被实际使用之前,文件系统就把这些块预分配给普通文件。

因此当文件的大小增加时,因为物理上相邻的几个块已被保留,这就减少了文件的碎片。

5、支持快速符号链接。

如果符号链接表示一个短路径名(小于或等于60个字符),就把它存放在索引节点中而不用通过由一个数据块进行转换。

此外,Ext2还包含了一些使它既健壮又灵活的特点:1、文件更新策略的谨慎实现将系统崩溃的影响减到最少。

我们只举一个例子来体现这个优点:例如,当给文件创建一个硬链接时,首先增加磁盘索引节点中的硬链接计数器,然后把这个新的名字加到合适的目录中。

在这种方式下,如果在更新索引节点后而改变这个目录之前出现一个硬件故障,这样即使索引节点的计数器产生错误,但目录是一致的。

EXT2、EXT3、EXT4、XFS、GPT详解

EXT2、EXT3、EXT4、XFS、GPT详解

EXT2、EXT3、EXT4、XFS、GPT详解原创:运维老司机小柒博客7月18日EXT2与EXT3区别Linux之前缺省情况下使用的文件系统为Ext2,ext2文件系统的确高效稳定。

但是,随着Linux系统在关键业务中的应用,Linux文件系统的弱点也渐渐显露出来了:其中系统缺省使用的ext2文件系统是非日志文件系统。

这在关键行业的应用是一个致命的弱点,Ext3文件系统是直接从Ext2文件系统发展而来,目前ext3文件系统已经非常稳定可靠。

它完全兼容ext2文件系统。

用户可以平滑地过渡到一个日志功能健全的文件系统中来。

这实际上了也是ext3日志文件系统初始设计的初衷。

1) ext3和ext2的主要区别在于,ext3引入Journal(日志)机制,Linux内核从2.4.15开始支持ext3,它是从文件系统过渡到日志式文件系统最为简单的一种选择,ext3提供了数据完整性和可用性保证。

2) ext2和ext3的格式完全相同,只是在ext3硬盘最后面有一部分空间用来存放Journal的记录;3) 在ext2中,写文件到硬盘中时,先将文件写入缓存中,当缓存写满时才会写入硬盘中;4) 在ext3中,写文件到硬盘中时,先将文件写入缓存中,待缓存写满时系统先通知Journal,再将文件写入硬盘,完成后再通知Journal,资料已完成写入工作;5) 在ext3中,也就是有Journal机制里,系统开机时检查Journal的内容,来查看是否有错误产生,这样就加快了开机速度;EXT3日志文件系统的特点1、高可用性系统使用了ext3文件系统后,即使在非正常关机后,系统也不需要检查文件系统。

宕机发生后,恢复ext3文件系统的时间只要数十秒钟。

2、数据的完整性ext3文件系统能够极大地提高文件系统的完整性,避免了意外宕机对文件系统的破坏。

在保证数据完整性方面,ext3文件系统有2种模式可供选择。

其中之一就是"同时保持文件系统及数据的一致性"模式。

EXT2的文件系统探析

EXT2的文件系统探析

EXT2的文件系统探析硬盘组成与分割首先说明一下磁盘的物理组成,整颗磁盘的组成主要有:∙圆形的磁盘盘(主要记录数据的部分);∙机械手臂,与在机械手臂上的磁盘读取头(可擦写磁盘盘上的数据);∙主轴马达,可以转动磁盘盘,让机械手臂的读取头在磁盘盘上读写数据。

从上面我们知道数据储存与读取的重点在于磁盘盘,而磁盘盘上的物理组成则为(假设此磁盘为单盘片,磁盘盘图标请参考下图:扇区(Sector)为最小的物理储存单位,每个扇区为 512 bytes;将扇区组成一个圆,那就是磁柱(Cylinder),磁柱是分割槽(partition)的最小单位;第一个扇区最重要,里面有:(1)主要启动区(Master boot record, MBR)及分割表(partition table),其中 MBR 占有 446 bytes,而 partition table 则占有 64 bytes。

各种接口的磁盘在Linux中的文件名分别为:/dev/sd[a-p][1-15]:为SCSI, SATA, U盘, Flash闪盘等接口的磁盘文件名;/dev/hd[a-d][1-63]:为 IDE 接口的磁盘文件名;复习完物理组成后,来复习一下磁盘分区吧!所谓的磁盘分区指的是告诉操作系统『我这颗磁盘在此分割槽可以存取的区域是由 A 磁柱到 B 磁柱之间的区块』,如此一来操作系统就能够知道他可以在所指定的区块内进行文件数据的读/写/搜寻等动作了。

也就是说,磁盘分区意即指定分割槽的启始与结束磁柱就是了。

那么指定分割槽的磁柱范围是记录在哪里?就是第一个扇区的分割表中啦!但是因为分割表仅有64bytes而已,因此最多只能记录四笔分割槽的记录,这四笔记录我们称为主要 (primary) 或延伸 (extended) 分割槽,其中扩展分配槽还可以再分割出逻辑分割槽 (logical) ,而能被格式化的则仅有主要分割与逻辑分割而已。

最后,我们再将第三章关于分割的定义拿出来说明一下啰:主要分割与扩展分隔最多可以有四笔(硬盘的限制)扩展分配最多只能有一个(操作系统的限制)逻辑分割是由扩展分配持续切割出来的分割槽;能够被格式化后,作为数据存取的分割槽为主要分割与逻辑分割。

EXT2 在磁盘及内存中的结构

EXT2 在磁盘及内存中的结构

在这里我们先了解一下磁盘的寻址方式:
■ 下面我们对分区表项结构进行一个简单的说明。
硬盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘 片,不同容量硬盘的盘片数不等。每个盘片有两面,都可 记录信息。盘片被分成许多扇形的区域,每个区域叫一个扇区,每个扇区 可存储 128×2 的 N 次方( N = 0.1.2.3 )字节信息。在 DOS 中每扇区是 128×2 的 2 次方= 512 字节,盘片表面上以盘片中心为圆心 ,不同半径的同心圆称为磁道。硬盘中,不同盘片相同半径 的磁道所组成的圆柱称为柱面。磁道与柱面都是表示不同半径的圆,在许 多场合,磁道和柱面可以互换使用,
Boot block block group ……
block group n
Super block
group data descriptor block bitmap
inode bitmap
inode table
data blocks
超级块记录着一个分区的整体信息,例如这个分区上有多少个 inode ,多少个组,多少个数据块,多少个空闲块等。组描述 符记录了这个组中的 inode 数量,空闲块数量等信息。数据块 bitmap 和 inode bimap 分别是数据块的 inode 的位图。每一 个 bit 表示一个块或一个 inode 的状态。这样假设数据块 bitmap 是 N 个字节。那么最多只能有 8*Nge 数据块。每一 个分区中,只要有一个数据块和一个组描述符就可以了。但是 实际上,一个分区上有多个组,每一个组都有一个超级块和组 描述符。磁盘检测工具 e2fsck 会把第一个超级块复制到各个 组中,以后当 e2fsck 检测到某些错误时,可以根据备份的超 级块来恢复。
磁盘控制器通过磁头号,柱面号,扇区号来对扇区进行寻 址的,而逻辑扇区号,就是把全部的扇区看做是一个线性地址 空间上的扇区编号。 在进行读写时,磁盘控制器首先需要根据指定的磁头号, 柱面号,扇区号控制磁头移动到指定的磁道,这被称为寻道时 间。在定位好磁道后,还有等待盘片的相关扇区旋转到磁头下 面,这被称为旋转延时。

linux分区格式说明

linux分区格式说明

Linux分区格式主要包括以下几种:1. Ext2:Ext2是GNU/Linux系统中标准的文件系统,适用于标准的块设备(如硬盘)和移动存储设备(如软盘)。

它具有极快的速度和极小的CPU占用率。

2. Ext3:Ext3是Ext2的下一代,它在Ext2的基础上增加了日志功能。

Ext3是一种日志式文件系统(Journal File System),能够将整个磁盘的写入动作完整地记录在磁盘的某个区域上,以便有需要时回溯追踪。

当在某个过程中断时,系统可以根据这些记录直接回溯并重整被中断的部分,重整速度相当快。

该分区格式被广泛应用在Linux系统中。

3. Linux swap:Linux swap是Linux中一种专门用于交换分区的文件系统。

整个分区被用作交换空间,一般大小为主内存的2倍。

在内存不够时,Linux会将部分数据写到交换分区上。

4. VFAT:VFAT叫长文件名系统,这是一个与Windows系统兼容的Linux文件系统,支持长文件名,可以作为Windows 与Linux交换文件的分区。

5. XFS:XFS是一种高性能的文件系统,适用于大型文件和大量并发操作的场景。

它具有很高的性能和可扩展性,支持高达100PB的文件系统容量。

6. BtrFS:BtrFS(B-Tree Filesystem)是一种先进的文件系统,具有优秀的性能、可靠性和可扩展性。

它采用B树数据结构进行文件和目录的组织,支持高达1YB的文件系统容量。

7. GlusterFS:GlusterFS是一种分布式文件系统,适用于大数据处理和云计算场景。

它将文件分布在多个物理节点上,提供高可用性、高性能和可扩展性。

以上就是Linux常见的分区格式,不同的分区格式具有不同的特点和应用场景。

在实际使用中,可以根据需求选择合适的分区格式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Ext2格式分析1、Ext2磁盘数据结构任何Ext2分区中的第一个块从不受Ext2文件系统的管理,因为这一块是为分区的引导扇区所保留的。

Ext2分区的其余部分被分成块组(block group),每个块组的分布图如图所示。

正如你从图中所看到的,一些数据结构正好可以放在一块中,而另一些可能需要更多的块。

在Ext2文件系统中的所有块组大小相同并被顺序存放,因此,内核可以从块组的整数索引很容易地得到磁盘中一个块组的位置:由于内核尽可能地把属于同一个文件的数据块存放在同一块组中,所以块组减少了文件碎片。

块组中的每个块包含下列信息之一:1.文件系统的超级块的一个拷贝2.一组块组描述符的拷贝3.一个数据块位图4.一个索引节点位图5.一个索引节点表6.属于文件的一大块数据,即数据块如果一个块中不包含任何有意义的信息,就说这个块是空闲的。

从上图中可以看出,超级块与组描述符被复制到每个块组中。

其实呢,只有块组0中所包含超级块和组描述符才由内核使用,而其余的超级块和组描述符都保持不变;事实上,内核甚至不考虑它们。

当e2fsck程序对Ext2文件系统的状态执行一致性检查时,就引用存放在块组0中的超级块和组描述符,然后把它们拷贝到其他所有的块组中。

如果出现数据损坏,并且块组0 中的主超级块和主描述符变为无效,那么,系统管理员就可以命令e2fsck引用存放在某个块组(除了第一个块组)中的超级块和组描述符的旧拷贝。

通常情况下,这些多余的拷贝所存放的信息足以让e2fsck把Ext2分区带回到一个一致的状态。

那么有多少块组呢?这取决于分区的大小和块的大小。

其主要限制在于块位图,因为块位图必须存放在一个单独的块中。

块位图用来标识一个组中块的占用和空闲状况。

所以,每组中至多可以有8×b个块,b是以字节为单位的块大小。

例如,一个块是 1024 Byte,那么,一个块的位图就有8192个位,一个块组正好就对应8192个块(位图中的一个bit描述一个块)。

Ext2超块(super Block)Ext2超块中包含了描叙文件系统基本尺寸和形态的信息,是用定义在include/Linux /ext2_fs.h中ext2_supe_block数据结构描述的。

文件系统管理器利用它们来使用和维护文件系统。

通常安装文件系统时只读取数据块组0中的超块,但是为防止文件系统被破坏,每个数据块组都包含了它的拷贝。

超块中的主要信息如下:Magic Number:文件系统安装软件用来检验是否是一个真正的EXl2文件系统超块。

当前Exl2版本中为0xEF53。

Block Size:以字节记数的文件系统块大小,如1024字节。

Blocks per Group:每个组中块数目。

当文件系统创建时此块大小被固定下来。

Free Blocks:文件系统中的空闲块数。

Free Inodes:文件系统中空闲Inode数。

First Inode:文件系统中第一个Inode号。

EX配根文件系统中第一个Inode将是指向‘/’目录的人口。

ExT2组描述符(Group Descript)每个数据块组都拥有一个描叙结构的组描叙符,它是定义在include/Linux/ext2一fs.h中的ext2一group—desc结构。

组描叙符放置在一起形成了组描叙符表。

每个数据块组在超块拷贝后包含整个组描叙符表。

象超块一样,所有数据块组中的组描叙符表被复制到每个数据块组中以防文件系统崩溃。

EX配文件系统仅使用第一个拷贝(在数据块组0中)。

组描叙符主要包含以下信息:Blocks Bitm印:对应此数据块组的块分配位图的块号,在块分配和回收时使用。

Inode Bitmap:对应此数据块组的Inode分配位图的块号,在Inode分配和回收时使用。

Inode Table:对应数据块组的Inode表的起始块号。

每个Inode用下面的EX佗Inode 结构来表示。

Free blocks count,Free Inodes count,USed directory countExT2目录在ExT2文件系统中目录是包含文件存取路径的特殊文件。

目录文件是一组目录人口的链表,它们包含以下信息:Inode:对应每个目录入口的1node,被用来索引储存在数据块组的Inode表中的Inode 数组。

name length:以字节记数的目录人口长度。

name:目录人口的名称ExT2索引节点(hlode)ExT2通过一个Inode结构来说明一个文件,每个Inode有唯一的编号。

Inode描叙文件的物理位置以及文件的存取权限、文件修改时间及文件类型。

每个数据块组的EX他Inode 被保存在Inode表中,同时还有一个位图被系统用来跟踪已分配和未分配的Inode。

图2给出了EXl2 Inode的格式,ext2_in_ode定义在include/Linux/ext2_fS.h中。

EXl2目录仅是一个包含指向其目录人口指针的特殊文件(也用Inode表示)。

EXl2 Inode还可以描叙特殊设备文件,虽然它们不是真正的文件,但可以通过它们访问设备。

所有那些位于/dev 中的设备文件可用来存取Linux设备,例如mount程序可把设备文件作为参数。

块位图、Inode位图和Inode表每个块组都有一个块位图,用来描述本块组中数据块的使用状况。

块位图的每一位(bit)表示一个数据块的使用情况,“l”表示对应的数据块已占用,“0”表示空闲。

各位(bit)的顺序与块组中数据块的顺序一致。

Inode位图反映了Ino(ie表中各个表项的使用情况,其使用方法与块位图类似。

一个块组中所有文件的Inode形成了Inode表。

表项的序号就是lzlode号。

InO(1e表在块组中要占用几个逻辑块由超级块中s_inodes_per_group给出。

2、ExT2文件系统的特点EX配文件系统是标准的Linux文件系统,具有如下特点:(1)物理地址使用了15个数据块指针,采用综合索引方式,最大可支持4(jB的文件;(2)使用变长的目录项,既不浪费磁盘空间,又能支持最长达255个字符的文件名;(3)使用位图来管理空闲数据块和索引节点,解决了采用链表来管理未分配数据块和节点带来的一系列问题;(4)使用了块组的概念,使数据的读写更快、更有效,系统也变得安全可靠;(5)性能高且易于扩展。

但是,EX配系统还存在一些不足,主要体现在下述几个方面:(1)无ACL控制机制。

Linux采用了UNIX的权限控制机制,将文件的用户分为3类:文件主、组用户和其他用户。

而不是对任何特定的用户和用户组,让每个文件与特定的存取权限相关联。

而且,权限控制强度也不如其它操作系统(如Windows NT、Novell等)强。

这需要增强Linux的权限控制机制。

(2)未采用逻辑删除技术。

LinuX下的文件一旦删除,文件就无法恢复,可以采用一个逻辑删除的选项允许用户在必要时恢复以前已删除的文件内容。

(3)文件无压缩机制。

EX舵下的文件尚未采用压缩机制,文件全部按照原码存放,磁盘空间浪费较大。

(4)文件未加密存放。

EX佗中的文件按照明文存放,一旦Exlr2分区所在的磁盘被盗,Ex配上的文件就可以完全恢复过来,这样Linux系统的安全性就要大打折扣。

(5)块片技术(block fragmentation)未实现。

系统管理员对磁盘的访问通常选择较大的块,这样在大块上存放小文件就会浪费很多空间。

通过在大块的不同片上存放多个小文件的方法可以节省不少的磁盘空间。

3、各种文件类型如何使用磁盘块Ext2所认可的文件类型(普通文件、管道文件等)以不同的方式使用数据块。

有些文件不存放数据,因此根本就不需要数据块。

我们来讨论一些文件类型的存储要求:普通文件普通文件是最常见的情况,我们要重点关注它。

但普通文件只有在开始有数据时才需要数据块。

普通文件在刚创建时是空的,并不需要数据块;也可以用 truncate()或open()系统调用清空它。

这两种情况是相同的,例如,当你发出一个包含字符串 > filename的shell命令时,shell创建一个空文件或截断一个现有文件。

目录Ext2以一种特殊的文件实现了目录,这种文件的数据块把文件名和相应的索引节点号存放在一起。

特别说明的是,这样的数据块包含了类型为ext2_dir_entry_2的结构:#define EXT2_NAME_LEN 255struct ext2_dir_entry_2 {__le32 inode; /* 索引节点号 */__le16 rec_len; /* 目录项长度 */__u8 name_len; /* 文件名长度 */__u8 file_type; /* 文件类型 */char name[EXT2_NAME_LEN]; /* 文件名 */};因为该结构最后一个name字段是最大为EXT2_NAME_LEN(通常是255)个字符的变长数组,因此这个结构的长度是可变的。

此外,因为效率的原因,目录项的长度总是4的倍数,并在必要时用null字符(\0)填充文件名的末用的name_len字段存放实际的文件名长度(参见下图)。

注意:此处的目录项与VFS中的dentry不同. 这里的目录项是指目录文件中的一个item(项). 目录文件中的一个item的类型是ext2_dir_entry_2. ext2_dir_entry2实例的长度是可变的,其长度由其rec_len成员指定,而其name成员的实际长度由name_len指定.(这里我们看到了对ext2_dir_entry_2的hack)file_type字段存放指定文件类型的值(见下表):rec_len字段可以被解释为指定一个有效目录项的指针:它是偏移量,与目录项的起始地址相加就得到下一个有效目录的起始地址。

为了删除一个目录项,把它的inode字段置为0并适当地增加前一个有效目录项rec_len字段的值就足够了。

仔细看一下上边图中的rec_len字段,你会发现 oldfile项已被删除,因为usr的rec_len字段被置为12+16(usr 和oldfile目录项的长度)。

符号链接如前所述,如果符号链接的路径名小于等于60个字符,就把它存放在索引节点的i_blocks 字段,该字段是由15个4字节整数组成的数组,因此无需数据块。

但是,如果路径名大于60个字符,就需要一个单独的数据块。

设备文件、管道和套接字这些类型的文件不需要数据块。

所有必要的信息都存放在索引节点中。

相关文档
最新文档