种豆资源网

当前位置:首页 > 经验 / 正文

日誌文档系统

(2021-04-02 12:27:50) 经验

日誌文档系统

日誌档案系统(英语:Journaling file system)是一种档案系统在发生变化时,先把相关的信息写入一个被称为日誌的区域,然后再把变化写入主档案系统的档案系统。在档案系统发生故障(如核心崩溃或突然停电)时,日誌档案系统更容易保持一致性,并且可以较快恢复。

基本介绍

  • 中文名:日誌文档系统
  • 外文名:Journaling file system

简介

日誌档案系统(英语:Journaling file system)是一种档案系统在发生变化时,先把相关的信息写入一个被称为日誌的区域,然后再把变化写入主档案系统的档案系统。在档案系统发生故障(如核心崩溃或突然停电)时,日誌档案系统更容易保持一致性,并且可以较快恢复。

概述

对档案系统进行修改时,需要进行很多操作。这些操作可能中途被打断,也就是说,这些操作不是“不可中断”(atomic)的。如果操作被打断,就可能造成档案系统出现不一致的状态。
例如:删除档案时,先要从目录树中移除档案的标示,然后收回档案占用的空间。如果在这两步之间操作被打断,档案占用的空间就无法收回。档案系统认为它是被占用的,但实际上目录树中已经找不到使用它的档案了。
在非日誌档案系统中,要检查并修复类似的错误就必须对整个档案系统的数据结构进行检查。一般在挂载档案系统前,作业系统会检查它上次是否被成功卸载,如果没有,就会对其进行检查。如果档案系统很大或者I/O频宽有限,这个操作可能会花费很长时间。
为了避免这样的问题,日誌档案系统分配了一个称为日誌(journal)的区域来提前记录要对档案系统做的更改。在崩溃后,只要读取日誌重新执行未完成的操作,档案系统就可以恢复一致。这种恢复是原子的,因为只存在几种情况:
  • 不需要重新执行:这个事务被标记为已经完成
  • 成功重新执行:根据日誌,这个事务被重新执行
  • 无法重新执行:这个事务会被撤销,就如同这个事务从来没有发生过
  • 日誌本身不完整:事务还没有被完全写入日誌,它会被简单忽略

日誌的三个级别

在很多日誌档案系统(如:ext3,ReiserFS)中,可以选择三个级别的日誌:回写(writeback)、顺序(ordered)和数据(data)。

回写

在回写模式中,只有元数据被记录到日誌中,数据会被直接写入主档案系统。这种模式能提供较好的性能,不过有较大的风险。例如:在增大档案时,数据还未写入就发生崩溃,那幺档案系统恢复后,档案后面就可能出现垃圾数据。

顺序

在顺序模式中,只有元数据被记录到日誌中,但在日誌被标记为提交前,数据会被写入档案系统。在这种模式下,如果在增大档案时,数据还未写入就发生崩溃,那幺在恢复时这个事务会被简单的撤销,档案保持原来的状态。

数据

在数据模式中,元数据和档案内容都先被写入日誌中,然后在提交到主档案系统。这提高了安全性,但损失性能,因为所有数据要写入两次。在这种模式下,如果在增大档案时,发生崩溃,那幺可能有两种情况:
  • 日誌完整:这时事务会被重新执行,修改会被提交到主档案系统
  • 日誌不完整:这时主档案系统还未被修改,只需要简单放弃这个事务

常见的日誌档案系统

  • JFS:IBM的 Journaled File System, 最早的日誌档案系统。
  • Ext4/Ext3档案系统:Ext2档案系统演化而成的日誌档案系统,广泛用于Linux系统。
  • ReiserFS:用B+树作为数据结构的日誌档案系统,在处理小档案时有较好的性能。
  • Btrfs:用B树作为数据结构,被认为是下一代Linux档案系统。
  • NTFS:微软的NTFS也是日誌档案系统,也是Windows NT下最常用的档案系统。
  • HFS+:苹果公司发展的OS X作业系统下主要使用的档案系统。

参见

  • 资料库
搜索
热门图片
最近更新
随机推荐

Powered By 种豆资源网||