<code id='a35hz'><strong id='a35hz'></strong></code>
  • <tr id='a35hz'><strong id='a35hz'></strong><small id='a35hz'></small><button id='a35hz'></button><li id='a35hz'><noscript id='a35hz'><big id='a35hz'></big><dt id='a35hz'></dt></noscript></li></tr><ol id='a35hz'><table id='a35hz'><blockquote id='a35hz'><tbody id='a35hz'></tbody></blockquote></table></ol><u id='a35hz'></u><kbd id='a35hz'><kbd id='a35hz'></kbd></kbd>
  • <fieldset id='a35hz'></fieldset>

  • <i id='a35hz'></i>
    1. <i id='a35hz'><div id='a35hz'><ins id='a35hz'></ins></div></i>
        <acronym id='a35hz'><em id='a35hz'></em><td id='a35hz'><div id='a35hz'></div></td></acronym><address id='a35hz'><big id='a35hz'><big id='a35hz'></big><legend id='a35hz'></legend></big></address>

            <ins id='a35hz'></ins>

            <span id='a35hz'></span>
            <dl id='a35hz'></dl>

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

            • 时间:
            • 浏览:4
            • 来源:124软件资讯网
              在近代历史上  ,日志文件系统被以为十分奇异  ,主要是处于研究阶段 。而现在  ,日志文件系统(ext3)已经成为 Linux 的缺省文件系统  。本文向各人展现了日志文件系统背后的一些头脑 ,以及在电源故障或系统瓦解时 ,怎样提供更好的完整性  。此外本文还先容了现行的几种日志文件 系统和下一代日志文件系统  。

                界说日志文件系统的要领有许多种  ,可是让我们捉住要点  。日志文件系统就是专为那些厌倦了一直盯着启动时 fsck(即文件系统一致性检查)的人而设计的(日志文件系统同样适用于希望文件系统具有故障恢复能力的群体)  。若是系统接纳传统的未提供日志功效的文件系统  ,那么操作系统在检测到系统为非正常关机时  ,会使用 fsck 应用法式执行一致性磨练  。该应用法式会扫描文件系统(这要破费很长的时间)  ,并修复任何可宁静修复的问题  。而在某些情形下  ,当文件系统损坏严重时  ,操作系统会启动到单用户模式 ,由用户举行进一步的修复  。

                那么现在您应该清晰日志文件系统针对的是哪类人群了  ,可是他们是怎样取缔 fsck 的呢 ?笼统地说 ,日志文件系统就是通过维护一份日志来防止文件系统瓦解 。所谓日志就是一种特殊的文件  ,它会在一个循环的缓冲区内记载文件系统的修改  ,然后 将其定期提交到文件系统  。一旦系统发生瓦解  ,日志文件就会起到一个检查点的作用 ,用于恢复未生存的信息  ,防止损坏文件系统元数据  。

                总 之 ,日志文件系统就是一种具有故障恢复能力的文件系统  ,它使用日志来记载尚未提交到文件系统的修改 ,以防止元数据破损(请参见图 1)  。可是如众多其他 Linux 解决方案一样  ,日志文件系统有多种方案供您选择  。下面就让我们一起简短回首一下日志文件系统的历史 ,然后再看一看现行的几种文件系统  ,看看它们之间有什么 区别  。

              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 12下一页