微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Linux的日志文件系统简要剖析

Linux的日志文件系统简要剖析

时间:05-01 来源:电脑软硬件应用网 点击:

这种分配的另外一个优势就是可以将元数据管理最小化。按块分配磁盘空间就意味着要逐块更新元数据。而使用分区,元数据则仅需按照分区(可以代表多个块)更新。

  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

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

虽然延时分配

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top