如果发生断电,NTFS 是否有故障保护?

如果发生断电,NTFS 是否有故障保护?

如果发生断电,NTFS 文件系统会受到损害吗?例如被破坏或导致文件损坏?动态磁盘上的 NTFS 内置镜像是否保证在断电时保持文件处于一致状态?

我的观点是,日志文件系统是专门为容忍此类问题而设计的。NTFS 文件系统无法保证用户数据的安全,但数据库管理系统等应用程序具有保护数据的事务管理器。

摘自这本伟大的书Microsoft Windows 内部原理

NTFS

NTFS 包含许多高级功能。其最重要的功能之一是可恢复性。如果系统意外停止,FAT 卷的元数据可能会处于不一致状态,从而导致大量文件和目录数据损坏。NTFS 以事务方式记录对元数据的更改,以便文件系统结构可以修复到一致状态,而不会丢失文件或目录结构信息。(但是,文件数据可能会丢失。)

NTFS 设计目标和功能

高端文件系统要求

从一开始,NTFS 的设计就包含企业级文件系统所需的功能。为了在系统意外中断或崩溃时将数据丢失降至最低,文件系统必须始终确保元数据的完整性。最后,文件系统必须允许基于软件的数据冗余,作为保护用户数据的硬件冗余解决方案的低成本替代方案。

可恢复性

NTFS 使用原子事务来实现其文件系统恢复功能。如果程序启动了改变 NTFS 卷结构的 I/O 操作(即更改目录结构、扩展文件、为新文件分配空间等),则 NTFS 会将该操作视为原子事务。它保证事务操作系统完成,或者如果系统在执行事务时失败,则回滚。

此外,NTFS 使用冗余存储来存储重要的文件系统信息,这样如果磁盘上的某个扇区出现问题,NTFS 仍然可以访问该卷的关键文件系统数据。

数据冗余和容错

除了文件系统数据的可恢复性之外,一些客户还要求自己的数据不会因断电或灾难性磁盘故障而受到威胁。NTFS 恢复功能确实可以确保卷上的文件系统保持可访问性,但无法保证完全恢复用户文件。通过数据冗余可以为不能冒险丢失数据的应用程序提供保护。

用户文件的数据冗余通过 Windows 分层驱动程序模型实现,该模型提供容错磁盘支持。卷管理器可以将数据从一个磁盘镜像或复制到另一个磁盘,以便始终可以检索冗余副本。

NTFS 恢复支持

NTFS 恢复支持可确保在发生电源故障或系统故障时,不会有任何文件系统操作(事务)不完整,并且磁盘卷的结构将保持完整,而无需运行磁盘修复实用程序。NTFS Chkdsk 实用程序用于修复由 I/O 错误(例如坏扇区、电气异常或磁盘故障)或软件错误引起的灾难性磁盘损坏。但是,有了 NTFS 恢复功能,Chkdsk 就很少需要了。

可恢复文件系统

尽管 NTFS 无法保证在系统崩溃时保护用户数据(缓存中的某些更改可能会丢失),但应用程序可以利用 NTFS 的写入和缓存刷新功能来确保文件修改以适当的间隔记录在磁盘上。缓存写入(强制将写入操作立即记录在磁盘上)和缓存刷新(强制将内容写入磁盘)都是高效的操作。此外,与 FAT 文件系统不同,即使系统随后出现故障,NTFS 也能保证用户数据在写入操作或缓存刷新后立即保持一致且可用。

答案1

抛开理论不谈,这个网站上有太多问题,都是由于 NTFS 断电造成的,所以答案必须是:

我亲自在这个网站上处理过各种问题,从突然出现坏扇区到 Windows 安装完全失败。

计算机是一种极其复杂的硬件,现代硬盘也已成为独立的小型计算机。每个硬盘都有自己的处理器和内存,因此都很容易在错误的时刻发生电源故障。

即使 NTFS 是故障安全的(我并不真正相信这一点),处理硬盘更改的组件肯定不是故障安全的。因此整个问题非常学术化,与现实世界无关。

那么答案肯定是 NTFS更安全,但不是万无一失的。

答案2

NTFS 只记录元数据,这可以防止文件系统损坏,但数据没有记录,那就只能靠上帝了。如果在写入过程中断电,数据就会丢失。

答案3

在编写了读写 NTFS 的代码后,我得出结论:NTFS 恢复功能的设计/实现存在缺陷。

NTFS 日志包含导致写入的操作的日志条目,它通常包含足够的信息来撤消/重做该操作,但是,如果扇区在写入过程中损坏(由于电源故障),则日志条目不一定足以恢复该扇区中的所有元数据。

Windows NTFS 驱动程序实现者假定任何写入操作要么完全成功,要么根本不会发生(这仅在某些企业环境中才成立)。

相关内容