Hyper-V 上 Linux VM 的时间/时区

Hyper-V 上 Linux VM 的时间/时区

你好,我在 Hyper-V 服务器上安装了 CentOS VM,但对时间设置感到很困惑。我的 Hyper-V 设置为 (UTC-05:00) 东部时间(美国和加拿大),当安装 CentOS VM 时,在时区选择上,我选择系统时钟使用 UTC 和美国/纽约。除了时钟显示 (UTC-05:00-04:00) EDT 之外,一切看起来都很好。

我是 Hyper-V 和 Linux VM 的新手,但我认为 Linux VM 将 Hyper-V 主机时间直接视为 UTC,因为我选择了美国/纽约时区,所以它采用 UTC-4(夏令时),因此时钟比实际时间晚了 4 个小时。我不确定如何解决这个问题。我重置了时钟,但重新启动后,VM 再次以错误的时间启动。

这应该如何工作?我必须将 Hyper-V 服务器设置为“真实”UTC 时间吗?这似乎不对,我希望我遗漏了一些简单的东西。我还没有找到与此相关的任何内容,因此非常感谢任何帮助/见解。我不认为这是一个新问题?

我还禁用了时间同步集成服务,因为我还没有在客户端上安装集成服务。谢谢你的帮助。

答案1

Windows(以及 Hyper-V 扩展)将“CMOS 时钟”(即使在虚拟机上)保持在本地时间,而不是 UTC。大多数 *nix 平台将其保持在 UTC 中,然后以本地时间显示。

默认情况下,Hyper-V 将设置虚拟机的时钟,在本例中,它将虚拟机时钟设置为您的本地时间 (EST/EDT)。*nix VM 需要进行设置才能识别这一点,因为它通常不是默认的。

或者,您可以禁用 Hyper-V 的时间同步,并让 *nix 客户端通过 NTP 或类似方式同步自己的时钟。这将导致偶尔的时钟不规则,因为 VM 的时钟不是独立的硬件,而是在主机上运行的软件(并不完美;除非您的应用程序需要高精度时钟,否则这不是问题)。

编辑:
我不懂 Linux,是从别人那儿学来的:对于 CentOS,请编辑/etc/sysconfig/clock以包含以下几行:

UTC=false
ZONE="America/New York"

文件中可能还有其他行,不确定它们应该是什么。启用 Hyper-V 的时间同步,虚拟机应该具有正确的时间(只要主机有)。

答案2

相关内容