为什么当分页文件与操作系统驱动器分离时,Windows 7 不会记录崩溃详细信息,我该做些什么呢?

为什么当分页文件与操作系统驱动器分离时,Windows 7 不会记录崩溃详细信息,我该做些什么呢?

我有一个辅助硬盘(一个单独的物理设备,而不是逻辑分区),专门用于虚拟内存分页文件。该硬盘比我的 RAM 大 3.5 倍,所以它足够大。

当我配置 Windows 7 的虚拟内存以将页面文件放在第二个硬盘上时,不是与操作系统使用同一个驱动器,我被警告,

如果您禁用页面文件或将初始大小设置为小于 800 兆字节并且发生系统错误,Windows 可能不会记录有助于识别问题的详细信息。您想继续吗?

换句话说,如果我遇到蓝屏死机,我将无法调查原因,因为我将页面文件放在了更有效的位置。

通过搜索网络我能找到的最佳解释是,Windows 只是不想在与操作系统位置不同的驱动器上进行错误转储。 谁能给我一个不那么荒谬的解释呢?

我不想告诉 Windows,“当然,继续管理主驱动器上的分页文件,”只是所以我可以得到一个调试转储,因为这完全违背了物理分离的分页文件的目的。 有没有解决方法,将我的分页文件放在单独的驱动器上但仍然会出现错误转储?

答案1

这个答案是针对 OP 问题的第二部分 — —“我能做些什么吗?”是的!

Windows Vista 及更高版本允许您指定称为“专用转储文件”的文件。(我将简称为 DDF。)

可以将其视为页面文件,但操作系统已被告知永远不要将其用作页面文件(因此将实际的页面文件 I/O 保留在分页驱动器上)。但由于它“像页面文件”,因此操作系统可以在 BSOD 时将其用作转储信息的临时存储。重启后,它将以正常方式复制到您指定的转储文件中。

更重要的是,DDF 甚至不必位于您的启动分区上!它可以位于“可以支持页面文件的任何本地卷”上。(这消除了可移动驱动器,例如 USB 上的任何驱动器和 Windows 群集存储。)

设置起来很容易,但没有用户界面,所以需要进行注册表调整。

在注册表项中HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\CrashControl,创建一个名为DedicatedDumpFileREG_SZ 类型的值。将字符串设置为您希望 DDF 所在的完整路径。您不必自己预先创建该文件。例如,C:\DUMPTEMP.SYS

默认情况下,操作系统会将其大小设置为 RAM + 256 MB。您可以使用同一键下的另一个注册表值手动指定大小:值名称DumpFileSize,类型 REG_DWORD,值 = 您想要的大小以兆字节为单位。这些将是 Microsoft 风格的“二进制兆字节”。因此,如果您希望它是“4 GB”,实际上是“4 GiB”,则应在此处使用 1024 作为值。

更多信息这篇 MSDN 文章

不过,如果我不指出“物理上分离的分页文件”通常没有什么区别,除非你经常访问它,否则我会感到疏忽……如果你经常访问它,那么添加 RAM 会更有效。

所有进程正在使用的所有 exe、dll 和其他映射文件?实际上,它们也是页面文件!因此,将页面文件移动到另一个驱动器只会隔离该文件的分页 I/O。您的系统仍将从操作系统驱动器上的所有其他内存映射文件进行分页,在某些情况下也会向这些文件进行分页。

同样,禁用页面文件并不会消除磁盘上的分页(当然也不会关闭虚拟内存) - 它只能消除通常几个分页中的一个操作系统页面的文件。

但是,将您唯一的页面文件移动到磁盘本身允许您使用该驱动器的磁盘 I/O 性能计数器来找出系统实际执行的页面文件 I/O 量。没有其他方法可以做到这一点,因为 PerfMon 计数器(如“页面读取 I/O”)确实包括所有这些内存映射文件(如 exe 和 dll)的页面读取 I/O。

答案2

我认为这样做是为了有更好的机会创建可靠的崩溃转储。在出现 BSOD 时,系统处于不稳定状态,无法确定根本原因或全部影响。系统当然无法做出这样的判断,原因与不能相信精神病医生能够判断自己的精神状态一样。

因此,在进行崩溃转储时,重要的是尽可能保持简单。毕竟,BSOD 的根本原因可能在于文件系统本身。因此,崩溃转储被写入系统驱动器上的页面文件,而不是新创建的文件。我相信这是绕过文件系统完成的。写入另一个驱动器上的页面文件会使此过程复杂化。如果出现任何问题,其他文件或文件系统本身可能会损坏,从而使问题变得更糟。

在 BSOD 之后的重启过程中,系统被认为处于稳定状态,崩溃转储会从页面文件复制到其最终目的地。然后页面文件可以恢复其正常功能。

答案3

您严重误解了错误消息。它说:

如果禁用分页文件或将初始大小设置为小于 800 兆字节 [~snip~]

...而你将其解释为:

如果将页面文件放在另一个驱动器上 [~snip~]

你是如何从第一个目标过渡到第二个目标的?问问自己这个问题:您是否禁用页面文件或将其大小设置为小于 800 兆字节?答案是:不行!你正在将其移动到另一个驱动器

即使您首先在另一个驱动器上设置了分页文件,Windows 也会向您显示此警告消息,因为您随时可以返回并撤消它。

答案4

如果我遇到蓝屏死机,我将无法调查原因

只是因为我把分页文件放在了更有效的位置。

这种说法是不正确的。

您可以独立于页面文件位置配置转储文件位置。

  1. 开始 > “控制面板” > “系统”。

  2. 点击“高级系统设置”。

  3. 单击“高级”选项卡。

  4. 在“启动和恢复”部分中单击“设置”。

  5. 在“写入调试信息”部分中,选择所需的转储类型和“转储文件”位置(可以在您选择的任何磁盘上)。

    在此处输入图片描述

笔记:

  • 无论任何页面文件或转储文件设置如何,基本 BSOD 信息都将写入系统事件日志(如果配置为这样做)

  • 转储文件可用于调查 BSOD 的原因。


进一步阅读

相关内容