磁盘格式分析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格式分析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描述一个块)。

MINIX,EXT2,FAT文件系统概要分析

MINIX,EXT2,FAT文件系统概要分析

MINIX,EXT2,FAT文件系统概要分析Title: 概述了MINIX,EXT2,FAT文件系统,看完应该有一个全局的了解Author: QuanDate: 18.04.2006====================MINIX:====================Minix的文件系统主要包括一下6个部分:引导块,超级块,i节点位图,区段位图,真正的i节点信息,数据。

引导块:一般来将,每一个文件分区里面,都必须包含一个引导块。

虽然并不是每一个设备的分区都是用来引导的,但是,出于结构的统一以及兼容性方面的考虑,一般文件系统需要将分区的第一个块保留为引导块。

因此,我以前曾经犯过的一个错误就是,认为启动盘在windows里面是不能够被识别的,会提示磁盘未格式化。

看来我真的是错了,只能将那个启动盘上的系统,windows不能够识别。

但是,启动盘里面确实也装载着完整的文件系统。

超级块:之所以称之为超级块,就是因为这个块是整个文件系统的龙头!从它,可以推算出整个文件系统的信息。

在minix中,它包含了i节点数,区段数,块/区段比,最大文件长度,magic number等等信息。

这样,整个文件系统中,上面所涉及到的6个部分的分布就清楚了。

位图:常用的一个数据结构。

使用一个bit来代表一个有序逻辑单位,如这里的一个i节点,一个区段,或者是内存中的一页等等。

这里,使用位图来表示哪些i节点是可以的或者是不可用的,对于区段的使用方式也是相同的。

这样,就是对有序的逻辑单位进行了标记,而且这样的标记是写入磁盘的因此可以长期的保存。

所以,必须要确保文件系统的一致性(consistency),因为标记和真正的逻辑单位并不是同时写入磁盘的。

这一点,相当的重要。

i节点:这个结构和UNIX下的文件系统应该说是一样的。

这里保存着对应于每个文件的具体的信息,如文件类型,访问权限,链接信息,文件大小,时间信息,区段号(包括一次间接块和二次间接块)等等与文件密切相关的信息。

Ext2文件系统

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的结构如下:

磁盘分区格式NTFS和FAT32有什么区别呀

磁盘分区格式NTFS和FAT32有什么区别呀

磁盘分区格式NTFS和FAT32有什么区别呀?二者各有什么好处呀?又有什么缺点呢?从目前流行的操作系统来看,常用的分区格式有:FAT16、FAT32、NTFS和Ext2。

FAT16:是MS-DOS和最早期的WINDOWS 95操作系统中使用的硬盘分区格式,采用16位的文件分配表,是目前获得操作系统支持最多的一种磁盘分区格式,几乎所有的操作系统都支持这种分区格式。

但它只支持2GB的磁盘容量而且磁盘利用效率低。

FAT32:采用32位的文件分配表,突破了2GB的限制。

与FAT16相比,极大地减少了磁盘的浪费,提高了磁盘利用率。

缺点是运行速度比采用FAT16格式分区的磁盘要慢,而且DOS 和的WINDOWS 95不支持这种分区格式。

NTFS:优点是安全性、稳定性非常出色,使用中不易产生文件碎片。

并且能对用户的操作进行记录,通过对用户权限进行严格限制,使每个用户只能按照系统赋予的权限进行操作,充分保护了系统与数据的安全。

WINDOWS 2000、WINDOWS NT以及WINDOWS XP都支持这种分区格式。

Ext2/Ext3:是Linux中使用最多的一种文件系统,专门为Linux设计,拥有最快的速度和最小的cpu 占有用率。

Ext2既可以用于标准块设备(如硬盘),也被应用在软盘等移动存储设备上。

Linux的磁盘分区格式与其它操作系统完全不同,其C、D、E、F等分区的意义也和WINDOWS操作系统下不一样,使用Linux操作系统后,死机的机会大大减少,但是目前支持这一分区格式的操作系统只有Linux。

FAT32与NTFS的区别在推出FAT32文件系统之前,通常PC机使用的文件系统是FAT16。

像基于MS-DOS,Win 95等系统都采用了FAT16文件系统。

在Win 9X下,FAT16支持的分区最大为2GB。

我们知道计算机将信息保存在硬盘上称为“簇”的区域内。

使用的簇越小,保存信息的效率就越高。

在FAT16的情况下,分区越大簇就相应的要增大,存储效率就越低,势必造成存储空间的浪费。

ext2文件系统学习(二)——目录磁盘结构

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”以此类推就可以找到所有根⽬录下的⽬录项。

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) ,而能被格式化的则仅有主要分割与逻辑分割而已。

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

ext文件系统分析

ext文件系统分析

日志文件系统配置 Journal:将元数据和数据写操作涉及数据都写 入日志。 Ordered(省缺模式):日志只记录元数据写。 系统确保文件数据写盘后才进行元数据写操作, 减少文件数据损坏的机会 。 Writeback(最快模式):日志只记录元数据写。
17.8Ext4文件系统新特性
ext4 支持更大的文件系统、文件和子目录。最大
17.5 ext2与VFS层的接口函数 ext2_sops指针数组存放了super_operations 结构类型的一组操作函数指针;
ext2_file_inode_operations/ext2_dir_inod e_operations指针数组存放了inode_operations 结构类型的一组操作函数指针;(2.4版后将 ext2_file_inode_operations的大部分函数移到 ext2_aops中) ext2_file_operations指针数组存放了 file_operations结构类型的一组file操作函数 指针;
Inode及数据块区的bitmap表因为太大不可能同 时存于内核空间,需要部分缓冲处理;
17.4文件系统分区建立
利用/sbin/mke2fs实用程序建立ext2文件系统分 区。生成盘上相关数据结构、建根目录文件等。
如果系统断电等突然停机,e2fsck实用程序必须 在系统重启时运行以保证磁盘数据一致性。
ext2目录文件inode操作表: struct inode_operations ext2_dir_inode_operations = { create: ext2_create, lookup: ext2_lookup, link: ext2_link, unlink: ext2_unlink, symlink: ext2_symlink, mkdir: ext2_mkdir, rmdir: ext2_rmdir, mknod: ext2_mknod, rename: ext2_rename, };

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常见的分区格式,不同的分区格式具有不同的特点和应用场景。

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

linux硬盘文件系统检测修复(ext2).

linux硬盘文件系统检测修复(ext2).

Linux硬盘文件系统检测修复(Ext2)----相关网络资料整理硬盘及文件系统硬盘的大小= 柱面数*每个柱面的大小=柱面数*磁面数*每磁道的扇区数*扇区的大小。

= cylinders*heads* sectors* Sector size硬盘的最小存储单位叫做"扇区"(Sector)。

每个扇区储存512字节(相当于0.5KB)操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。

这种由多个扇区组成的"块",是文件存取的最小单位。

"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。

硬件设备不可能一直使用下去,系统可能会在使用多年后出现故障。

当发生这种情况,以及由于电源故障或者某些其他问题而导致操作系统异常关闭的时候,您可能会在还原系统备份时碰到一些在崩溃期间处于打开状态的文件,并且现在需要对其加以处理。

此时,您可能会碰到一些需要修复inode或者存在错误的消息。

如果发生这种状况,那么fsck命令可以用来救急!您可以使用fsck来修复文件系统或者修正受损的inode,而不是还原系统、或者甚至重新构建操作系统。

1Ext2: 是 GNU/Linux 系统中标准的文件系统,其特点为存取文件的性能极好,对于中小型的文件更显示出优势,这主要得利于其簇快取层的优良设计。

这是Linux中使用最多的一种文件系统,它是专门为Linux设计的,拥有最快的速度和最小的CPU占用率2Ext3: 是 ext2 的下一代,是在保有目前 ext2 的格式之下再加上日志功能。

它兼容ext2,并且从ext2转换成ext3并不复杂。

ext3文件系统已经非常稳定可靠。

3EXT4: 是ext3文件系统的后继版本,但是Ext4是Linux文件系统的一次革命。

在很多方面,Ext4相对于Ext3的进步要远超过Ext3相对于Ext2的进步。

Linux的Ext2文件系统详解

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的总量、使用量、剩余量,以及文件系统的格式与信息。

EXT2和EXT3的详细区别

EXT2和EXT3的详细区别

本文主要讲述Linux 上比较流行的ext2 文件系统在硬盘分区上的详细布局情况。

Ext2 文件系统加上日志支持的下一个版本是ext3 文件系统,它和ext2 文件系统在硬盘布局上是一样的,其差别仅仅是ext3 文件系统在硬盘上多出了一个特殊的inode(可以理解为一个特殊文件),用来记录文件系统的日志,也即所谓的journal。

由于本文并不讨论日志文件,所以本文的内容对于ext2 和ext3 都是适用的。

1 前言本文的资料来源是Linux 内核中ext3 文件系统的源代码。

为了便于读者查阅源代码,本文中一些关键的技术词汇都使用了内核源代码中所使用的英语单词,而没有使用相应的中文翻译。

(这种方法是否恰当,还请读者朋友们指教。

)2 粗略的描述对于ext2 文件系统来说,硬盘分区首先被划分为一个个的block,一个ext2 文件系统上的每个block 都是一样大小的,但是对于不同的ext2 文件系统,block 的大小可以有区别。

典型的block 大小是1024 bytes 或者4096 bytes。

这个大小在创建ext2 文件系统的时候被决定,它可以由系统管理员指定,也可以由文件系统的创建程序根据硬盘分区的大小,自动选择一个较合理的值。

这些blocks 被聚在一起分成几个大的block group。

每个block group 中有多少个block 是固定的。

每个block group 都相对应一个group descriptor,这些group descriptor 被聚在一起放在硬盘分区的开头部分,跟在super block 的后面。

所谓super block,我们下面还要讲到。

在这个descriptor 当中有几个重要的block 指针。

我们这里所说的block 指针,就是指硬盘分区上的block 号数,比如,指针的值为0,我们就说它是指向硬盘分区上的block 0;指针的值为1023,我们就说它是指向硬盘分区上的block 1023。

EXT2文件系统

EXT2文件系统

ext2 文件系统格式The Second Extended File System(ext2)文件系统是 Linux 系统中的标准 文件系统,是通过对 Minix 的文件系统进行扩展而得到的,其存取文件的性能 极好。

在 ext2 文件系统中,文件由 inode(包含有文件的所有信息)进行唯一标识。

一个文件可能对应多个文件名,只有在所有文件名都被删除后,该文件才会被 删除。

此外,同一文件在磁盘中存放和被打开时所对应的 inode 是不同的,并 由内核负责同步。

ext2 文件系统采用三级间接块来存储数据块指针,并以块 (block,默认为 1KB)为单位分配空间。

其磁盘分配策略是尽可能将逻辑相 邻的文件分配到磁盘上物理相邻的块中, 并尽可能将碎片分配给尽量少的文件, 以从全局上提高性能。

ext2 文件系统将同一目录下的文件(包括目录)尽可能 的放在同一个块组中,但目录则分布在各个块组中以实现负载均衡。

在扩展文 件时,会尽量一次性扩展 8 个连续块给文件(以预留空间的形式实现)。

2.1. 总体存储布局 请点评我们知道,一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(例 如某种 mkfs 命令)格式化成某种格式的文件系统,然后才能存储文件,格式 化的过程会在磁盘上写一些管理存储布局的信息。

下图是一个磁盘分区格式化 成 ext2 文件系统后的存储布局。

图 1. ext2 文件系统的总体存储布局文件系统中存储的最小单位是块(Block),一个块究竟多大是在格式化时确 定的,例如 mke2fs 的-b 选项可以设定块大小为 1024、2048 或 4096 字节。

而上图中启动块(Boot Block)的大小是确定的,就是 1KB,启动块是由 PC 标准规定的,用来存储磁盘分区信息和启动信息,任何文件系统都不能使用启 动块。

启动块之后才是 ext2 文件系统的开始, ext2 文件系统将整个分区划成若干 个同样大小的块组(Block Group),每个块组都由以下部分组成。

Ext2格式分析

Ext2格式分析

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描述一个块)。

福州大学,操作系统,磁盘格式分析

福州大学,操作系统,磁盘格式分析

福州大学数学与计算机科学(软件)学院自主学习技术报告课程名称:操作系统报告名称:磁盘格式分析学号:221000215姓名:黄剑专业:软件工程年级:10级学期:2012学年第1学期2012年12月Ext2格式分析ext2文件系统格式ext2文件系统采用三级间接块来存储数据块指针,并以块(block,默认为1KB)为单位分配空间。

其磁盘分配策略是尽可能将逻辑相邻的文件分配到磁盘上物理相邻的块中,并尽可能将碎片分配给尽量少的文件,以从全局上提高性能。

ext2文件系统将同一目录下的文件(包括目录)尽可能的放在同一个块组中,但目录则分布在各个块组中以实现负载均衡。

在扩展文件时,会尽量一次性扩展8个连续块给文件(以预留空间的形式实现)。

在ext2系统中,所有元数据结构的大小均基于“块”,而不是“扇区”。

块的大小随文件系统的大小而有所不同。

而一定数量的块又组成一个块组,每个块组的起始部分有多种多样的描述该块组各种属性的元数据结构。

ext2系统中对各个结构的定义都包含在原始码的include/linux/ext2_fs.h文件中。

1.EXT2物理结构图ext2文件系统是Linux系统中最为成功的文件系统,各种Linux 的系统发布都将ext2文件系统作为操作系统的基础。

ext2文件系统中的数据是以数据块的方式存储在文件中的。

这些数据块具有同样的大小,并且其大小可以在ext2创建时设定。

每一个文件的长度都要补足到块的整数倍。

例如,如果一个块的大小是1024字节,那么一个1025字节大小的文件则占用两个数据块。

所以,平均来说一个文件将浪费半个数据块的空间。

但这样可以减轻系统中CPU的负担。

文件系统中不是所有的数据块都存储数据,一些数据块用来存储一些描述文件系统结构的信息。

ext2通过使用索引节点(inode)数据结构来描述系统中的每一个文件。

索引节点描述了文件中的数据占用了哪一个数据块以及文件的存取权限、文件的修改时间和文件类型等信息。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

5、支持快速符号链接。

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

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

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

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

因此,尽管删除文件时无法自动收回文件的数据块,但并不导致灾难性的后果。

如果这种处理的顺序相反(更新索引节点前改变目录),同样的硬件故障将会导致危险的不一致,删除原始的硬链接就会从磁盘删除它的数据块,但新的目录项将指向一个不存在的索引节点。

如果那个索引节点号以后又被另外的文件所使用,那么向这个旧目录的写操作将毁坏这个新的文件。

2、在启动时支持对文件系统的状态进行自动的一致性检查。

这种检查是由外部程序e2fsck完成的,这个外部程序不仅可以在系统崩溃之后被激活,也可以在一个预定义的文件系统安装数(每次安装操作之后对计数器加1)之后被激活,或者在自从最近检查以来所花的预定义时间之后被激活。

3、支持不可变(immutable)的文件(不能修改、删除和更名)和仅追加(append-only)的文件(只能把数据追加在文件尾)。

4、既与Unix System V Release 4(SVR4)相兼容,也与新文件的用户组ID的BSD 语义相兼容。

在SVR4中,新文件采用创建它的进程的用户组ID;而在BSD中,新文件继承包含它的目录的用户组ID。

Ext2包含一个安装选项,由你指定采用哪种语义。

即使Ext2文件系统是如此成熟、稳定的程序,也还要考虑引入另外几个负面特性。

目前,一些负面特性已新的文件系统或外部补丁避免了。

另外一些还仅仅处于计划阶段,但在一些情况下,已经在Ext2的索引节点中为这些特性引入新的字段。

最重要的一些特点如下:块片(block fragmentation)系统管理员对磁盘的访问通常选择较大的块,因为计算机应用程序常常处理大文件。

因此,在大块上存放小文件就会浪费很多磁盘空间。

这个问题可以通过把几个文件存放在同一块的不同片上来解决。

透明地处理压缩和加密文件这些新的选项(创建一个文件时必须指定)将允许用户透明地在磁盘上存放压缩和(或)加密的文件版本。

逻辑删除,一个undelete选项将允许用户在必要时很容易恢复以前已删除的文件内容。

日志,日志避免文件系统在被突然卸载(例如,作为系统崩溃的后果)时对其自动进行的耗时检查。

Ext2中缺少的最突出的功能就是日志,日志是高可用服务器必需的功能。

为了平顺过渡,日志没有引入到Ext2文件系统;但是,“Ext3文件系统”中完全与Ext2兼容的一种新文件系统已经创建,这种文件系统提供了日志。

不真正需要日志的用户可以继续使用良好而老式的Ext2文件系统,而其他用户可能采用这种新的文件系统。

现在发行的大部分系统采用Ext3作为标准的文件系统。

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

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

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

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

块组中的每个块包含下列信息之一:1.文件系统的超级块的一个拷贝2.一组块组描述符的拷贝3.一个数据块位图4.一个索引节点位图5.一个索引节点表6.属于文件的一大块数据,即数据块。

如果一个块中不包含任何有意义的信息,就说这个块是空闲的。

磁盘超级块Ext2在磁盘上的超级块存放在一个ext2_super_block结构中,s_inodes_count 字段存放索引节点的个数,而s_blocks_count字段存放Ext2文件系统的块的个数。

s_log_block_size字段以2的幂次方表示块的大小,用1024字节作为单位。

因此,0表示1024字节的块,1表示2048字节的块,如此等等。

目前s_log_frag_size字段与slog_block_size字段相等,因为块片还没有实现。

s_blocks_per_group、s_frags_per_group与s_inodes_per_group字段分别存放每个块组中的块数、片数及索引节点数。

块组描述符和位图每个块组都有自己的组描述符,它是一个ext2_group_desc结构:当分配新索引节点和数据块时,会用到bg_free_blocks_count、bg_free_inodes_count、和 bg_used_dirs_count字段。

这些字段确定在最合适的块中给每个数据结构进行分配位图中位的序列,其中值0表示对应的索引节点块或数据块是空闲的,1表示占用。

因为每个位图必须存放在一个单独的块中,又因为块的大小可以是1024、2048或4096字节,因此,一个单独的位图描述 8192、16384或32768个块的状态。

磁盘索引节点表:索引节点表由一连串连续的块组成,其中每一块包含索引节点的一个预定义号。

索引点表第一个块的块号存放在组描述符的bg_inode_table字段中。

共有n个块,n 等于块组的数量(256)。

所有索引节点的大小相同,即128字节。

一个1024字节的块可以包含8个索引节点,一个4096字节的块可以包含32个索引节点。

为了计算出索引节点表占用了多少块,用一个组中的索引节点总数(存放在超级块的s_inodes_per_group字段中)除以每块的索引节点数。

每个Ext2索引节点为ext2_inode结构:与POSIX规范相关的很多字段类似于VFS索引节点对象的相应字段,这已在“VFS文件系统对象”中讨论过。

其余的字段与Ext2的特殊实现相关,主要处理块的分配。

特别地,i_size字段存放以字节为单位的文件的有效长度,而i_blocks字段存放已分配给文件的数据块数(以512字节为单位)。

i_size和i_blocks的值没有必然的联系。

因为一个文件总是存放在整数块中,一个非空文件至少接受一个数据块(因为还没实现片)且 i_size可能小于512 x i_blocks。

另一方面,一个文件可能包含有洞。

在那种情况下,i_size可能大于512 x i_blocks。

i_block字段是具有EXT2_N_BLOCKS(通常是15)个指针元素的一个数组,每个元素指向分配给文件的数据块:#define EXT2_NDIR_BLOCKS 12#define EXT2_IND_BLOCK EXT2_NDIR_BLOCKS#define EXT2_DIND_BLOCK (EXT2_IND_BLOCK + 1)#define EXT2_TIND_BLOCK (EXT2_DIND_BLOCK + 1)#define EXT2_N_BLOCKS (EXT2_TIND_BLOCK + 1)各种文件类型如何使用磁盘块Ext2所认可的文件类型(普通文件、管道文件等)以不同的方式使用数据块。

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

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

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

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

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

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

特别说明的是,这样的数据块包含了类型为ext2_dir_entry_2的结构:因为该结构最后一个name字段是最大为EXT2_NAME_LEN(通常是255)个字符的变长数组,因此这个结构的长度是可变的。

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

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

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

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

Ext2的超级块对象前面详细讨论了将一个磁盘分区格式化成ext2文件系统后,一个分区的布局,重点介绍了超级快、块组、位图和索引节点等内容。

那么,内核如何跟这些ext2文件系统的对象打交道呢?这个,才是我们研究存储的人应该重点关注的对象,从本文开始,我们就来重点讨论。

首先,当安装Ext2文件系统时(执行诸如mount -t ext2 /dev/sda2 /mnt/test的命令),存放在Ext2分区的磁盘数据结构中的大部分信息将被拷贝到RAM中,从而使内核避免了后来的很多读操作。

相关文档
最新文档