首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除和重新创建NTFS日志(或如何正确运行“fsutil usn”命令)

删除和重新创建NTFS日志(或如何正确运行“fsutil usn”命令)
EN

Stack Overflow用户
提问于 2021-04-15 16:26:10
回答 1查看 3.3K关注 0票数 1

我有一个chkdsk第3阶段的错误(它涉及NTFS,usn日志和安全描述符)。

损坏的NTFS日志阻止chkdsk /f运行卷的修复。因此,chkdsk的修复不会运行,这不是一个解决方案。

但是,我听说可以通过删除和重新创建NTFS日志来修复腐败。这可以通过使用管理员权限在命令提示符或PowerShell上执行以下命令来完成:

代码语言:javascript
复制
fsutil usn deletejournal /d /n

紧接着是

代码语言:javascript
复制
fsutil usn createjournal m=<maxsize> a=<allocationdelta> <volumepath>

但是,有关这些命令的开关和参数的Microsoft文档非常糟糕。有谁能告诉我:

  1. /d和/n开关实际上是做什么的。它们是永久性的吗?如果我正在创建一个新的日志,我需要重新启用它们吗?如果必须的话,我该如何重新启用?
  2. <maxsize><allocationdelta>参数是什么?
  3. 如何确定要将<maxsize><allocationdelta>设置为哪些值?默认值是什么?

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

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-21 16:14:52

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

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

删除日刊

您可以使用.删除NTFS USN日志。

代码语言:javascript
复制
fsutil usn deletejournal /d /n c:

/d和/n交换机的文档很少。Microsoft 这里与在命令提示符下查询命令使用情况时显示的信息冲突:

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

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

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

重新创建期刊

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

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

代码语言:javascript
复制
fsutil usn [createjournal] m=<maxsize> a=<allocationdelta> <volumepath>

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

<maxsize>确定日记的文件大小。通常在30兆到40兆之间。在我的Windows8.1个人电脑上有一个2TB驱动器:

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

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

但是,我建议将<allocationdelta>设置为<maxsize>的1/8,以获得更大的<maxsize>值。

FYI:您可以通过使用提升的权限在命令提示符下键入以下命令来查询日志的当前大小:

代码语言:javascript
复制
C:\Windows\system32> fsutil usn queryjournal C:

您将得到一个类似于以下内容的输出:

am参数以字节()、十六进制(十六进制)为单位提供

因此,我建议<maxsize><allocationdelta>的值如下

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

代码语言:javascript
复制
fsutil usn createjournal m=536870912 a=67108864 C:

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

代码语言:javascript
复制
fsutil usn createjournal m=67108864 a=8388608 C:

如果您想知道这些数字是从哪里来的,那么它们就是将位状态提高到足以提供日志大小(以字节为单位)的数量。IE:这些数字是2^x,它给出了精确的大小(以字节为单位),与您想要的大小差不多。日志的大小通常在30 in到40 in之间。因此,我的<maxSize> (m)参数达到了第二个最高的可用大小(67 M):

2^25字节x2=33 Mbx2=67 25

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

你在互联网上找不到这个解释!特别是微软,没有充分记录这两个日志命令的使用情况,这是可耻的。

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

代码语言:javascript
复制
C:\Windows\system32> dir C:\ /s /a /w

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

在此示例中,将文件和目录的数量相加到一起,共计1,616,718个。

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

参见创建期刊指南这里:还请参阅一些好的建议这里

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67112327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档