0

我有一个chkdsk第 3 阶段错误(与 NTFS usn 日志和安全描述符有关)。

损坏的 NTFS 日志阻止chkdsk /f运行卷修复。因此chkdsk无法进行维修,这不是解决方案。

但是,我听说可以通过删除并重新创建 NTFS 日志来修复损坏。这可以通过在命令提示符或具有管理员权限的 PowerShell 中执行以下命令来完成:

fsutil usn deletejournal /d /n

其次是

fsutil usn createjournal m=<maxsize> a=<allocationdelta> <volumepath>

但是,有关这些命令的开关和参数的 Microsoft 文档非常差。任何人都可以请建议:

  1. /d 和 /n 开关的实际作用。它们是永久性的吗?如果我要创建新期刊,是否需要重新启用它们?如果必须,我将如何重新启用?
  2. <maxsize><allocationdelta>参数是什么?
  3. 如何确定要设置<maxsize>和设置<allocationdelta>的值?默认值是多少?

最后,以这种方式删除 NTFS 日志有多安全?

谢谢。

在此处输入图像描述

4

1 回答 1

3

好的,为了他人的利益,我将为您提供我所获得的所有知识,这些知识帮助我解决了这个问题。

要重新创建 NTFS USN 日志,请先删除,然后重新创建日志。

删除日志
您可以使用以下方法删除 NTFS USN 日志...

fsutil usn deletejournal /d /n c:

/d 和 /n 开关的文档记录很差。此处的Microsoft 文档 与您在命令提示符处查询该命令的使用时显示的信息相冲突:

在此处输入图像描述

两者都不准确!命令提示文档是错误的,因为两个开关都删除了日志,而不仅仅是 /d。Microsoft 网页文档具有误导性,因为该期刊实际上是被删除而不是被禁用。开关决定它是如何被删除的。

因为删除日志可能需要很长时间,所以这些开关允许您控制它是在进程内运行还是在进程外运行。/n 开关在将句柄锁定到它的进程中执行 deletejournal(将其视为“锁定计算机”)。这会迫使您等到它完成。/d 开关在进程外执行并允许您继续工作。删除日志可能需要数小时才能运行,并且将在连续重新启动后继续,直到完成。我见过人们在它们互斥时同时应用这两个开关。

删除日志几乎总是安全的,但有时可能会对备份过程产生影响。使用日志的应用程序将不会看到在应用程序上次运行和日志被删除之间的文件更改。编程良好的应用程序将检测到日志已被删除,并将恢复为查找更改文件或重新创建它的替代方法。尽管有后果,但我建议删除是安全的,因为在最坏的情况下,您只会损害备份的增量能力。您仍然可以进行完整备份并重新开始;至少你的数据没有丢失!

重新创建日志
我被告知没有必要手动重新创建日志,因为运行备份(例如通过控制面板进行的 Windows-7 备份选项)将自动重新创建 NTFS 日志。

但是,如果您确实想要手动重新创建日志,那么在命令提示符下,您可以通过以提升的权限运行以下命令来执行 createjournal 命令

fsutil usn [createjournal] m=<maxsize> a=<allocationdelta> <volumepath>

是什么<maxsize>?是什么<allocationdelta>

<maxsize>确定日志的文件大小。通常它在 30Mb 到 40Mb 之间。在我的带有 2TB 驱动器的 Windows 8.1 PC 上:

<maxsize>= 0x2000000 字节(十六进制)= 33,554,432 字节 = 33Mb

<allocationdelta>= 1/4 of <maxsize>= 0x800000 十六进制字节 = 8,388,608 字节 = 8Mb

但是,我可能建议设置<allocationdelta>为 1/8 以<maxsize>获得更大的<maxsize>.

仅供参考:您可以通过在具有提升权限的命令提示符下键入以下命令来查询您的期刊的当前大小:

C:\Windows\system32> fsutil usn queryjournal C:

你会得到类似这样的输出:

在此处输入图像描述

和参数在 BYTESa中以十六进制形式提供。m

因此,我建议 和 使用以下<maxsize><allocationdelta>

如果您有一个非常大的驱动器(4TB+ 和 400,000+ 个文件),请使用:

fsutil usn createjournal m=536870912 a=67108864 C:

对于较小的驱动器 (<=2TB),文件较少(<=400,000 个文件),请运行:

fsutil usn createjournal m=67108864 a=8388608 C:

如果您好奇这些数字是从哪里来的,它们是位状态数提高到足够的幂,为日志日志提供字节大小。IE:这些数字是 2^x,它给出了您想要的大小的精确大小(以字节为单位)。日志的大小通常保持在 30Mb 到 40MB 之间。<maxSize>因此,对于(m) 参数,我已经达到了下一个最高可用大小 (67Mb) :

2^25 字节 x 2 = 33Mb x 2 = 67Mb

( <allocationDelta>a) 参数需要为 m 的 1/8 左右,即 8Mb 左右。

你不会在互联网上的任何其他地方找到这个解释!!!尤其是微软,可耻地未能充分记录这两个日志命令的使用。

您可以通过在具有提升权限的命令提示符处执行以下命令来查询系统上的文件数:

C:\Windows\system32> dir C:\ /s /a /w

你会看到这样的输出...

在此处输入图像描述

将文件和目录的数量相加为总量;在此示例中为 1,616,718。

然后,您可以使用下表(从本页复制)作为替代指南来查找最大大小和分配增量的适当值。

在此处输入图像描述

请参阅此处创建期刊的指南:另请参阅此处的一些好建议:

于 2021-04-21T16:14:52.613 回答