ExtX文件系统介绍_第1页
ExtX文件系统介绍_第2页
ExtX文件系统介绍_第3页
ExtX文件系统介绍_第4页
ExtX文件系统介绍_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ExtX文件系统介绍ExtX文件系统简介基本文件系统概念Ext2的磁盘结构文件系统日志文件的建立和删除Ext4目录什么是Extented文件系统Linux操作系统上第一个文件系统在Linuxkernel0.96c,April,1992版本中被引入,Linuxkernel2.2后停止使用使用VFSAPI接口打破了Minix系统中64MB文件大小、14字节长度文件名的限制,最大可支持2GB的文件大小和255字节长度的文件名不支持数据修改时间戳。Ext2文件系统简介基本文件系统概念节点目录链接挂载点设备文件基本文件系统概念节点(Inode)

inode用来定义文件系统的结构以及描述系统中每个文件的管理信息,每个文件都有且只有一个inode,即使文件中没有数据,其索引结点也是存在的。每个文件用一个单独的inode结构来描述,而且每一个inode都有唯一的标志号。分配给文件的数据区块的地址储存在它的节点中。当一个用户在文件上请求一个I/O操作时,内核把当前的偏移换到一个区块数字,使用这个数字作为区地址表的一个索引并且对物理区块进行读或写操作。[root@localhost~]#ls-li

lsfile.sh2408949-rwxr-xr-x1rootroot704-2112:47lsfile.sh

文件lsfile.sh的inode值是2408949基本文件系统概念节点(Inode)

Inode包含的信息文件类型访问权限所有者时间戳文件大小数据区块指针基本文件系统概念基本文件系统概念目录(Directories)

目录是一种特殊类型的文件,是一个包含入口列表文件。每一个入口包含一个节点数和一个文件名。当一个进程用到路径名时,内核在目录中搜索并找到符合条件的节点号。当路径名被转换成一个节号后,该节点便被载入内存并且用于随后的请求。基本文件系统概念目录(Directories)基本文件系统概念链接(Links)

硬链接:硬链接是一个指向inode的指针,增加一个链接仅创建一个目录项目,这个目录项目的节点数指向节点,系统并不为它重新分配inode,并且,硬链接只能指向文件,而且只用于单一的文件系统内,可以用ln命令来建立硬链接。软链接:也称符号链接,是一种包含文件名的简单文件,建立软链接就是建立了一个新文件。当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。基本文件系统概念两种链接的区别两种链接的优缺点优点缺点硬链接节省空间支持原文件移动不能在不同文件系统的文件间建立链接只能指向文件软链接任何文件系统可以指向任何文件不支持原文件移动使用一些硬盘空间基本文件系统概念挂载点在Unix中,目录既可以用来存储文件也可以作为卷的挂载点。假设一个被命名为FS1的文件系统中有个一个目录dir1,如果将文件系统FS2挂载到dir1目录,那么当一个用户进入dir1目录查看时,将会看到FS2的内容,原dir1中的文件将会被屏蔽。基本文件系统概念设备文件类Unix系统中,设备可以通过特殊的文件进行访问,一个设备文件是访问该设备入口。特殊文件有两种:字符:字节为单位进行读写,数据缓冲系统对它们的访问不提供缓冲块:允许随机访问,每次读写的数据量都是数据块长度的整数倍。Ext2硬盘布局Ext2硬盘布局超级块(Superblock)在每个块组中都保存了超级块的一个拷贝,默认情况下,只有第一个块组中的超级块结构才会被系统内核使用;其他块组中的超级块可以在e2fsck之类的程序对磁盘上的文件系统进行一致性检查使用。ext2文件系统会在每个块组中保存一份超级块的拷贝。当然,这会造成一定的空间浪费,因此在最新的ext2文件系统中,只是在特定的块组中保存一份超级块的拷贝。具体来说,是在第0、1个块组和第3、5、7的整数次幂个块组中保存一份超级块的拷贝,而其他块组中的空间都可以节省出来了。Ext2硬盘布局超级块(Superblock)

这是一个20GB大的ext2文件系统,每个块组的大小是32768个块,超级块一共有11个拷贝,分别存储在第0、1、3、5、7、9、25、27、49、81和125个块组中。默认情况下,内核只会使用第一个超级块中的信息来对磁盘进行操作。在出现故障的情况下,就可以使用这些超级块的备份来恢复数据了。Ext2硬盘布局超级块结构举例MagicNumber:EXT2文件系统签名,当前EXT2版本中为0xEF53,EXT3也是。InodesCount:索引节点的总数BlocksCount:Blocks计数BlockSize:以字节记数的文件系统块大小,如1024字节。BlocksperGroup:每个组中块数目。当文件系统创建时此块大小被固定下来。inodes_per_group:每个组中Inode数目FreeBlocks:文件系统中空闲块数。FreeInodes

:文件系统中空闲Inode数。FirstInode

:文件系统中第一个inode号。EXT2根文件系统中第一个inode将是指向'/'目录的目录入口。Ext2硬盘布局组描述符表(GroupDescriptorsTable)

块组描述符表也可以称为组描述符表,它起始于超级块所在块的下一个块,它是一个列表,由文件系统中描述每个块组的组描述符组成,通常每个块组中除文件内容以外,还会有管理数据,如超级块、组描述符表、inode表、inode位图块和块位图块,组描述符中说明了这些数据的存储位置。文件系统中的每个块组都在这个表中拥有一个包含该组相关信息的描述项。block_bitmap

块位图的块号inode_bitmap

索引节点位图的块号inode_table

第一个索引节点表块的块号free_blocks_count

组中空闲块的个数free_inodes_count

组中索引节点的个数used_dirs_count

组中目录的个数Ext2硬盘布局块位图和inode位图(BlockBitmapandinodeBitmap)文件和目录内容保存在块中,块的分配情况记录在块位图中,块位图跟在组描述符表的后面,并在组描述符中给出它所在的块号,块位图中每个bit对应一个块,即每个字节对应8个块。如果某个块已被分配使用,则与该块对应的块位图的bit位被置为“1”,未被使用的块对应的bit位则为“0”。与用块位图描述块的分配情况类似,ExtX

在每个块组内都用一个inode位图来描述块组内的所有inode的分配情况:Ext2硬盘布局Inode表

Inode用来存储文件和目录的元数据,块组中所有的inode形成一张inode表,inode表紧跟在Inode位图之后,每个inode包含如下信息文件类型访问权限所有者时间戳文件大小数据区块指针Ext2硬盘布局Inode中块指针示意图每个inode节点保护12个直接块指针,1、2、3级间接块指针各有一个Ext2硬盘布局

Inode中的时间

最后访问时间(A-time)

最后修改时间(M-time)

最后改变时间(C-time)

删除时间(D-time)Ext2硬盘布局

Inode中的时间当文件被建立时:

最后修改时间、最后访问时间和最后改变时间都会被设置为新建时的时间值,

删除时间设置为0,

父目录的最后修改时间和最后改变时间也会被更新。拷贝文件时:原文件及原文件的父目录,将会被更新最后访问时间,目标文件则有自己新的最后修改时间、最后访问时间和最后改变时间值,目标文件的父目录的最后修改时间和最后改变时间也会被更新。当一个文件被移动时:

原文件父目录的最后修改时间、最后访问时间、最后改变时间将会被更新,目标文件父目录的最后修改时间、最后改变时间将会被更新,目标文件与源文件具有同样的最后修改时间和最后访问时间以及被更新后的最后改变时间,如果文件移动是在同一个卷内进行,将会使用原来的节点。但如果是在不同的卷之间移动文件,源inode则会被取消分配,最后修改时间、最后访问时间、最后改变时间以及删除时间都将会被更新。Ext2硬盘布局目录在ExtX文件系统中,目录项用来存放文件或目录的名字。它们被保存在为目录分配的块中,包含文件或目录的inode地址信息。文件的目录项中记录着它的inode号,通过这个inode号找到它的inode后,从inode中获知其数据内容存储的块位置。ExtX的目录与一个正常文件很相似,只是它在inode中有不同的专用类型值。Ext2硬盘布局目录结构如在这个目录中有三个文件。前两个目录项是“.”目录项和“..”目录项,最后一个目录项的长度直接指向了分配块的末尾,文件3.txt后面的空间为未使用空间。删除文件时文件系统日志Ext3日志日志会记录哪些块要进行更新,它有两种操作方式,一种是只记录元数据的更新;另一种是记录包括数据块在内的所有更新。文件的建立文件建立的步骤(一)步骤1:读取位于文件系统1024字节处,大小为1024字节的超级块,通过超级块得知块大小和片段大小为1024字节,每个块组含有8192个块和2008个inode。第一个块组前存在1个保留块。步骤2:读取位于文件系统2号块的组描述符表,从表中可以得知各个块组的布局情况。步骤3:我们需要从根目录中找到目录“子目录1”,通常根目录为2号inode,因此我们访问2号inode。通过每组inode数,我们可以确定2号inode位于0号块组中。访问组描述符表中0号块组的组描述符表项,得知它的inode表起始于5号块。步骤4:从5号块读取inode表并访问第2个表项(即2号inode)。它的内容显示根目录的目录结构位于256号块。文件的建立文件建立的步骤(二)步骤5:从256号块读取根目录的内容并作为目录项列表进行查看。前两个目录项为“.”和“..”。利用各个目录项报告的记录长度向后查找,直到找到名字为“子目录1”的目录项。从它的目录项中得到它的inode号为4724。步骤6:用inode号4724对每组inode数2008做取整运算以确定这个inode位于哪个块组中,得到的结果是2号块组。由组描述符表中2号组的描述符表项得知它的inode表起始于16387号块。

步骤7:从16387号块读取inode表并查看4724号inode对应的708号表项(4724对每组inode数2008做取整运算后的余数),表项的内容显示“子目录1”目录的内容位于17216号块。步骤8:从17216号块读取“子目录1”的内容并当做目录项列表查看。在目录中查找空闲空间,file.txt的名字为7个字符,因此需要16个字节的空间。找到后将其添加进去,并将目录的最后修改时间和最后改变时间更新,将目录的改变情况记录到日志当中。

文件的建立文件建立的步骤(三)步骤9:为文件建立inode。文件的inode将会建立在它的父目录所在的块组中,在此为2号块组。从组描述符中得知2号块组的inode位图位于16386号块。进行查找,发现4850号inode为未分配的inode,将它在inode位图中的相应bit置1,将inode的地址添加到file.txt的目录项中。将位图、组描述符和超级块的改变记录到日志当中。步骤10:在2号块组中的inode表中找到4850号inode所对应的位置,写入内容并初始化inode值。时间值设置为当前时间,链接数设置为1。将inode的改变记录到日志当中。步骤11:File.txt文件内容需要6个块的存储空间,查看位于16385号块的块位图,使用第一可用分配策略在2号块组中查找空间块。找到20002~20003及20114~20117处的空间块后,将每个块在块位图中的相应bit设置为已分配,并将地址添加到4850号inode的直接块指针中。更新inode的最后修改时间和最后改变时间以表示它已经发生改变。将inode、组描述符、超级块和位图的改变记录到日志当中。步骤12:将file.txt的文件内容写入到它的分配块中文件的删除文件删除的步骤(一)步骤1:读取位于文件系统1024字节处,大小为1024字节的超级块,通过超级块得知块大小和片段大小为1024字节,每个块组含有8192个块和2008个inode。第一个块组前存在1个保留块。步骤2:读取位于文件系统2号块的组描述符表,从表中可以得知各个块组的布局情况。步骤3:我们需要从根目录中找到目录“子目录1”,因此我们访问2号inode。通过每组inode数,我们可以确定2号inode位于0号块组中。访问组描述符表中0号块组的组描述符表项,得知它的inode表起始于5号块。步骤4:从5号块读取inode表并访问第2个表项(即2号inode)。它的内容显示根目录的目录结构位于256号块。文件的删除文件删除的步骤(二)步骤5:从256号块读取根目录的内容并作为目录项列表进行查看。前两个目录项为“.”和“..”。利用各个目录项报告的记录长度向后查找,直到找到名字为“子目录1”的目录项。从它的目录项中得到它的inode号为4724。步骤6:用inode号4724对每组inode数2008做取整运算以确定这个inode位于哪个块组中,得到的结果是2号块组。由组描述符表中2号组的描述符表项得知它的inode表起始于16387号块。

步骤7:从16387号块读取inode表并查看4724号inode对应的708号表项(4724对每组inode数2008做取整运算后的余数),表项的内容显示“子目录1”目录的内容位于17216号块。步骤8:从17216号块读取“子目录1”的内容并当做目录项列表查看。在目录中查找file.txt的目录项,从而得知inode节点号为4850。取消它的目录项的分配,并记录日志。文件的删除文件删除的步骤(三)步骤9:从2号组的inode节点表读取4850号inode对应的节点项,将链接数减1,将inode节点位图相应的bit置为0,更新组描述符和超级块中的空闲节点数,将改变写入日志。步骤10:回收文件内容占用的6个块空间,将快位图置0,清楚inode的块指针,更新组描述符和超级块的空闲块,将改变写入日志。EXT4EXT4介绍Ext4是Ext3的改进版,修改了Ext3中部分重要的数据结构,而不仅仅像Ext3对Ext2那样,只是增加了一个日志功能而已。Ext4可以提供更佳的性能和可靠性,还有更为丰富的功能,Linuxkernel自2.6.28开始正式支持新的文件系统Ext4。EXT4EXT4特点(一)与Ext3兼容更大的文件系统和更大的文件:较之Ext3目前所支持的最大16TB文件系统和最大2TB文件,Ext4分别支持1EB的文件系统,以及16TB的文件。

Extents:Ext3采用间接块映射,当操作大文件时,效率极其低下。比如一个100MB大小的文件,在Ext3中要建立25,600个数据块(每个数据块大小为4KB)的映射表。而Ext4引入了现代文件系统中流行的extents概念,每个extent为一组连续的数据块,上述文件则表示为“该文件数据保存在接下来的25,600个数据块中”,提高了不少效率。多块分配:当写入数据到Ext3文件系统中时,Ext3的数据块分配器每次只能分配一个4KB的块,写一个100MB文件就要调用25,600次数据块分配器,而Ext4的多块分配器“multiblock

allocator”(mballoc)支持一次调用分配多个数据块。EXT4EXT4特点(二)延迟分配:Ext3的数据块分配策略是尽快分配,而Ext4和其它现代文件操作系统的策略是尽可能地延迟分配,直到文件在cache中写完才开始分配数据块并写入磁盘,这样就能优化整个文件的数据块分配。快速fs

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论