`
还可以
  • 浏览: 80960 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

linux中的ext文件系统剖析

阅读更多

关于磁盘分区的一些知识点
linux中文件系统和磁盘分区是紧密结合的,一般情况下一个磁盘分区只能被格式化为一个文件系统。但也存在技术将一个分区格式化为多个文件系统。在linux操作系统上,组成磁盘分区的最小单位为磁盘上的柱面。磁盘的分区有两部分组成:主分区和扩展分区(磁盘的分区信息存放在磁盘分区表里面,一个分区一条记录,每个分区的记录中都是记录这个分区所占用的柱面区间)。而扩展分区可以包含多个逻辑分区,主分区最多4个,逻辑分区根据不同的硬盘类型会有不同的数量限制。比如SATA磁盘可以有11个逻辑分区,而IDE硬盘逻辑分区可以有59个。无论是SATA硬盘还是IDE硬盘,其逻辑分区号码都只能从5开始,1-4的分区编号只能被主分区使用。以下分别是全为主分区的分区表与既存在主分区也存在扩展分区的情况:




关于ext文件系统的组成:
block:
磁盘分区只有被文件系统格式化之后才能被操作系统使用。被文件系统格式化后的分区的最小单位为block,在格式化分区的时候可以对block的大小进行指定,一般为1KB,2KB,4KB。
inode block:
用于存放文件和目录的权限信息,比如当前用户对当前文件是否可读、可写、可执行。每一个inode block都是编有号码的,同时每一个inode block都与一个data block相关联。
data block:
存放文件的实际数据,data block同样是有进行编号的。inode block与data block的关系如下图:

当文件数据的容量超过了一个block的大小时,会将文件的数据分别存放到多个block中。inode中会存放所有data block的索引。
inode table:
记录当前文件系统中所有的inode信息。
inodebitmap:
记录当前文件系统中未被使用的inode block块。
databitmap:
记录当前文件系统中未被使用的data block块。
superblock:
用于存放当前文件系统中inode block和data block的使用情况。


关于目录在文件系统中是如何被表示的:
文件系统中每个目录同样对应一个inode block和一个data block,inode block中记录该目录的权限,data block中记录的是当前目录下所有文件的文件名,和这些文件所对应的inode block的索引。目录与其对应的inodeblock的关系如下:



文件系统与目录树的结合
由于操作系统中只能通过目录树才能对文件进行操作,所以要将文件系统与目录树进行结合,这种结合的方式就是挂载。文件系统只能被挂载在目录下。挂载成功之后,就可以在目录下对文件进行操作了。

ext2文件系统与ext3文件系统的区别:
说道ext2与ext3文件系统的区别就不得不说这两种文件系统对写文件的区别,ext2文件系统对文件的写入是通过以下步骤进行的:
1、查看inode bitmap中未被使用的inode block,将文件的权限信息写入未被使用的inodeblock。
2、查看data bitmap中未被使用的data block,将文件数据内容写入datablock。
3、将datablock的索引写入inodeblock中。
4、修改inode bitmap和data bitmap中的信息,将被使用掉的inode block和data bitmap标记为已使用。
5、更新superblock中的信息。
从这上面的几个文件写入步骤中就可以看出这样的写入顺序是存在一定的问题的:
当发生异常情况时,比如突然断电,就可能会导致不同表中的数据不一致,这种不一致可能出现在很多方面,inode bitmap、data bitmap表中的情况可能和这两个块实际使用的情况不一致;inode bitmap、data bitmap这两张表中的内容可能和superblock中记录的数据不一致。这些不一致会使数据在异常情况后的恢复比较困难。为了解决这种数据不一致的情况,所以出现了ext3文件系统。它与ext2文件系统的区别就是多了个日志记录功能,在日志写数据之前会进行日志记录,在数据写完成之后也会进行日志记录,中间写数据的过程也是先写日志再写数据,这就使数据的恢复可以根据日志来进行,这就感觉有点像一般的关系型数据库对数据的写入方式,先写日志再写数据。


分享到:
评论

相关推荐

    Linux EXT4文件系统分析.pdf

    Linux EXT4文件系统分析.pdf

    linux ext2 文件系统模拟 c语言实现

    Linux的EXT2(第二扩展文件系统)是早期广泛使用的文件系统之一,特别是在嵌入式系统和Linux服务器上。EXT2的C语言实现是一项技术性极强的任务,涉及到对操作系统底层机制的理解,包括文件系统的结构、inode、超级块...

    EXT4 源码+window下模拟ext2+linux_ext文件系统模拟

    通过分析EXT4源码和模拟代码,不仅可以提升对EXT文件系统的理解,还可以加深对Linux内核和文件系统设计原理的认知。这些知识对于解决实际问题,比如优化文件系统性能、调试文件系统错误或者开发新的文件系统都有很大...

    ext文件系统浏览

    标题中的“ext文件系统浏览”指的是能够查看和操作Linux操作系统使用的EXT系列文件系统(如EXT2、EXT3、EXT4)的工具。在Windows环境下,由于默认不支持这些文件系统,因此需要借助特定的软件来实现对它们的浏览和...

    linux ext4文件系统分析

    Linux ext4文件系统是Linux操作系统中使用非常广泛的文件系统类型之一,相较于早期的ext3文件系统,在性能和扩展性方面有了显著的提升。ext4文件系统的诞生解决了存储容量增长带来的挑战,同时优化了文件系统结构,...

    Linux EXT2 文件系统介绍和实例分析

    Linux EXT2 文件系统是Linux操作系统中的一个重要组成部分,它是由Rey Card设计的,旨在为Linux提供一个强大且可扩展的文件系统。EXT2是Linux早期广泛使用的文件系统,它的成功在于其简洁的设计和高效的性能。EXT3...

    模拟Linux ext2文件系统

    Linux的ext2(第二扩展文件系统)是早期广泛使用的文件系统之一,它的设计简洁,适合小型设备和资源有限的环境。这个C语言实现的工程旨在模拟ext2文件系统,为学习者提供一个直观的平台来理解和研究其工作原理。下面...

    Linux Ext2fs文件系统分析.pdf

    Linux Ext2fs文件系统分析.pdf

    基于嵌入式Linux的Ext 2根文件系统制作分析.pdf

    基于嵌入式Linux的Ext 2根文件系统制作分析.pdf

    Linux2.6内核下Ext3文件系统的数据结构及性能分析.pdf

    Linux操作系统作为开源界的佼佼者,在服务器、嵌入式系统和实时操作系统等众多领域...通过本文的分析,可以对Ext3文件系统的操作原理和性能特点有一个全面的认识,这将有助于在实际应用中更有效地部署和管理Linux系统。

    linux 系统EXT3修复工具

    2. debugfs:这是一个强大的EXT文件系统调试工具,可以用于查看和修改文件系统内部结构。例如,修复丢失的链接、恢复删除的文件等。 3. e2fsck:EXT2/EXT3/EXT4文件系统专用的fsck工具,提供更细致的检查和修复功能...

    Linux 文件系统剖析

    ### Linux 文件系统剖析 #### 一、引言 在当今高度发展的信息技术领域中,Linux操作系统以其卓越的灵活性和强大的功能而著称。特别是在文件系统管理方面,Linux展现出了极高的适应性和扩展性,能够支持多种多样的...

    EXT2文件系统

    EXT2文件系统是 Linux 系统中的标准文件系统,由 Minix 文件系统扩展而来,具有高效的存取性能。在 EXT2 文件系统中,文件由 inode 进行唯一标识,每个文件可能对应多个文件名,只有在所有文件名都被删除后,该文件...

    Linux实现从Ext2到Ext3文件系统的转换.pdf

    【Linux实现从Ext2到Ext3文件系统的转换】 在Linux操作系统中,文件系统是管理和组织磁盘数据的关键组件。从Ext2升级到Ext3文件系统是一个常见的操作,以获得更高级的功能,如日志记录,这能提高系统的稳定性和数据...

    linux文件系统分析与研究

    通过对Linux文件系统尤其是Ext2文件系统的深入分析,我们可以了解到其设计的精妙之处,以及如何通过高效的资源管理和数据组织来实现高性能的操作系统。这对于理解现代操作系统的核心原理和技术细节具有重要意义。

    fat ntfs ext文件系统详解

    总的来说,了解和掌握FAT、NTFS和EXT文件系统的特性和操作,对于任何IT专业人员来说都是至关重要的,无论是在日常的文件管理还是在面临数据丢失问题时,都能提供必要的知识支持。通过深入学习这三种文件系统,你可以...

    Linux Ext2和Ext3文件系统

    Ext2和Ext3作为Linux的核心文件系统,在过去几十年中发挥了重要作用。它们的设计理念和技术细节不仅为后来的文件系统发展奠定了基础,也为广大开发者和用户提供了一个稳定、高效且易于管理的文件存储解决方案。虽然...

Global site tag (gtag.js) - Google Analytics