网站建设中,中国大陆地区请使用VPN访问,欢迎提建议,关注LSKR Mastodon

深入解析Ext2文件系统:格式化、分区关系及文件结构详解

本文解释了文件系统和格式化的概念,详细介绍了Ext2文件系统的布局、inode表、目录和文件记录方式,盖了日志功能和文件系统的实际运行。
Estimated read time: 1 min

概述

本文基于Ext2文件系统,描述了建立系统分区后,建立的Ext2文件系统。

1️⃣文件系统和格式化

所谓格式化就是将分区格式成一种文件系统,使得操作系统可以实际进行访问。

每种操作系统可以操作的文件系统也是不同

比如:

  • windows 在98之前都是使用的是FAT文件系统
  • windows 2000之后使用的NTFS文件系统
  • Linux 系统使用的是ext2文件系统

随着技术的发展,操作系统通常可以支持多种文件系统。

2️⃣分区与格式化关系

传统的一个磁盘分区只可以被格式化为一个文件系统,所以,也就有了一个文件系统对应的是一个磁盘分区。

新技术

LVM 和RAID 技术:

允许将一个分区格式化为多个文件系统,以及多个分区合并为一个文件系统,使得系统可以更加灵活的运行系统格式化问题。

随着技术发展:当我们系统挂在一个文件系统的时候,不再说挂载分区了。因为分区和文件系统不是一一对应的关系了。

但是明确的是:操作系统挂载的是文件系统。

3️⃣概览文件系统

这里我们概览下文件系统,但是我们不指定具体的文件系统,概述大多数文件系统都应该有的组成部分。

  • 超级区块 superblock:这个部分用于记录文件系统的整体信息,包括inode与数据区块总量等等信息
  • inode:一个文件占用一个inode,,主要记录的是文件属性,以及文件数据所在区块号码
  • 数据区块 data block:存放的是一个文件具体的数据

相互之间的关系如图

Linux Ext2文件系统区块示意图

这是一张典型的索引式的文件系统

inode 4记录了一个文件,数据块所在位置为:2、7、13、15

4️⃣Linux Ext2 文件系统

一张Ext2文件系统结构示意图


ext2是其中一个较早期的文件系统,它是“第二扩展文件系统”(Second Extended Filesystem)的简称。ext2是Linux内核最初使用的默认文件系统之一,用于管理磁盘驱动器上的文件和目录。

虽然ext2文件系统在一些早期的Linux发行版中被广泛使用,但随着后续版本的推出(如ext3和ext4),它的使用逐渐减少。后续的ext3和ext4文件系统在可靠性、性能和功能上都有所改进,因此更适合用于当今的Linux系统。

每个 Ext2 分区中的第一个块从不由 Ext2 文件系统管理,因为它是为分区引导扇区保留的(参见附录 A)。Ext2 分区的其余部分被拆分为多个块组,某些数据结构必须正好适合一个块,而其他数据结构可能需要多个块。文件系统中的所有块组都具有相同的大小,并且按顺序存储,因此内核可以简单地从其整数索引中派生块组在磁盘中的位置。

块组可减少文件碎片,因为如果可能,内核会尝试将属于某个文件的数据块保留在同一块组中。块组中的每个块都包含以下信息之一:

  • A copy of the filesystem’s superblock 文件系统超级块的副本
  • A copy of the group of block group descriptors 块组描述符组的副本
  • A data block bitmap 数据块位图 区块对照表,用于快速的找到空区块
  • An inode bitmap inode 位图 inode对照表用于找到未使用的iNode号码
  • A table of inodes 索引节点表
  • A chunk of data that belongs to a file; i.e., data blocks 属于文件的数据块;即数据块

每个块组中的超级块和组描述符都是重复的。内核仅使用超级块和块组 0 中包含的组描述符,其他区块群组中超级块和描述是做备份使用。

4.1 Ext 2组成

首先,在格式化的时候,文件系统做了很多事,比如检测,然后格式化,主要的作用是建立的inode和数据区块等工作,格式化完成以后,用户才可以存放数据

1.头部 =引导扇区,对的文件系统部分也有对应的引导扇区,我们知道一个磁盘都有一个引导扇区,但是在哪一个扇区会执行对应的分区内部的文件爱你系统的扇区。

2.数据区块,ext2有1k/2k/4k三种区块

3.inode table

4.2 详解inode表组成

文件属性:读写执行属性wxr、文件所属用户组和拥有者、文件大小、文件的ctime、atime、mtime

指向:即数据块块的位置指向

inode 大小为:128B

每一个文件都对应一个inode,文件系统能够建立的文件数量,对应的inode的个数,inode个数会限制系统可以创建的文件个数

5️⃣Ext2记录目录

当我们建立一个目录的时候,文件系统会分配一个iNode 与至少一个区块给目录。

iNode 记录属性和权限,并且记录分配数据区块位置

数据块:记录了目录下的文件名和文件占用的 iNode号码

查看文件的iNode 号码

osboxes@osboxes ~> ll -i
total 44K
11010057 drwxr-xr-x 4 osboxes osboxes 4.0K Dec 25 01:24 Desktop/
11010061 drwxr-xr-x 2 osboxes osboxes 4.0K Mar 10 2019 Documents/
11010058 drwxr-xr-x 2 osboxes osboxes 4.0K Mar 10 2019 Downloads/
11010051 -rw-r--r-- 1 osboxes osboxes 8.8K Mar 10 2019 examples.desktop
11010062 drwxr-xr-x 2 osboxes osboxes 4.0K Mar 10 2019 Music/
11010063 drwxr-xr-x 2 osboxes osboxes 4.0K Mar 10 2019 Pictures/
11010060 drwxr-xr-x 2 osboxes osboxes 4.0K Mar 10 2019 Public/
11010059 drwxr-xr-x 2 osboxes osboxes 4.0K Mar 10 2019 Templates/
11010064 drwxr-xr-x 2 osboxes osboxes 4.0K Mar 10 2019 Videos/
11010187 -rw-r--r-- 1 root   root       0 Dec 25 01:21 x

6️⃣Ext2记录文件

我们创建一个文件时候,文件系统会分配一个iNode 与文件大小的数据区块

举例:当我们在4K的ext文件系统上,创建一个100KB的文件时候,会发生什么?

1.分配一个iNode 和25个数据区块

2.由于iNode仅有12个直接指向,因此还会分配有一个区块来记录号码

7️⃣日志功能

日志的功能,主要用于系统的恢复。任何操作只有被日志记录完成,才算是最终完成了,如果在操作的过程中出现了断电等失败,就可以根据日志判断是否处理完成,以进行恢复和判断。

1.当系统写入一个文件时候,会先记录在日志记录区块中需要写入的文件信息

2.然后实际写入并且更新元数据信息

3.最后在日志中记录数据写入完成,

只有这三个步骤都完成,文件系统才算完成一个操作。这样,当写入失败或者发生中断,就可以到日志中检查、判断

8️⃣文件系统的实际运行

实际运行的过程中,日志会采用的异步方式运行。前台用户操作文件,文件会被调入到内存中操作,操作完成后,文件并不会直接保存早硬盘,而是有系统自行判断是否需要写入硬盘,通常会先保存在内存中,方便用户下次调用。

对于前台用户来说,文件被修改了。对于实际硬盘来说,此时可能并没有被写入,但是内存中的文件是被修改的。系统会自行处理,将内存文件与实际硬盘文件进行同步处理。这就是所谓异步处理机制。

他的本质是不影响前台用户使用逻辑的情况下,在后台系统自动优化硬盘的使用方式。由于内存比硬盘快很多,如果每次修改文件都要实时同步写入硬盘的话,会造成的系统运行很慢。而异步机制可以保证文件修改在内存中,给用户感觉写入到硬盘了,而系统会系统处理后台的逻辑。

用户可以使用sync命令,强制将已经修改的文件,手动写入到硬盘中。同样这个命令会在用户关机或者重启的时候,自动执行,防止硬盘数据与内存数据不一致的情况发生。

发表评论

Cookie Consent
我们使用 Cookie 来了解您如何使用我们的网站并提升您的体验。这包括个性化内容和广告。
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.