快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

永乐国际乐在其中尤文:Linux 日志文件系统剖析:日志的现在和未来



定义日志文件系统的措施有很多种,然则让我们捉住要点。日志文件系统便是专为那些厌倦了不停盯着启动时 fsck(即文件系统同等性反省)的人而设计的(日志文件系统同样适用于盼望文件系统具有故障规复能力的群体)。假如系统采纳传统的未供给日志功能的文件系统,那么操作系统在检测到系统为非正常关机时,会应用 fsck 利用法度榜样履行同等性查验。该利用法度榜样会扫描文件系统(这要花费很长的光阴),并修复任何可安然修复的问题。而在某些环境下,当文件系统毁坏严重时,操作系统会启动到单用户模式,由用户进行进一步的修复。

fsck 问题

更麻烦的是,为了确保文件系统元数据的精确性(纵然未检测到毁坏),操作系统会自动启动 fsck 进程。是以,避免对文件系统进行同等性查验恰是必要改进的地方。

那么现在您应该清楚日志文件系统针对的是哪类人群了,然则他们是若何撤消 fsck 的呢?笼统地说,日志文件系统便是经由过程掩护一份日志来防止文件系统崩溃。所谓日志便是一种特殊的文件,它会在一个轮回的缓冲区内记录文件系统的改动,然后将其按期提交到文件系统。一旦系统发生崩溃,日志文件就会起到一个反省点的感化,用于规复未保存的信息,防止毁坏文件系统元数据。

总之,日志文件系统便是一种具有故障规复能力的文件系统,它使用日志来记录尚未提交到文件系统的改动,以防止元数据破坏(请拜见图 1)。然则如浩繁其他 Linux 办理规整洁样,日志文件系统有多种规划供您选择。下面就让我们一路简短回首一下日志文件系统的历史,然后再看一看现行的几种文件系统,看看它们之间有什么差别。

什么是元数据?

元数据 指磁盘上的数据的治理布局。它表示文件的创建与删除、目录的创建与删除、扩充文件、截取文件等。

图 1. 范例的日志文件系统

Linux 日志文件系统的历史

最早的日志文件系统是 IBM® Journaled File System(JFS)。JFS 于 1990 年头?年月次发行,而当前 Linux 支持的版本是后期开拓的 JFS2。1994 年,Silicon Graphics 为 IRIX 操作系统引进了高机能的 XFS。XFS 于 2001 年被植入 Linux 系统中。永乐国际乐在其中尤文1998 年开拓的智能文件系统(SFS)起先是为 Amiga 开拓的,但之后却在 GNU Lesser General Public License(LGPL)下发行,并于 2005 年得到了 Linux 的支持。最常用的日志文件系统 ext3fs (third extended file system)是 ext2 的扩展,它增添了记录日志的功能。从 2001 年起,Linux 系统中就开始支持 ext3fs。终极,ReiserFS 日志文件系统在其被引入之后,力压群雄,被广泛应用。但因为其原开拓者的一些司法胶葛,ReiserFS 日志文件系统未能获得进一步的成长。

日志的几种变体

日志文件系统是应用日志来缓冲文件系统的改动(同时也可以利用于紧急故障规复)的,但可以根据记录的光阴与内容采取不合的策略。此中,三种常见的策略为:回写(writeback)、预定(ordered)和数据(data)。

在回写模式 中,仅有元数据被记录到日志,数据块则被直接写入到磁盘位置上。这样可以保存文件系统布局,防止崩溃,但却有可能发生数据崩溃(比如:在元数据记录到日志后,数据块写入磁盘前,系统崩溃)。要想办理这个问题,您可以应用预定模式。预定模式 只将元数据记录到日志,然则在此之前将数据写入到磁盘。这样就可以包管系统规复后数据和文件系统的同等性。着末一种模式将数据也记录到了日志中。在数据模式 中,元数据和数据都被记录到日志中。这种模式可以最大年夜限度地防止文件系统崩溃与数据永乐国际乐在其中尤文损掉,但因为整个数据都写入了两次(先写入日志,再写入磁盘),系统机能可能会低落。

日志的提交也有很多种不合的策略。比如,是在日志将满时,照样在超时后?

日志文件系统的现状

如今,有几种日志文件系统利用异常广泛。每一种都有其自己的优毛病。下面先容现存最普遍的四种日志文件系统。

JFS2

JFS2(又称 enhanced journaled file system)是最早期的日志文件系统,在植入 Linux 之前已被利用于 IBM AIX® 操作系统多年。它是 64 位的文件系统,虽然它是在原本的 JFS 的根基上开拓的,但却较之有所改进,即:JFS2 具有更优的扩展机能,而且支持多处置惩罚器架构。

JFS2 支持预定的日志记录要领,可以前进较高的机能,并实现亚秒级文件系统规复。JFS2 同时为前进机能供给了基于分区的文件分配(Extent-based allocation)。基于分区的分配 是指对一组继续的块而非单一的块进行分配。因为这些块在磁盘上是继续的,其读取和写入的机能就会更好。这种分配的别的一个上风便是可以将元数据治理最小化。按块分配磁盘空间就意味着要逐块更新元数据。而应用分区,元数据则仅需按照分区(可以代表多个块)更新。

JFS2 还应用了 B+ 树,以便更快地查找目录和治理分区描述符。JFS2 没有内部日志提交策略,而是在 kupdate 守护进程超不时提交。

XFS

XFS 是 Silicon Graphicsis 于 1995 年为 IRIX 操作系统开拓的其他早期日志文件系统之一。它于 2001 年就已经被植入 Linux,是以,它已经成熟而且靠得住。

XFS 支持 64 位全地址寻址,并以 B+ 树为目录和文件分配供给高机能。XFS 同样应用了基于分区的分配,支持可变的块大年夜小(从 512 字节到 64KB )。除分区外,XFS 还采纳延时分配,即等到块将被写入磁盘时,再为其分配磁盘空间。这样所需磁盘空间总数就一清二楚,是以这个功能前进了分配继续磁盘块的可能性。

XFS 还有一些其他的有趣特点,它可以包管 rate 输入输出(I/O — 经由过程为文件系统用户保留带宽)和直接 I/O。此中,数据是直接在磁盘和用户空间缓冲区间拷贝的(而不是从多个缓冲区进入)。XFS 采纳回写日志策略。

第三扩展文件系统(ext3fs)

第三扩展文件系统(third extended file system,ext3fs)是最盛行的日志文件系统,是由 ext2 文件系统演化而来。实际上,Ext3fs 可以与 ext2fs 兼容,这是由于 ext3fs 应用的布局与 ext2fs 相同,仅仅多了一个日志而已。我们以致可以把 ext3fs 的一部分算作 ext2 文件系统挂载,或者永乐国际乐在其中尤文将 ext2 文件系统转换成 ext3 文件系统(应用 tune2fs 实用法度榜样)。

Ext3fs 容许用三种要领记录日志(回写,预定和数据),但预定模式为默认模式。日志提交策略也是可设置设置设备摆设摆设的,然则默认在日志填满 1/4 时或此中一个提交计时器超不时,提交日志。

ext3fs 主要的弊端之一便是它最初不是作为日志文件系统而设计的。它是在 ext2fs 的根基上开拓的,是以缺少一些其另日志文件系统所具备的高档特点(例如分区)。它在机能方面较之 ReiserFS、JFS 以及 XFS 也尤为减色,但它所必要的 CPU 和内存要比同类办理规划少。

ReiserFS

什么是 tail packing?

很多环境下,一些文件的大年夜小小于逻辑块。为了不把可以分配给一个逻辑块的磁盘空间挥霍给小文件(称之为tail),于是把多个文件打包到一个单一的逻辑块中。结果发明这种措施可以让磁盘空间的容量比其他竞争文件系统(有永乐国际乐在其中尤文机能丧掉)高 5%。

ReiserFS 是从一开始就按照记录日志的意图而开拓的日志文件系统。ReiserFS 于 2001 年被引进到主流 2.4 内核(Linux 采纳的第一个日志文件系统)。其默认的日志记录措施为预定,且支持以在线调剂大年夜小的要领扩展文件系统。ReiserFS 同时还具有 tail packing 功能,显明削减了磁盘碎片。在处置惩罚较小文件方面,ReiserFS 的速率要比 ext3f 快(当 tail packing 可用时)。

ReiserFS(又称 ReiserFS v3)具有很多先辈的功能,如 B+ 树。该文件系统的根基款式建立在单一的 B+ 树的根基之上,这使得搜索的效率和可伸缩性增强。永乐国际乐在其中尤文提交策略则取决于日志的大年夜小,然则要以待提交的块的数量为根基。

ReiserFS 也碰到了几个问题 — 大年夜多是近来呈现的,这与其开拓者碰到了一些司法胶葛有直接缘故原由。

日志文件系统的未来

现在您已经懂得了现行的(和以前的)日志文件系统,下面就让我们看一看它的成长趋势。

Reiser4

在成功地将 ReiserFS 合并到 Linux 内核,并被很多的 Linux 发行版采纳之后,Namesys(开拓 ReiserFS 的公司)便开始致力于新的日志文件系统的开拓。Reiser4 被设计成为全新的日志文件系统,它拥有很多先辈的功能。

Resier4 拟定经由过程 wandering 日志和延迟分配块直至日志提交(像在 XFS 中一样)的要领来实现更优秀的日志记录。Reiser4 还设计有机动的插件架构(以支持诸如压缩和加密之类的功能),然则被 Linux 社区回绝了,由于这些在虚拟文件系统(virtual file system,VFS)被算作是最好的功能。

因为 Namesys 的所有者的坚持,所有关于 Reiser4 的商业活动都竣事了。

第四扩展文件系统

第四扩展日志文件系统(fourth extended journaling file system,ext4fs)是由 ext3fs 演化而来。Ext4 文件系统被设计为具有向前和向后兼容性,但它具有许多新的高档特点(此中的一些特点破坏了兼容性)。这就意味着您可以将 ext4fs 的一部分作为 ext3fs 挂载,反之亦然。

首先,ext4fs 是 64 位文件系统,并被设计为可以支持很大年夜的容量(1 exabyte)。它还可以应用分区,然则这样做将掉去与 ext3fs 的兼容性。像 XFS 和 Reiser4 一样,ext4fs 还支持在需要时采取延时分配要领分配块(这样可以削减磁盘碎片)。日志的内容也已经履行过反省和(checksum),使日志加倍靠得住。ext4fs 并没有采纳标准的 B+ 或者 B* 树,取而代之的是 B 树的一种变体,叫做 H 树,它支持更大年夜的子目录(ext3 的上限为 32KB )。

虽然延时分配的措施可以削减磁盘碎片,但光阴久了,一个大年夜的文件系统可能会成为碎片。为办理这个问题,开拓了在线磁盘碎片收拾对象(e4defrag)。您可以应用这个对象来收拾单个的文件或者全部文件系统。

ext3fs 与 ext4fs 间的另一个有趣的差别就在于文件的日期分辨率。在 ext3 中,光阴戳的最小分辨率为 1 秒。而 Ext4fs 是面向未来的:那时处置惩罚器和接口的速率会持续加快,必要更高的分辨率。是以,ext4 中光阴戳的最小分辨率为 1 纳秒。

Ext4fs 已被合并到自 2.6.19 今后的 Linux 内核中,但它照样不敷稳定。下一代系统的开拓将继承致力于此;辅之以上一代的上风, 它就会是下一代的 Linux 日志文件系统。

停止语

日志文件系统在系统崩溃或断电时供给了靠得住性,并防止系统崩溃。别的,与较传统的文件系统措施(比如那些依附于 fsck 的系统)比拟,日志文件系统大年夜大年夜地缩短了系统崩溃的规复光阴。新的日志记录功能的开拓要指望将来的新算法与布局,也要仰仗曩昔的算法与布局,将 JFS 和 XFS 的功能结合起来。将翌日未来志文件系统到底会若何成长还不得而知,但可以确定的是它们会更具实用性,并会成为新的日志文件系统标准。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: