当前位置:文档之家› vue-学习笔记2

vue-学习笔记2

vue-学习笔记2
vue-学习笔记2

Ext2数据块分配

Ext2数据块分配 跟索引节点一样,Ext2也对磁盘数据块进行分配与释放。在详细分析相关代码之前,先引出两个重要的预备,一个是数据块寻址,一个是文件的洞 1 数据块寻址 每个非空的普通文件都由一组数据块组成。这些块或者由文件内的相对位置(它们的文件块号)来标识,或者由磁盘分区内的位置(它们的逻辑块号)来标识。 从文件内的偏移量f 导出相应数据块的逻辑块号需要两个 步骤: 1. 从偏移量f导出文件的块号,即在偏移量f处的字符所在的块索引。 2. 把文件的块号转化为相应的逻辑块号。 因为Unix文件不包含任何控制字符,因此,导出文件的第f 个字符所在的文件块号当容易的,只是用f除以文件系统块

的大小,并取整即可。 例如,让我们假定块的大小为4KB。如果f小于4096,那么这个字符就在文件的第一数据块中,其文件的块号为O。如果f等于或大于4096而小于8192,则这个字符就在文件块号为1的数据块中,以此类推。 得到了文件的块号是第一步。但是,由于Ext2文件的数据块在磁盘上不必是相邻的,因此把文件的块号转化为相应的逻辑块号可不是这么直截了当的了。 因此,Ext2文件系统必须提供一种方法,用这种方法可以在磁盘上建立每个文件块号与相应逻辑块号之间的关系。在索引节点内部部分实现了这种映射(回到了 AT&T Unix的早期版本)。这种映射也涉及一些包含额外指针的专用块,这些块用来处理大型文件的索引节点的扩展。 ext2磁盘索引节点ext2_inode的i_block字段是一个有EXT2_N_BLOCKS个元素且包含逻辑块号的数组。在下面的讨论中, 我们假定EXT2_N_BLOCKS的默认值为15(实际上到2.6.18这个值都一直是15)。如图所示,这个数组表示一个大型数据结构的初始化部分。

认识文件系统

认识文件系统 物联网学院平震宇

文件系统 文件系统是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型,一种存储和组织计算机文件和数据的方法,它使得对其访问和查找变得容易。 Linux 最早的文件系统是Minix,但是专门为Linux 设计的文件系统——扩展文件系统第二版 (EXT2)被设计出来并添加到Linux中,这对Linux产生了重大影响。EXT2文件系统功能强大、易扩充、性能上进行了全面优化,也是所有Linux发布和安装的标准文件系统类型。

虚拟文件系统 Linux支持ext,ext2,xia,minix,umsdos,msdes,fat32 ,ntfs,proc,stub,ncp,hpfs,affs 以及 ufs 等多种文件系统。 Linux 对所有的文件系统采用统一的文件界面,用户通过文件的操作界面来实现对不同文件系统的操作。对于用户来说,我们不要去关心不同文件系统的具体操作过程,而只是对一个虚拟的文件操作界面来进行操作,这个操作界面就是 Linux 的虚拟文件系统(VFS ) 。 VFS 作为 Linux内核中的一个软件层,用于给用户空间的程序提供文件系统接口,同时也提供了内核中的一个抽象功能,允许不同的文件系统很好地共存。VFS 使 Linux 同时安装、支持许多不同类型的文件系统成为可能。VFS 拥有关于各种特殊文件系统的公共界面,如超级块、inode、文件操作函数入口等。实际文件系统的细节,统一由 VFS 的公共界面来索引,它们对系统核心和用户进程来说是透明的。

Linux上有许多可用的文件系统。每个文件系统都有其特定的用途,以便于特定用户解决不同的问题。 ?要求文件系统在频繁的文件操作(例如,新建,删 除,截断)下能够保持较高的读写性能,要求低碎 片化。 ?Linux下的日志文件系统能保持数据的完整性,但消 耗过多系统资源,的弱点使之不能成为嵌入式系统中 的主流应用。并且这些都是专门为硬盘这类的存储 设备优化,对于flash这类的存储介质并不适用。

Ext3文件系统

EXT3文件系统 EXT2和EXT3是许多Linux操作系统发行版本的默认文件系统。EXT基于UFS,是一种快速、稳定的文件系统。 随着Linux系统在关键业务中的应用,Linux文件系统的弱点也渐渐显露出来了;其中EXT2文件系统是非日志式文件系统,这在关键行业的应用是一个致命的弱点,EXT3文件系统弥补了这一缺点。 EXT3文件系统是直接从EXT2文件系统发展而来,目前EXT3文件系统已经非常稳定可靠。它完全兼容EXT2文件系统。用户可以平滑地过渡到一个日志功能健全的文件系统中来。这实际上了也是EXT3日志文件系统初始设计的初衷。 Ext3文件系统属于一种日志文件系统,是对Ext2系统的扩展。Ext3系统兼容Ext2文件系统,二者之间的相互转换并不复杂。 Ext2是 GNU/Linux 系统中标准的文件系统,其簇快取层的优良设计使得Ext2系统存取文件的性能非常好,尤其是针对中小型的文件更显优势。 Ext3是一种日志式文件系统,日志文件系统比传统的文件系统安全,因为它用独立的日志文件跟踪磁盘内容的变化。就像关系型数据库(RDBMS),日志文件系统可以用事务处理的方式,提交或撤消文件系统的变化。由于文件系统都有快取层参与运作,不使用时必须将文件系统卸下,以便将快取层的资料写回磁盘中。因此每当系统要关机时,必须将其所有的文件系统全部关闭后才能进行关机。 如果在文件系统尚未关闭前就关机 (如停电) 时,下次重开机后会造成文件系统的资料不一致,故(所以)这时必须做文件系统的重整工作,将不一致与错误的地方修复。然而这一重整的工作是相当耗时的,特别是容量大的文件系统,而且也不能百分之百保证所有的资料都不会流失。 为了克服此问题,使用(便出现了)所谓的日志式文件系统 (Journal File System) 。此类文件系统最大的特色是,它会将整个磁盘的写入动作完整记录在磁盘的某个区域上,以便有需要时可以回溯追踪。 由于资料的写入动作包含许多的细节,如改变文件标头资料、搜寻磁盘可写入空间、一个个写入资料区段等等,每一个细节进行到一半若被中断,就会造成文件系统的不一致,因而需要重整。 然而在日志式文件系统中,由于详细纪录了每个细节,故当在某个过程中被中断时,系统可以根据这些记录直接回溯并重整被中断的部分,而不必花时间去检查其他的部分,故重整的工作速度相当快,几乎不需要花时间。 EXT3日志文件系统的特点 1、高可用性 系统使用了EXT3文件系统后,即使在非正常关机后,系统也不需要检查文件系统。宕机发生后,恢复EXT3文件系统的时间只要数十秒钟。 2、数据的完整性: EXT3文件系统能够极大地提高文件系统的完整性,避免了意外宕机对文件系统的破

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描述一个块)。 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 结构来表示。

ext2文件系统

ext2文件系统 总体存储布局 我们知道,一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(例如某种mkfs命令)格式化成某种格式的文件系统,然后才能存储文件,格式化的过程会在磁盘上写一些管理存储布局的信息。下图是一个磁盘分区格式化成ext2文件系统后的存储布局。 图 29.2. ext2文件系统的总体存储布局 文件系统中存储的最小单位是块(Block),一个块究竟多大是在格式化时确定的,例如mke2fs 的-b选项可以设定块大小为1024、2048或4096字节。而上图中启动块(Boot Block)的大小是确定的,就是1KB,启动块是由PC标准规定的,用来存储磁盘分区信息和启动信息,任何文件系统都不能使用启动块。启动块之后才是ext2文件系统的开始,ext2文件系统将整个分区划成若干个同样大小的块组(Block Group),每个块组都由以下部分组成。 超级块(Super Block) 描述整个分区的文件系统信息,例如块大小、文件系统版本号、上次mount的时间等等。超级块在每个块组的开头都有一份拷贝。 块组描述符表(GDT,Group Descriptor Table) 由很多块组描述符组成,整个分区分成多少个块组就对应有多少个块组描述符。每个块组描述符(Group Descriptor)存储一个块组的描述信息,例如在这个块组中从哪里开始是inode表,从哪里开始是数据块,空闲的inode和数据块还有多少个等等。和超级块类似,块组描述符表在每个块组的开头也都有一份拷贝,这些信息是非常重要的,一旦超级块意外损坏就会丢失整个分区的数据,一旦块组描述符意外损坏就会丢失整个块组的数据,因此它们都有多份拷贝。通常内核只用到第0个块组中的拷贝,当执行e2fsck检查文件系统一致性时,第0个块组中的超级块和块组描述符表就会拷贝到其它块组,这样当第0个块组的开头意外损坏时就可以用其它拷贝来恢复,从而减少损失。 块位图(Block Bitmap) 一个块组中的块是这样利用的:数据块(Data Block)存储所有文件的数据,比如某个分区的块大小是1024字节,某个文件是2049字节,那么就需要三个数据块来存,即使第三个块只存了一

ext2文件系统删除后的恢复

ext2文件系统下数据进行数据恢复 摘要 ext2文件系统下数据进行数据恢复 --------------------------------------------------------------------- 本系的 BBS 系统真是多灾多难 (嗯 .... 其实是因为我的疏忽,才会这么多灾多难 ....) ,继这几日系统时间不正确,造成许多人的 ID 被误砍后,又一次因系统设定上的问题,将 BBS 的重要备份档给杀了。这件事是学弟发现后告诉我的,当我上站来一见到他的mail, 当真是欲哭无泪,差点没去撞墙。 那时已是周六晚 11:00 左右,我一边想着要编一套说辞向大家解释无法替大家进行数据恢复旧信件与设定了,一边还在想是否能够挽回局面。大家知道, UNIX like 的系统是很难像 M$ 的系统一样,做到 undelete 的,所有网管前辈都曾再三警告我们,要小心! 小心! 砍档之前三思而后行,砍了之后再后悔也没用。虽然我已渐渐做到砍档三思而后行,但之次误砍事件是系统在背景中定时执行的,等到我找出原因时已是数据被砍后一个多小时。我凭着一点点的印象,想起在网络上,有人讨论过在 Linux ext2 filesystem中 undelete 的可能性,但我所见到的多半是负面的答案,但好象真的有人做过这件事,于是我第一个所做的,就是马上将该数据原来所在的 partition mount成 read-only, 禁止任何的写入动作,不是怕再有数据被误砍 (因为已没什么可砍的了) ,而是怕有新数据写进来,新资料可能会覆盖到旧资料原本存在的磁区 (block) 。我们现在唯一个指望,就是企图将数据原来存在的磁区一个个找回来,并且「希望」这些磁区上的旧资料都还在,然后将这些磁区串成一个数据。终于被我找到了!! 原来这方面的技术文件就存在我自己的系统中 :-)) /usr/doc/HOWTO/mini/Ext2fs-Undeletion.gz 于是我就按照这份文件的指示一步步来,总算将一个长达 8MB 的压缩档数据恢复了 99%, 还有一个长达 1.1 MB 的压缩档完整无缺地救了回来。感谢上帝、 Linux 的设计者、写那篇文件的作者、曾经讨论过此技术的人、以及 Linux 如此优秀的 ext2 filesystem, 让我有机会抢救过去。现在,我将我的抢救步骤做一个整理让大家参考,希望有派得上用场的时候 (喔! 不,最好是希望大家永远不要有机会用到以下的步数 :-))) 在此严正声明!! 写这篇文章的目的,是给那些处于万不得已情况下的人们,有一个挽回的机会,并不意味着从此我们就可以大意,砍档不需要三思。前面提到,我有一个数据无法100% 救回,事实上,长达 8MB 的数据能救回 99% 已是幸运中的幸运,一般的情况下若能救回 70% - 80% 已经要愉笑了。所以,不要指望 undelete 能救回一切。预防胜于治疗! 请大

磁盘格式分析Ext2格式分析

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、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种模式可供选择。 其中之一就是"同时保持文件系统及数据的一致性"模式。采用这种方式,你永远不再会看到由于非正常关机而存储在磁盘上的垃圾文件。 3、文件系统的速度 尽管使用ext3文件系统时,有时在存储数据时可能要多次写数据,但是,从总体上看来,ext3比ext2的性能还要好一些。这是因为ext3的日志功能对磁盘的驱动器读写头进行了优化。所以,文件系统的读写性能较之Ext2文件系统并来说,性能并没有降低。

LINUX EXT文件系统

EXT文件系统研究报告 EXT2 文件系统 The Second Extended File System(ext2)文件系统是Linux系统中的标准文件系统,是通过对Minix的文件系统进行扩展而得到的,其存取文件的性能极好。 在ext2文件系统中,文件由inode(包含有文件的所有信息)进行唯一标识。一个文件可能对应多个文件名,只有在所有文件名都被删除后,该文件才会被删除。此外,同一文件在磁盘中存放和被打开时所对应的inode是不同的,并由内核负责同步。 ext2文件系统采用三级间接块来存储数据块指针,并以块(block,默认为1KB)为单位分配空间。其磁盘分配策略是尽可能将逻辑相邻的文件分配到磁盘上物理相邻的块中,并尽可能将碎片分配给尽量少的文件,以从全局上提高性能。ext2文件系统将同一目录下的文件(包括目录)尽可能的放在同一个块组中,但目录则分布在各个块组中以实现负载均衡。在扩展文件时,会尽量一次性扩展8个连续块给文件(以预留空间的形式实现)。 一、文件系统特性 磁盘分区完毕后还需要进行格式化,之后操作系统才能够使用这个分区。这是因为每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区进行格式化,以成为操作系统能够利用的文件系统格式。传统的磁盘与文件系统的应用中,一个分区誻只能够被格式化成为一个文件系统,所以我们可以说一个文件系统就是一个分区。 操作系统的文件数据除文件内容外,通常还有非常多的属性,Linux中的文件权限(rxw)与文件属性(所有者,群组、时间参数等)。文件系统通常会将这两部分数据分别存放在不同的块: 权限与属性放置到inode中. 至于实际数据则放置到data block块中。 另外还有一个超级块(super block)会记录整个文件系统的的整体信息,包括inode 与block的总量、使用量、剩余量,以及文件系统的格式与相关信息等。 inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block 号码。 block:实际记录文件的内容,若文件太大时,会占用多个block。 由于每个inode与block都有编号,而每个文件都会占用一个inode,inode内则有文件数据放置的block号码。因此,如果能找到文件的inode的话,那么自然就会知道这个文件所放置数据的block号码,也就能够读出该文件的实际数据。

Ext2文件系统的设计与实现

Ext2文件系统的设计与实现 Réy Card, Laboratoire MASI--Institut Blaise Pascal, E-Mail: card@masi。ibp。fr, and Theodore Ts'o, Massachussets Institute of Technology, E-Mail: tytso@mit。edu, and Stephen Tweedie, University of Edinburgh, E-Mail: sct@dcs。ed。ac。uk for you 介绍 Linux是一个运行在PC-386上的类Unix的操作系统,它首先作为对Minix操作系统[Tanenbaum 1987]的扩展实现,第一个版本仅支持Minix文件系统。Minix文件系统存在着两个重大的局限:块地址储存在16位的整型数中,因此文件系统的大小被限制在64MB。 并且目录含有条目大小固定和文件名最长是14个字母。 我们设计并实现了两个新的文件系统,它们被包含在标准的Linux内核之中。这些文件系 统被叫"extended file system"(Ext fs)和"second extended file system"(Ext2 fs),它们提升了限制,并且增加了新的属性。 在这篇文章中,我们会描述Linux文件系统的历史。并简短的介绍Unix文件系统基本原理的实现。介绍Linux中虚拟文件系统层的实现并且详细的介绍Ext2文件系统核心代码和用户级工具。最后,我们给出在Linux和BSD文件系统中的性能测量,总结当前Ext2fs的状态和将来的发展方向。 Linux文件系统的历史 早期,Linux是在Minix OS下交叉开发而的。在两个系统间共享磁盘比设计一个新的文件系统要容易得多,因而Linus Torvalds决定在Linux中实现对Minix文件系统的支持。Minix 文件系统是一个有效的并且相对比较稳定的软体。 然而,在Minix文件系统的设计上有太多的限制,所以人们开始想在Linux上实现新的文 件系统。 为了容易的在Linux内核中添加新的文件系统,一种虚拟文件系统被开发出来,VFS最初 是由Chris Provenzano编写,后来在它被融合到Linux内核之前又被Linus Torvalds重写了 一遍。“虚拟文件系统”中会提到这些。 在VFS融合到内核之后,一个新的文件系统,"extended file system"在1992四月被实现, 并且添加到Linux 0.96c中。这个新的文件系统摒除了Minix文件系统的两大限制:最大支持2GB,最长文件名支持255个字符。它是在Minix文件系统上改进的,但一些问题仍旧存在。不支持:分离访问,节点修改,数据修改时间戳。文件系统使用链接表去保存空闲块 和空闲节点的磁道,但这产生了严重性能问题:在文件系统使用时,列表会变得很乱,文 件系统容易产生碎片。

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),每个块组都由以下部分组成。

如何选择文件系统:EXT4、Btrfs 和 XFS

如何选择文件系统:EXT4、Btrfs 和XFS 老实说,人们最不曾思考的问题之一是他们的个人电脑中使用了什么文件系统。Windows 和Mac OS X 用户更没有理由去考虑,因为对于他们的操作系统,只有一种选择,那就是NTFS 和HFS+。 相反,对于Linux 系统而言,有很多种文件系统可以选择,现在默认的是广泛采用的ext4。然而,现在也有改用一种称为btrfs 文件系统的趋势。那是什么使得btrfs 更优秀,其它的文件系统又是什么,什么时候我们又能看到Linux 发行版作出改变呢? 首先让我们对文件系统以及它们真正干什么有个总体的认识,然后我们再对一些有名的文件系统做详细的比较 文件系统是干什么的? 如果你不清楚文件系统是干什么的,一句话总结起来也非常简单。文件系统主要用于控制所有程序在不使用数据时如何存储数据、如何访问数据以及有什么其它信息(元数据)和数据本身相关,等等。听起来要编程实现并不是轻而易举的事情,实际上也确实如此。文件系统一直在改进,包括了更多的功能、更高效地完成它需要做的事情。总而言之,它是所有计算机的基本需求、但并不像听起来那么简单。 为什么要分区? 由于每个操作系统都能创建或者删除分区,很多人对分区都有模糊的认识。Linux 操作系统即便使用标准安装过程,在同一块磁盘上仍使用多个分区,这看起来很奇怪,因此需要一些解释。拥有不同分区的一个主要目的就是为了在灾难发生时能获得更好的数据安全性。 通过将硬盘划分为分区,数据会被分隔以及重组。当事故发生的时候,只有存储在被损坏分区上的数据会被破坏,很大可能上其它分区的数据能得以保留。这个原因可以追溯到Linux 操作系统还没有日志文件系统、任何电力故障都有可能导致灾难发生的时候。 使用分区也考虑到了安全和健壮性原因,因此操作系统部分损坏并不意味着整个计算机就有风险或者会受到破坏。这也是当前采用分区的一个最重要因素。举个例子,用户创建了

linux下的文件系统ext2的文档资料

The Second Extended File System Internal Layout Dave Poirier instinc@https://www.doczj.com/doc/225774439.html,

The Second Extended File System:Internal Layout by Dave Poirier Copyright?2001-2009Dave Poirier Permission is granted to copy,distribute and/or modify this document under the terms of the GNU Free Documentation License,Version1.1or any later version published by the Free Software Foundation;with no Invariant Sections,with no Front-Cover Texts,and with no Back-Cover Texts.A copy of the license can be acquired electronically from https://www.doczj.com/doc/225774439.html,/licenses/fdl.html or by writing to59Temple Place,Suite330, Boston,MA02111-1307USA

Table of Contents About this book (vii) 1.Historical Background (1) 2.De?nitions (2) 2.1.Blocks (2) 2.2.Block Groups (3) 2.3.Directories (3) 2.4.Inodes (4) 2.5.Superblocks (4) 2.6.Symbolic Links (5) 3.Disk Organization (7) 3.1.Superblock (8) 3.1.1.s_inodes_count (10) 3.1.2.s_blocks_count (10) 3.1.3.s_r_blocks_count (10) 3.1.4.s_free_blocks_count (10) 3.1.5.s_free_inodes_count (10) 3.1.6.s_?rst_data_block (11) 3.1.7.s_log_block_size (11) 3.1.8.s_log_frag_size (11) 3.1.9.s_blocks_per_group (12) 3.1.10.s_frags_per_group (12) 3.1.11.s_inodes_per_group (12) 3.1.12.s_mtime (12) 3.1.13.s_wtime (12) 3.1.14.s_mnt_count (12) 3.1.15.s_max_mnt_count (12) 3.1.16.s_magic (13) 3.1.17.s_state (13) 3.1.18.s_errors (13) 3.1.19.s_minor_rev_level (13) 3.1.20.s_lastcheck (14) 3.1.21.s_checkinterval (14) 3.1.22.s_creator_os (14) 3.1.23.s_rev_level (14) 3.1.24.s_def_resuid (14) 3.1.25.s_def_resgid (15) 3.1.26.s_?rst_ino (15) 3.1.27.s_inode_size (15) 3.1.28.s_block_group_nr (15) 3.1.29.s_feature_compat (15) 3.1.30.s_feature_incompat (16) 3.1.31.s_feature_ro_compat (16) 3.1.32.s_uuid (17) 3.1.33.s_volume_name (17) 3.1.34.s_last_mounted (17)

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的总量、使用量、剩余量,以及文件系统的格式与信息。inode 会记录文件的属性,一个文件会占用一个inode,同时会记录文件的数据所在的block号码,block实际会记录文件的内容,若文件太大,会占用多个block。 第三部分:Linux的Ext2文件系统 1、data block(数据块) data block是用来放置文件内容的地方,在Ext2文件系统下支持的block的大小为1KB、2KB和4KB。在格式化的时候,block的大小就被确定了,并且每个block都会有编号,以方便inode记录。 原则上,block的大小与数量在格式化是不能再改变了(除非重新格式化);每个block内最多只能放置一个文件的数据,存在以下两种情况,一种是文件大于1个block则会占用多个block,另外一种是文件小于block,则block的剩余空间就不会再被使用了(磁盘空间的浪费)。 那既然上述说的大的block可能会导致严重的磁盘容量浪费,但是block设定为最小1K 呢?那么对于大的文件来说会占用数量更多的block,而inode要记录更过的block的号码,

EXT3文件系统简介

EXT3文件系统简介 EXT2和EXT3是许多Linux操作系统发行版本的默认文件系统。EXT基于UFS,是一种快速、稳定的文件系统。 随着Linux系统在关键业务中的应用,Linux文件系统的弱点也渐渐显露出来了;其中EXT2文件系统是非日志文件系统,这在关键行业的应用是一个致命的弱点,EXT3文件系统弥补了这一缺点。 EXT3文件系统是直接从EXT2文件系统发展而来,目前EXT3文件系统已经非常稳定可靠。它完全兼容EXT2文件系统。用户可以平滑地过渡到一个日志功能健全的文件系统中来。这实际上了也是EXT3日志文件系统初始设计的初衷。 EXT3日志文件系统的特点 1、高可用性 系统使用了EXT3文件系统后,即使在非正常关机后,系统也不需要检查文件系统。宕机发生后,恢复EXT3文件系统的时间只要数十秒钟。 2、数据的完整性: EXT3文件系统能够极大地提高文件系统的完整性,避免了意外宕机对文件系统的破坏。在保证数据完整性方面,EXT3文件系统有2种模式可供选择。其中之一就是“同时保持文件系统及数据的一致性”模式。采用这种方式,你永远不再会看到由于非正常关机而存储在磁盘上的垃圾文件。 3、文件系统的速度: 尽管使用EXT3文件系统时,有时在存储数据时可能要多次写数据,但是,从总体上看来,EXT3比EXT2的性能还要好一些。这是因为EXT3的日志功能对磁盘的驱动器读写头进行了优化。所以,文件系统的读写性能较之EXT2文件系统并来说,性能并没有降低。 4、数据转换 由EXT2文件系统转换成EXT3文件系统非常容易,只要简单地键入两条命令即可完成整个转换过程,用户不用花时间备份、恢复、格式化分区等。另外,EXT3文件系统可以不经任何更改,而直接加载成为EXT2文件系统。 5、多种日志模式 EXT3有多种日志模式,一种工作模式是对所有的文件数据及metadata(定义文件系统中数据的数据,即数据的数据)进行日志记录(data=journal模式);另一种工作模式则是只对metadata记录日志,而不对数据进行日志记录,也即所谓data=ordered或者data=writeback模式。系统管理人员可以根据系统的实际工作要求,在系统的工作速度与文件数据的一致性之间作出选择。

相关主题
文本预览
相关文档 最新文档