AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 10041
Accepted
MichaelGG
MichaelGG
Asked: 2009-05-20 10:49:55 +0800 CST2009-05-20 10:49:55 +0800 CST 2009-05-20 10:49:55 +0800 CST

即使使用 NTP,Hyper-V 机器也会到处漂移

  • 772

已解决 问题是该机器上的 Hyper-V。我删除了 Hyper-V,安装了 VMware Server,运行了同一个虚拟机。时间同步问题消失了(一天后的差异小于 100 毫秒)。


我的设置是这样的:

HYV1 - HyperV machine (non domain) - sync irrelevant
AD1  - VM AD server on HYV1, sync'd to time.nist.gov. HyperV time sync off.
S1   - Physical machine, sync'd to domain. 
S2   - Physical machine running HyperV, sync'd to domain.
V1   - Linux VM machine on S2, sync'd to AD1. No HyperV integration.

AD1 和 S1 有很好的同步——带状图显示小于 100 毫秒的差异。

S2像疯了一样漂移。下面是一些针对 AD1 的条形图:

18:33:22 d:+00.0010138s o:+05.4101899s 
18:33:24 d:+00.0010138s o:+05.4319765s 
18:33:26 d:+00.0000000s o:+05.4788429s 
18:33:28 d:+00.0000000s o:+05.6089942s 
18:33:30 d:+00.0010138s o:+05.7240269s 
18:33:32 d:+00.0000000s o:+06.0421911s 
18:33:34 d:+00.0081104s o:+06.5613708s 
18:33:37 d:+00.0000000s o:+06.9096594s 
18:33:39 d:+00.0000000s o:+06.8867838s 
18:33:41 d:+00.0010127s o:+06.8936401s 

在 20 秒内,它漂移了超过一秒。如果我在 1 秒内手动将其重置,则在几分钟内它会重新漂移大约 2 秒。一夜之间,它从~2s变成了~5s。S2 内的 Linux VM 与 AD1 完美同步。

这是配置:

C:\Users\mgg>w32tm /dumpreg /subkey:Parameters

Value Name                 Value Type          Value Data
------------------------------------------------------------

ServiceDll                 REG_EXPAND_SZ       %systemroot%\system32\w32time.dll
ServiceMain                REG_SZ              SvchostEntry_W32Time
ServiceDllUnloadOnStop     REG_DWORD           1
Type                       REG_SZ              NT5DS
NtpServer                  REG_SZ              ad01.mydomain ad02.mydomain


C:\Users\mgg>w32tm /dumpreg /subkey:Config

Value Name                Value Type          Value Data
-----------------------------------------------------------

FrequencyCorrectRate      REG_DWORD           4
PollAdjustFactor          REG_DWORD           5
LargePhaseOffset          REG_DWORD           50000000
SpikeWatchPeriod          REG_DWORD           900
LocalClockDispersion      REG_DWORD           9
HoldPeriod                REG_DWORD           5
PhaseCorrectRate          REG_DWORD           1
UpdateInterval            REG_DWORD           30000
EventLogFlags             REG_DWORD           2
AnnounceFlags             REG_DWORD           5
TimeJumpAuditOffset       REG_DWORD           28800
MinPollInterval           REG_DWORD           2
MaxPollInterval           REG_DWORD           8
MaxNegPhaseCorrection     REG_DWORD           -1
MaxPosPhaseCorrection     REG_DWORD           -1
MaxAllowedPhaseOffset     REG_DWORD           300

我查看了事件日志,除了关于同步的警告(在它失去同步之后),没有其他警告。

我该如何解决这个问题?这是唯一有此问题的机器。所有其他机器(物理和虚拟)都运行良好。

编辑:澄清:VM(AD1)已关闭集成并同步到 time.nist.gov。AD1没问题。是物理机S1无法同步到AD1,到处漂移。所有其他物理服务器都能够很好地同步到 AD1。

更新 因此,这似乎是运行 VM 的问题。虚拟机关闭时,时钟慢慢滑落。打开后,它立即开始丢失秒数。我 swt VM 只使用了一半的资源,现在这似乎稍微减轻了它。谢谢!

windows windows-server-2008 hyper-v ntp time-synchronization
  • 7 7 个回答
  • 21030 Views

7 个回答

  • Voted
  1. Best Answer
    Sean Earp
    2009-05-20T14:05:16+08:002009-05-20T14:05:16+08:00

    根据您的描述,服务器 S2 主板上 的 RTC ( http://en.wikipedia.org/wiki/Real-time_clock )似乎存在实际硬件问题。

    Hyper-V 来宾最初从主机 (HYV1) 获取时钟,但由于您禁用了 Hyper-V 时间同步,它会从 NIST 获取所有进一步的时钟更新(工作正常)。您的 Linux VM 未与 Hyper-V 集成,因此它正在从域中获取时间,这也可以正常工作。您的其他物理机器工作正常,它只是一个物理服务器,每 20 秒有 1 秒的漂移(这是一个疯狂的漂移量)。时间漂移的速度比网络时间同步可以将时钟重置到正确的时间快得多(如果我没记错的话,它每 8 小时发生一次)。

    如果您想排除 Hyper-V 作为 S2 上错误的原因,请创建“无 Hypervisor”引导条目,在没有 Hyper-V 的情况下重新启动,并查看时间漂移是否仍然存在。此处的说明:http: //blogs.msdn.com/virtual_pc_guy/archive/2008/04/14/creating-a-no-hypervisor-boot-entry.aspx

    -肖恩

    • 5
  2. Matt Keenan
    2010-04-20T02:14:28+08:002010-04-20T02:14:28+08:00

    问题在于各种时钟源(tsc、jiffies、acpi_pm、cmos_trc)的虚拟实现。我发现使用 HyperV 解决此问题的最佳方法是关闭HyperV 为您的访客机器提供的时钟同步,然后使用 adjtimex 调整时间。在 Ubuntu 来宾操作系统上执行此操作...

    # rm /var/log/clocks.log
    # /etc/init.d/ntp-server stop
    # ntpdate ntp.ubuntu.com
    # hwclock -u --systohc
    # adjtimex -l -u -h ntp.ubuntu.com
    

    并对这两个问题都回答否

    # while [ /bin/true ] ; do yes | adjtimex -l -u -h ntp.ubuntu.com ; sleep 60 ; done
    

    让它运行几个小时来校准,按 Ctrl-C 退出它。

    # adjtimex -r -a -u -h ntp.ubuntu.com
    

    这将对您的时钟进行最小二乘分析并找到正确的调整

    # ntpdate ntp.ubuntu.com
    # hwclock -u --systohc
    # /etc/init.d/ntp-server start
    

    这将重新同步您机器上的时间,然后 ntp 应该能够保持同步,因为它不应该再漂移太多。

    • 3
  3. rmwetmore
    2009-05-20T11:09:49+08:002009-05-20T11:09:49+08:00

    这似乎是虚拟机的一个非常普遍的问题。请参阅以下网站:

    http://www.vmwareinfo.com/2008/04/enabling-ntp-on-esx-servers.html

    http://social.technet.microsoft.com/Forums/en-US/winserverhyperv/thread/6fff3eef-1b5b-4059-8618-22ab3f5c293c

    我的建议是仅与外部时间服务器同步并禁用任何集成时间同步

    希望这会有所帮助。

    • 2
  4. Thomas Denton
    2009-05-20T12:31:38+08:002009-05-20T12:31:38+08:00

    我们在 Core 上运行 Hyper-v 已经有一段时间了。起初我们遇到了时间同步问题......我从旧的 Windows NT 时代恢复到最佳实践。

    我按操作系统查看服务器。我创建了一个Linux、Router、Windows、Novell master。

    您现在可能没有 Novell,但请耐心等待。

    每个“主”服务器同步到路由器。路由器到层。然后每个成员服务器都有它的主操作系统服务器和其他主服务器之一的辅助服务器。

    • Linux 到路由器,然后到 Novell
    • Novell 到路由器,然后到 Windows
    • Windows 到路由器,然后到 Linux
    • 路由器到 Stratum,然后到核心交换机
    • 核心交换机到 Stratum,然后到路由器

    这个策略的最后一部分是......一切都有一个时间服务器。如果它没有时间服务器,那么它就不会被插入网络。从烤面包机切换到电话 PBX 到服务器。

    这是当我得到一份新工作时我做的第一件事就是花时间映射网络并设置时间。然后我可以在这里和那里检查它,并从那时起消除时间同步问题。

    • 2
  5. sysadmin1138
    2009-05-20T14:00:19+08:002009-05-20T14:00:19+08:00

    时间在虚拟机中随处可见。您真的想确保 NTP 服务器没有在任何“服务器”语句中使用本地时钟,因为本地时钟太不可靠了。我所做的一件事是为 VMed 机器上的服务器设置“maxpoll”属性。这迫使 ntp 服务比配置的默认值更频繁地检查其上游时钟,这有助于保持真实。

    server [timeserver] maxpoll 12
    

    尝试一些设置,看看你需要走多远才能保持时间相对可靠。12 对我有用,但每个环境都不同。

    • 1
  6. Avery Payne
    2009-05-20T23:54:08+08:002009-05-20T23:54:08+08:00

    这听起来可能很有趣,但我敢打赌您正在运行多处理器设置? 某些制造商存在已知的时钟漂移问题, 多核/多插槽主板会出现AMD咳嗽。大量的中断活动——比如运行一两个虚拟机——会使漂移变得更糟。您正在经历的漂移听起来非常可疑。

    对于它的价值,我确实更喜欢 AMD 的产品而不是英特尔,所以不要认为这是对他们的打击。

    • 1
  7. Skyhawk
    2010-06-22T08:58:55+08:002010-06-22T08:58:55+08:00

    假设 AD1 是域控制器,我认为这里的问题可能与您的 Hyper-V 服务器从它自己的来宾虚拟机之一设置时间有关。这就是为什么当您切换到 VMware 后问题就消失了:VMware 服务器不需要将其时钟与 Windows 域控制器同步。

    • 1

相关问题

  • 您最喜欢的云计算提供商是什么?[关闭]

  • Vanilla Powershell 是否足以成为 Windows 和 DB 服务器管理员的语言?

  • 为什么添加新驱动器后我的磁盘驱动器访问速度如此之慢?

  • 在 Windows Server 2003 下使用 wscipt 从 .asp 文件运行 .exe

  • 最佳混合环境(OS X + Windows)备份?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve