![为什么日志文件系统需要检查磁盘?](https://linux22.com/image/1300189/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E9%9C%80%E8%A6%81%E6%A3%80%E6%9F%A5%E7%A3%81%E7%9B%98%EF%BC%9F.png)
我的 Windows 7 电脑出现 BSOD 后,我重启电脑,发现电脑要求我进行磁盘检查。在此期间我做了其他事情,但似乎花了几分钟。
如果文件系统是日志式的(我将其保留为默认的 NTFS),为什么在我崩溃后它需要检查磁盘?
答案1
因为写日记并不是魔杖。
处理 I/O 事务期间的断电和系统崩溃不会因为保留了事务日志而变得不再是问题。系统崩溃/断电时正在进行的部分完成的事务不会自动向前滚动或向后滚动。向前滚动/向后滚动必须在系统重新启动时重新安装卷之前/安装时进行。这是磁盘检查过程的一部分。
文件系统日志可以很容易地恢复自洽状态。它没有当发生非正常关机时,神奇地导致磁盘卷永远不会处于不一致的状态。
答案2
日志可以让文件系统在非正常关机后快速恢复到一致状态,但当由于硬件故障或系统错误而发生损坏时则不行。在这种情况下,需要进行全面检查。
答案3
日志记录有不同的级别,具有不同的权衡。NTFS 仅记录元数据,而不是实际文件内容本身。这意味着您可以在写入时损坏单个文件,但不能损坏同一目录中的其他文件。
同样,当崩溃确实发生时,日志记录的确切类型决定了实际修复磁盘所需的时间。同样,这需要权衡:如果您将日志结构设计得易于修复,那么您将花费更多时间进行常规磁盘写入。由于 BSOD 相当罕见,因此 NTFS 针对非崩溃情况进行了优化,这意味着从日志中恢复的速度较慢。
答案4
在基于日志的文件系统中,对文件的所有更改都会被记录并保存在一起。这样可以将文件内容与元数据(文件名、修改日期等)分开。然而,这意味着如果文件未在日志中编入索引,则它实际上不存在 - 即使 0 和 1 实际存在于磁盘上。
这就是chkdsk
驱动器的“脏位”派上用场的地方。执行各种文件系统操作时,脏位会一直设置,直到操作完成,此时才会清除。从Microsoftfsutil
文档:
如果设置了卷的脏位,则表明文件系统可能处于不一致状态。设置脏位的原因可能是卷处于联机状态且有未完成的更改,可能是对卷进行了更改,并且在将更改提交到磁盘之前计算机关闭,也可能是因为在卷上检测到了损坏。如果在计算机重新启动时设置了脏位,则运行 chkdsk 来验证卷的一致性。
由于您的计算机已设置脏位,因此您需要确保文件系统一致,以防止卷损坏或数据丢失。运行文件系统检查器还可以让驱动器恢复尚未记录在日志中的非索引文件。