Linux里面什么是ext2fs?

作者&投稿:姬丹 (若有异议请与网页底部的电邮联系)
linux中很多命令包含e2fs,这个e2fs到底是什么意思?谢谢~

e2fsprogs提供了管理维护ext2/ext3文件系统的一系列管理工具 例如 makefs.ext2 makefs.etx3 tune2fs fsck.ext2 fsck.etx3 等等

EXT2第二代扩展文件系统(英语: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等
EXT3是第三代扩展文件系统(英语:Third extended filesystem,缩写为ext3),是一个日志文件系统,常用于Linux操作系统。它是很多Linux发行版的默认文件系统。
EXT4是第四代扩展文件系统(英语:Fourth extended filesystem,缩写为 ext4)是Linux系统下的日志文件系统,是ext3文件系统的后继版本。

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等 。

简介

    其单一文件大小与文件系统本身的容量上限与文件系统本身的簇大小有关,在一般常见的 x86 电脑系统中,簇最大为 4KB, 则单一文件大小上限为 2048GB, 而文件系统的容量上限为 16384GB。

    但由于目前核心 2.4 所能使用的单一分割区最大只有 2048GB,实际上能使用的文件系统容量最多也只有 2048GB。

    至于Ext3文件系统,它属于一种日志文件系统,是对ext2系统的扩展。它兼容ext2,并且从ext2转换成ext3并不复杂。

    Ext2文件系统具有以下一般特点:

    1、当创建Ext2文件系统时,系统管理员可以根据预期的文件平均长度来选择最佳的块大小(从1024B——4096B)。例如,当文件的平均长度小于几千字节时,块的大小为1024B是最佳的,因为这会产生较少的内部碎片——也就是文件长度与存放块的磁盘分区有较少的不匹配。另一方面,大的块对于 大于几千字节的文件通常比较合合适,因为这样的磁盘传送较少,因而减轻了系统的开销 [1]  。

    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的索引节点中为这些特性引入新的字段。最重要的一些特点如下:

    块片(block fragmentation)

    系统管理员对磁盘的访问通常选择较大的块,因为计算机应用程序常常处理大文件。因此,在大块上存放小文件就会浪费很多磁盘空间。这个问题可以通过把几个文件存放在同一块的不同片上来解决。

    透明地处理压缩和加密文件

    这些新的选项(创建一个文件时必须指定)将允许用户透明地在磁盘上存放压缩和(或)加密的文件版本。

    逻辑删除

    一个undelete选项将允许用户在必要时很容易恢复以前已删除的文件内容。

    日志

    日志避免文件系统在被突然卸载(例如,作为系统崩溃的后果)时对其自动进行的耗时检查。

    实际上,这些特点没有一个正式地包含在Ext2文件系统中。有人可能说Ext2是这种成功的牺牲品;直到几年前,它仍然是大多数Linux发布公司采用的首选文件系统,每天有成千上万的用户在使用它,这些用户会对用其他文件系统来代替Ext2的任何企图产生质疑。

    Ext2中缺少的最突出的功能就是日志,日志是高可用服务器必需的功能。为了平顺过渡,日志没有引入到Ext2文件系统;但是,我们在后面 “Ext3文件系统”中会讨论,完全与Ext2兼容的一种新文件系统已经创建,这种文件系统提供了日志。不真正需要日志的用户可以继续使用良好而老式的Ext2文件系统,而其他用户可能采用这种新的文件系统。现在发行的大部分系统采用Ext3作为标准的文件系统。

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)数据。




Linux里面tail -f命令作用是什么?
tail命令是一个在Linux和Unix系统中使用的命令行工具,用于显示文件的末尾内容。它可以从文件的最后一行开始显示,默认情况下显示文件的最后10行。tail命令的基本语法如下:tail [选项] [文件]常用的选项包括:-n<行数>:指定要显示的行数。例如,tail -n 20file.txt将显示文件file.txt的最后20行。-...

Linux里面chronyd作用是什么?
chrony是两个用来维持计算机系统时钟准确性的程序,这两个程序命名为chronyd和chronyc。chronyd是一个在系统后台运行的守护进程,他根据网络上其他时间服务器时间来测量本机时间的偏移量从而调整系统时钟。对于孤立系统,用户可以手动周期性的输入正确时间(通过chronyc)。在这两种情况下,chronyd决定计算机...

LINUX是什么系统
linux读音:['liniks]Linux学习的基本概念 (1)磁盘及分区 一块硬盘可以分为一个主分区和若干个扩展分区(逻辑分区),Linux操作系统可以安装在任何地方,因此许多机器可以做成多个windows系统及Linux多启动。在Linux下没有盘符的概念,不管是什么存储盘,在它里面都是一样对待的,系统里只有从根目录往下...

linux中的"~"是什么意思
~代表用户的\/home\/用户明目录。假设你的用户名是x,那么~\/就是\/home\/x\/ .是代表此目录本身,但是一般可以不写;所以cd ~\/. 和cd ~ 和cd ~\/效果是一样的。但是.后面有东西又是另外一个问题,点在文件名头部,代表一个隐藏文件。~\/.local是你的主目录下一个.local的文件夹的路径,并且从....

Linux里面pv和vg区别是什么?
逻辑卷管理(Logic Volume Manager),简称LVM,是动态磁盘分区管理技术,目前已经很少使用了,如果是学习,大可不必浪费时间掌握了。1.PV(Physical Volume),物理卷,即物理磁盘分区。2.VG(Volume Group),卷组,是所有物理卷PV组成的集合。3.LV(Logic Volume),逻辑卷,是从卷组VG中划分出来的存放...

Linux里面iptables作用是什么?
iptables和netfilter的关系 这是第一个要说的地方,Iptables和netfilter的关系是一个很容易让人搞不清的问题。很多的知道iptables却不知道netfilter。其实iptables只是Linux防火墙的管理工具而已,位于\/sbin\/iptables。真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构。iptables传输数据包的...

什么是Linux?Linux与Windows有什么区别?
但就目前来说,如果你对windows下层出不穷的病毒、木马、垃圾感到极度厌恶,那的确可以尝试一下linux噢。4、开源 开源就是指对外部开放软件源代码。如果一个小程序员写了个软件,里面有他独创的新技术,他想靠这个赚钱,甚至还为此申请了专利,这时某些团体以安全为由,要求他公开源代码(这样就可以仿制...

Linux里面sbin目录存放的是什么?
首先,Linux系统下的bin目录下都是二进制可执行文件。\/bin目录放置的是最基本的一些命令的可执行文件度,比如cp、mv、mkdir、chmod、chown等等知;\/usr下面也有一个bin目录:\/usr\/bin,它里面的文件道也是一些命令的可执行文件;如果是用户自内己容安装的软件,软件的主程序文件就会在\/usr\/local\/bin...

Linux里面locale命令作用是什么?
locale是linux系统中多语言环境的设置接口,Locale根据计算机用户所使用的语言,所在国家或者地区,以及当地的文化传统所定义的一个软件运行时的语言环境。通过locale来设置程序运行的不同语言环境,locale由ANSI C提供支持。locale的命名规则为<语言>_<地区>.<字符集编码>,如zh_CN.UTF-8,zh代表中文,CN...

Linux是干什么用的?
Linux主要用于运行UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux是一款免费的操作系统...

彰武县18090232636: HPFS、Ext2FS分区什么意思 -
长沙乔愈风: 1.HPFS,即High Performance File System(高性能文件系统),最早是随 OS/2 1.2 引入的,目的是提高访问当时市场上出现的更大硬盘的能力.此外,当时也需要一个新的可以扩展命名系统、组织性和安全性的文件系统,以便满足网络服务器...

彰武县18090232636: 什么是区Ext2区、Ext3区、Ext4?应当怎样分? -
长沙乔愈风: EXT2第二代扩展文件系统(英语:second extended filesystem,缩写为 ext2),是LINUX内核所用的文件系统.它开始由Rémy Card设计,用以代替ext,于1993年1月加入linux核心支持之中.ext2 的经典实现为LINUX内核中的ext2fs文件系统驱...

彰武县18090232636: ext2,ext3和ntfs有什么区别? -
长沙乔愈风: ext2,ext3是linux系统的日志文件系统,NTFS是windows的文件系统.区别就是使用的系统不同,linux系统是基于命令行页面,Windows系统是基于图形界面.Windows系统相对应用较广泛和大众化,linux系统一般是企业用以服务器,使用没那么广泛和大众化.Windows操作系统中的本地磁盘使用的格式就包含了NTFS这种文件格式,NTFS 提供长文件名、数据保护和恢复,并通过目录和文件许可实现安全性.而ext2,ext3是linux系统的日志文件系统需通过命令方式进行查看.

彰武县18090232636: linux系统下常见的文件格式有哪些 -
长沙乔愈风: 在Linux操作系统里有Ext2、Ext3、Linux swap和VFAT四种格式 Ext2:Ext2是GNU/Linux系统中标准的文件系统.这是Linux中使用最多的一种文件系统,它是专门为Linux设计的,拥有极快的速度和极小的CPU占用率.Ext2既可以用于标准的块设...

彰武县18090232636: Linux系统中有哪几种类型的文件. -
长沙乔愈风: minix文件系统是linux是前身,ext是minix文件系统的扩展.主要有以下几个:ext、ext2、ext3、xiafs等.ext2是linux系统的高效、可靠的文件系统,ext3是ext2的扩展,在ext2基础上增加日志功能.xiafsminix文件系统的扩展.

彰武县18090232636: SD卡扩展分区格式化从ext2转换成ext3是啥意思? -
长沙乔愈风: 是将ext2文件系统格式化为ext3系统,相当于对文件系统的升级.EXT2是第二代扩展文件系统,是LINUX内核所用的文件系统.它开始由Rémy Card设计,用以代替ext,于1993年1月加入linux核心支持之中.ext2 的经典实现为LINUX内核中的ext...

彰武县18090232636: Linux下Ext2与Ext3文件系统有哪些区别?
长沙乔愈风: Ext2: 是 GNU/Linux 系统中标准的文件系统,其特点为存取文件的性能极好,对于中小型的文件更显示出优势,这主要得利于其簇快取层的优良设计.其单一文件大小与...

彰武县18090232636: Linux文件系统的文件系统 -
长沙乔愈风: 在Linux中普通文件和目录文件保存在称为块物理设备的磁盘或者磁带上.一套Linux系统支持若干物理盘,每个物理盘可定义一个或者多个文件系统.(类比于微机磁盘分区).每个文件系统由逻辑块的序列组成,一个逻辑盘空间一般划分为几...

彰武县18090232636: 日志式文件系统的介绍 -
长沙乔愈风: 日志文件系统(journaling file system)是一个具有故障恢复能力的文件系统,在这个文件系统中,因为对目录以及位图的更新信息总是在原始的磁盘日志被更新之前写到磁盘上的一个连续的日志上,所以它保证了数据的完整性.当发生系统错误...

彰武县18090232636: linux的ext3文件系统与ext2文件系统有何不同 -
长沙乔愈风: 分区是将一个物理盘分成若干个逻辑盘 每个逻辑盘中必须具有一种文件系统 分区就是将物理盘隔开,文件系统就是将隔开的盘格式成某种类型的文件存储格式

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网