问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Linux里面什么是ext2fs?

发布网友 发布时间:2022-04-22 18:38

我来回答

1个回答

热心网友 时间:2022-05-21 15:37

EXT2FS第二代扩展文件系统(英语:second extended filesystem,缩写为 ext2),是LINUX内核所用的文件系统。它开始由Rémy Card设计,用以代替ext,于1993年1月加入linux核心支持之中。ext2 的经典实现为LINUX内核中的ext2fs文件系统驱动,最大可支持2TB的文件系统,至linux核心2.6版时,扩展到可支持32TB。其他的实现包括GNU Hurd,Mac OS X (第3方),Darwin (第3方),BSD。ext2为数个LINUX发行版的默认文件系统,如Debian、Red Hat Linux等 。

简介

Linux支持多种不同类型的文件系统:网络文件系统NFS,磁盘文件系统Extfs,特殊文件系统proc、tmpfs等。

Ext2fs文件系统基本概念

Inode

Ext2fs中,每个文件都用如下图所示的inode结构来描述,用户空间操作的对象是文件路径和名称,系统kernel把路径名称解析成inode,通过inode号来访问它代表的文件。

Mode:包含两个数据,文件类型(普通文件/目录/字符设备/块设备/符号链接/管道)和用户访问权限信息(0660)。

Owner info:文件属组信息。

Size:文件长度,单位是byte。

Timestamps:文件访问和修改的时间戳。

Links count:这个项在上图中没有体现,它记录了这个inode存在多少个链接,创建新文件时,其inode的links count应该为1,文件被删除后,这个inode的links count就变为0。

Data Blocks:指向真实的文件数据块,因为大文件可能会分配很多的block,直接在inode中保存所有的数据块指针将会比较困难,也会浪费掉很多空间,毕竟系统中大文件的数量是占少数的,所以设计了间接块指针(Indirect blocks)和二级块指针(Double blocks)来指向真实数据块。

实际上还应该包含了inode号。

目录

在Ext2fs中,目录被看做一种特殊文件,也用一个inode来描述,目录的data block中保存了目录下的所有内容,每条内容叫做一个entry,结构如下:

每条entry都保存了inode号、entry的长度、文件名长度、文件类型,并且都是4字节对齐。


特别地,每个目录下有两个特殊的子目录,'.'和'..',分别代表当前目录和上一级目录,这两个目录文件其实是硬链接。其中'..'有一个重要的作用:FS checker(可以把文件系统umount后手动执行e2fsck看看)在检查文件系统的时候,就会使用’..‘来检查目录是否可以追溯到挂载根目录,如果检查失败,目录便会被链接到挂载根目录下面的lost+found。

链接

为了方便系统内文件共享,Linux支持了两种基本的链接文件:硬链接和软链接(也叫符号链接)。

硬链接并不是一个独立的文件,不占用inode,只是在目录下创建了一条entry,其中inode号保存的是目标文件的inode号,访问硬链接时,文件系统通过inode将访问操作重定向到目标文件,实现了文件共享,所以硬链接就是多个文件名直接指向同一个inode,用stat命令也能看到其inode号就是目标文件的inode号,它的特点:

不能跨文件系统。

目标文件必须先存在(inode存在且link count不为0)。

只能对普通文件创建硬链接,目录不行。

删除一个硬链接文件并不影响其他有相同 inode 号的文件。

软链接是一个独立的文件,拥有自己的inode,其数据块存放的是目标文件的名称,访问软链接时,kernel先访问软链接的内容,拿到目标文件名,并重新启动路径解析,获取到目标文件inode号再向文件系统发起访问。软链接的特点:

可以跨文件系统。

文件和目录都可以。

可对不存在的文件或目标创建软链接。

软链接有自己文件属性和权限。

创建软链接时,链接计数 i_nlink 不会增加;

删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。

软链接的目标文件也可以是软链接,其解析过程是递归的。

注意:软链接创建时目标文件的路径指向使用绝对路径比较好,使用相对路径创建的软链接被移动后该软链接文件将成为一个死链接,因为链接数据块中记录的也是相对路径指向。

下面这个图清晰描述了硬链接和软连接之间的区别:

Ext2fs基本结构

在创建文件系统的时候,Ext2fs将设备(磁盘或者分区)划分成1K、2K或者4K的block,然后通过Block group来管理,Ext2fs/Ext3fs/Ext4fs的结构差不多(Ext2fs主要是少了日志功能相关的内容),大致如下图所示:

Super Block

Super Block是文件系统最重要的数据,它从设备开始位置偏移1024字节的地方开始存储,占用1个block。如果block的大小是1KB,那么Super Block就存放在block-1。如果block的大小是4KB,那Super block就存放在block-0。

在Ext2fs的第一个版本(reverson0),每个Block Group都会存储一份Super Block的一份副本,因为对空间浪费比较严重,后来的版本就只在部分Block Group(0、1、3、5、7、9这几个group)中保留了Super Block的副本,在这几个Group,和Super Block一起备份的还有Group Descriptor。当然,如果没有这么多Group,副本数量自然更少,在后面的demo中也可以看出来。其中Group-0中的Super Block叫作Primary Super Block,文件系统被mount时,VFS读取的也正是这份。

Super Block里面的具体数据包括:

inode和block的总数,以及还有多少未分配。

每个Block Group有多少个inode和block。

文件系统唯一身份标识符(UUID),每个设备上的文件系统UUID都不一样。

...

GDT

Group Descriptor Table,GDT在文件系统中的layout紧跟Super block后面,是文件系统第二关键的数据,它主要用于存放所有Block Group的信息:

Ext2fs为GDT预留了一部分空间,用于文件系统扩容。


通过冗余提高了文件系统可靠性:在多个group中保存了关键数据的冗余副本,包括super block、GDT,当这些关键数据损坏的时候,很容易从这些冗余副本中恢复。


提升性能:分成group后,inode table和data block之间的”距离“变近了,在执行I/O时,可能会减少磁头寻址的时间。

注:实际上inode size,每个group中的block数等参数都可以在创建文件系统的时候指定,具体命令参数参考man page。

Ext2fs的性能优化


为了提升I/O性能,Ext2fs内核代码也做了很多设计,其中有两个关键的技术:

提前读:当必须读取一个块时,内核代码在几个连续的块上请求I/O。通过这种方式,它试图确保要读取的下一个块已经加载到缓冲区缓存中。提前读通常在文件的连续读取期间执行,Ext2fs将它们扩展到目录读取,可以是显式读取(readdir(2)调用),也可以是隐式读取(namei内核目录查找)。

预分配:在将数据写入文件时,Ext2fs在分配新块时预先分配最多8个相邻块。具体预分配多少个块取决于block size:block size = 1KB,每次预分配2个block;block size = 2KB,每次预分配4个block;block size = 4KB,每次预分配8个block。当然,对于用touch创建的空文件是不会预分配block的。即使在非常满的文件系统上,预分配命中率也只有75%左右。这种预分配在负载较大的情况下可以获得良好的写性能,同时它还允许将连续的块分配给文件,从而加快未来的顺序读取。

下面是Ext2fs、Ext3fs和Ext4fs的一个简单对比:

只有Ext2fs的Filesystem state是not clean,Ext3fs和Ext4fs都是clean,Ext2fs刚被以读写模式mount时,这个state被设置成not clean,umount或者以只读模式mount时,state被设置成clean,启动时文件系统根据这个状态来决定是否要执行检查。

Ext3fs/Ext4fs的Super block中多了关于日志功能的信息。

Ext4fs的每个group多了校验和(checksum)数据。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 linux下执行fsck命令? Linux系统下执行fsck命令有什么作用 包子肉馅怎样做才好吃 肉包子怎么做好吃 包子馅的制作方法 在家制作肉包子的馅,有什么做法可以让馅鲜嫩多汁? 肉包子馅的最佳配方有哪些? 鲜肉包子馅调料秘方 鲜肉包子馅的做法! 肉包子馅的制作方法? 包子馅做法大全猪肉 肉包子馅怎么调 肉包子馅儿怎么调会鲜嫩多汁? 威少性格特点怎么样呢?他脾气大吗? 威少首秀战绩如何? 威少有多强? 别人叫自己威少是什么意思? 威少首次打总决仅23岁,他表现如何呢? 威少是最被高估的超巨吗? 威少是不是最被高估的球星? nba威少是谁 如何使用 fsck 命令检查和修复文件系统 linux下/etc/fstab文件详解 请说明fsck的概念,以及怎么使用 linux中很多命令包含e2fs,这个e2fs到底是什么意思?谢谢 蒸鲈鱼多少分钟 湖南涉外经济学院2021录取分数线 2019年湖南涉外经济学院专科分数线 2019年湖南涉外经济学院有哪些专科专业,近几年的录取分数线是多少? 湖南涉外经济学院2019年录取分数线是多少? 湖南涉外经济学院专科分数线是多少 调整好心情的经典句子有哪些? 湖南涉外经济学院专科录取分数线 调整好心情经典句子 湖南涉外经济学院的大专多少分能进? 调整情绪的正能量句子 贝壳找房可以不经过经纪人自己发布出租房源吗? 心态调整的好句子 湖南涉外经济学院2010专科分数是多少。。? 湖南涉外经济学院专科在湖南的招生分数 关于心态的句子 调整心态的励志句子