Windows Server 2008 R2系统时间随机重置为过去4小时

dss*_*svo 5 time windows-server-2008-r2 timezone utc

我遇到了一个问题,过去的时间随机跳到 4 小时。因此,所有计划任务(例如备份)都不会在正确的时间发生,并且我们正在使用的某些时间关键型应用程序(例如会计系统)无法正常工作。

例如,如果实际时间是美国东部标准时间下午 4 点,则系统时钟将显示为下午 12 点。如果再次将系统时钟向前重置为正确的时间,它会再次随机跳回 4 小时。

  • 操作系统:Windows Server 2008 R2 标准 SP1
  • 此服务器不在 VM 上且未加入域。
  • 我们的时区是 EST。
  • Windows 设置为 EST 时区。
  • BIOS 时钟采用 UTC。
  • 作为参考,EST 是从 UTC 开始的 -4 小时。
  • 出于调试目的,我禁用了 Windows 时间服务和我能想到的任何其他会更改系统时间的服务。

我检查了事件查看器,并看到了一些与时间更改相关的“内核常规”事件。下面是一个例子:

<?xml version="1.0" encoding="UTF-8"?>
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Microsoft-Windows-Kernel-General" Guid="{A68CA8B7-004F-D7B6-A698-07E2DE0F1F5D}" />
    <EventID>1</EventID>
    <Version>0</Version>
    <Level>4</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x8000000000000010</Keywords>
    <TimeCreated SystemTime="2014-05-09T17:04:34.500000000Z" />
    <EventRecordID>39254</EventRecordID>
    <Correlation />
    <Execution ProcessID="4" ThreadID="68" />
    <Channel>System</Channel>
    <Computer>SERVER</Computer>
    <Security UserID="S-1-5-18" />
  </System>
  <EventData>
    <Data Name="NewTime">2014-05-09T17:04:34.500000000Z</Data>
    <Data Name="OldTime">2014-05-09T21:05:19.806811800Z</Data>
  </EventData>
</Event>
Run Code Online (Sandbox Code Playgroud)

此事件是在下午 5 点左右生成的。此事件发生后,系统时间显示为下午 1 点,比当前时间晚了 4 小时。

安装和运行 Windows 时间服务并将其配置为外部时间同步并不能解决问题。互联网时间同步会正确设置时间,然后时间会再次随机重置。

每次重新启动计算机时,此问题也会可靠地发生。

有人听说过这个问题或知道解决方案吗?

myr*_*ack 1

默认情况下,Windows 希望将 BIOS 时钟设置为本地时间,而不是UTC。Linux下不是这样的朋友。(这会给双引导系统带来乐趣。)

Windows 最近添加了一个注册表设置,允许将 BIOS 时钟设置为 UTC。但是,此设置并未得到官方支持,并且已知会导致问题。 http://blogs.technet.com/b/askds/archive/2012/03/09/unresponsive-servers-due-to-dst-and-an-unsupported-registry-key.aspx

从纯粹的技术角度来看,将 BIOS 时钟保持为 UTC“更好”。但是,Windows 中存在大量历史包袱,要求 BIOS 时钟为本地时间,因此除非有特定原因,否则不应更改该设置。

因此,我的建议是将 BIOS 时钟设置为本地时区,确保 Windows 中的时区设置正确,并确保将 Windows 时间服务配置为使用外部 NTP 源(因为您不在域,请从命令行使用 w32tm 来执行此操作)。