系统日志,日志文件系统解析--日志的如今和未来

如果您有疑问或建议,请进入技术讨论区交流 >>>
日志文件系统解析--日志的如今和未来,定义日志文件系统的办法有许多种,但是让我们抓住要素。日志文件系统就是专为那些厌倦了不断盯着启动时 fsck(即文件系一致致性检验)的人而设计的(日志文件系统一样适用于期盼文件系统具有毛病恢复才干的群体)。假设系统采用传统的未提供日志功用的文件系统,那么操作系统在检测到系统为非正常关机时,会运用 fsck 使用顺序执行一致性检验。该使用顺序会扫描文件系统(这要破费很长的时间),并修正任何可安全修正的疑问。而在某些情况下,当文件系统损坏严重时,操作系统会启动到单用户方式,由用户举行进一步的修正。
fsck 疑问
更费事的是,为了确保文件系统元数据的正确性(即便未检测到损坏),操作系统会自动启动 fsck 进程。因而,防止对文件系统举行一致性检验正是须要改进的地点。 
那么如今您应该清楚日志文件系统针对的是哪类人群了,但是他们是如何取缔 fsck 的呢?笼统地说,日志文件系统就是议决维护一份日志来防止文件系统崩溃。所谓日志就是一种特殊的文件,它会在一个循环的缓冲区内记载文件系统的修正,然后将其定期提交到文件系统。一旦系统发作崩溃,日志文件就会起到一个检验点的作用,用于恢复未保管的信息,防止损坏文件系统元数据。
总之,日志文件系统就是一种具有毛病恢复才干的文件系统,它使用日志来记载尚未提交到文件系统的修正,以防止元数据破坏(请参见图 1)。但是如众多其他 Linux 处置方案一样,日志文件系统有多种方案供您挑选。下面就让我们一同冗长回忆一下日志文件系统的历史,然后再看一看现行的几种文件系统,看看它们之间有什么区别。
如果您有疑问或建议,请进入技术讨论区交流 >>>
什么是元数据?
元数据 指硬盘上的数据的维护构造。它示意文件的创立与删除、目录的创立与删除、扩大文件、截取文件等。
图 1. 典型的日志文件系统
Linux系统日志,日志文件系统解析--日志的如今和未来
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 的功用结合起来。将下日志文件系统究竟会如何成长还不得而知,但能够确定的是它们会更具适用性,并会成为新的日志文件系统规范。 
Tags:  怎么查看系统日志 如何查看系统日志 查看系统日志 系统日志

延伸阅读

最新评论

发表评论