📄 logfile.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//ZH_CN">
<!-- http://linux-ntfs.sourceforge.net/ntfs/files/attrdef.html -->
<html lang="ZH_CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="description" content="NTFS Documentation">
<link rel="stylesheet" type="text/css" href="../style/ntfsdoc.css">
<link rel="start" type="text/html" href="../index.html" title="NTFS Documentation">
<title>$LogFile (2) - File - NTFS Documentation</title>
</head>
<body>
<table border="0" class="toolbar" summary="" cellspacing="0">
<tr>
<td class="toolbar"><div class="toolbar"><a accesskey="1" class="toolbar" href="../index.html">主页</a></div></td> <td class="toolbar"><div class="toolbar"><a accesskey="2" class="toolbar" href="../files/index.html">文件</a></div></td> <td class="toolbar"><div class="toolbar"><a accesskey="3" class="toolbar" href="../attributes/index.html">属性</a></div></td> <td class="toolbar"><div class="toolbar"><a accesskey="4" class="toolbar" href="../concepts/index.html">概念</a></div></td> <td class="toolbar"><a accesskey="5" class="toolbar" href="../help/glossary.html">词汇</a></td>
</tr>
</table>
<h1>文件 - $LogFile (2)</h1>
<a class="prevnext" accesskey="," href="mftmirr.html">前一页</a>
<a class="prevnext" accesskey="." href="volume.html">后一页</a>
<h2>概述</h2>
<h2><a class="heading" href="../attributes/index.html">属性</a></h2>
<table border="1" summary="" cellspacing="0">
<tr>
<th class="numeric">类型</th>
<th>描述</th>
<th>名称</th>
</tr>
<tr>
<td class="numeric"><a class="numeric" href="../attributes/standard_information.html">0x10</a></td>
<td><a href="../attributes/standard_information.html">标准信息文件 ($STANDARD_INFORMATION)</a></td>
<td> </td>
</tr>
<tr>
<td class="numeric"><a class="numeric" href="../attributes/file_name.html">0x30</a></td>
<td><a href="../attributes/file_name.html">文件名文件 ($FILE_NAME)</a></td>
<td>$LogFile</td>
</tr>
<tr>
<td class="numeric"><a class="numeric" href="../attributes/data.html">0x80</a></td>
<td><a href="../attributes/data.html">数据文件 ($DATA)</a></td>
<td>[未命名]</td>
</tr>
</table>
<h2>文件结构</h2>
<h3>未命名数据流</h3>
<p>
对日志文件了解很少
</p>
<!--
<table border="1" summary="" cellspacing="0">
<tr>
<th></th>
</tr>
<tr>
<td></td>
</tr>
</table>
-->
<h2>注意</h2>
<h3>其他信息</h3>
<p>
日志区域是由一个4KB的日志记录序列组成的,每个日志记录结构如下: </p>
<pre>
偏移(长度) 内容
0(4) 幻数 'RCRD'
1E(12) 修正或固定
</pre>
<p>
按照推测,日志记录包含一序列不同大小的记录,它们的结构不清楚。文件2是$LogFile,它包含处理事务的
记录以保证在系统瘫痪的时候数据的完整性。如37页提到的,它由2个重新启动区的拷贝和无限的日志区组成。
</p>
<p>如果要把一个文件写到一个存储单元上,你必须修正这个文件本身以添加此文件系统的一些表格(例如文件
数据)。在此,你要经过两个操作步骤(修正文件自身,修正文件数据)。</p>
<p>如果此项任务完成,可以确认文件被写到存储单元上,并且文件系统处于定义的状态。</p>
<p>如果不能完成此项任务(例如如果系统瘫痪或日常的系统故障),则文件系统处于未定义状态。把它恢复到
定义(规定)状态的唯一途径(此操作称为“击退”)是把它放进一个特殊文件里,日志文件,那么就成功完成了
对此项任务的操作。</p>
<p>在系统故障后第一次进入磁盘时,系统读取日志文件并“击退”最近一项任务开端的所有操作。</p>
<ul>
<li>当系统写向日志文件时,此项操作必须是自动且立即的。</li>
<li>
你可以在很短的时间内把卷恢复回规定状态,恢复时间与磁盘大小无关,只与失败任务的复杂程度有关。<p>
注意:此项操作不是由WINDOWS NT的chkdsk执行的,而是由系统执行的:此项标准可靠的操作功能是NTFS的特点。</p>
</li>
<li>如果你的硬件可靠,因为它的存在可确保你进入卷的所有文件的权限。但是不能恢复最终的数据丢失。</li>
</ul>
<pre>
日志文件结构:
两个重新启动区分布在最初的两页(重新启动页),如果卷没有被布置过,它们是一致的。
然后是日志记录。它以一个记录标题开头,接着是日志文件大小。当卷被第一次格式化时不
是所有的页面都包含日志记录,而是卷龄,所有的记录都会在用。当日志文件填充满时,处
于开始位置的记录就会被清除(大概是通过修改the oldest_lsn),并且在文件开端开始写
入。从而,此日志文件看起来象是一个循环体。
日志文件的重新启动页标题(开始重新启动区)
struct {
NTFS_RECORD; 特征码是“RSTR”
__u64 chkdsk_lsn; 对于此重新启动页的检测磁盘的日志文序列号 。
只有当特征码转到"CHKD". = 0时才用到它。
__u32 system_page_size; 统页的比特大小,必须 >= 512,而且是2的n次幂。
可以用它来计算需要用的空间大小,并把它加到
NTFS的ntfs.usa_offset里。然后验证结果
小于restart_offset. = 0x1000。
__u32 log_page_size; 志文件记录的大小,必须>= 512,并且是2的n次幂。
= 0x1000
__u16 restart_offset; 从记录开始到重新启动记录的偏移比特。
此值必须被排列为8比特边界 = 0x30
__s16 minor_ver; 日志文件的低版本,如果低版本是1,只能检测。
(>=1同样对待,<=0也行)
__u16 major_ver; 日志文件的主流版本(=1但是=0是好的)
} RESTART_PAGE_HEADER;
日志文件重新启动区记录。把RESTART_PAGE_HEADER的偏移(位置)和restart偏移(位置)相加即可得
到此记录的偏移值(位置)。
struct {
__u64 current_lsn; 日志文件记录。= 0x700000, 0x700808
__u16 log_clients; 紧跟在重新启动区后面的日志客户记录号=1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -