首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启用hyperv-守护进程是否显示系统时钟由timedatectl同步?

启用hyperv-守护进程是否显示系统时钟由timedatectl同步?
EN

Unix & Linux用户
提问于 2021-09-07 10:13:29
回答 1查看 219关注 0票数 2

我们选择禁用time,而倾向于使用hyperv-守护进程来保持服务器时钟的同步,以便客户操作系统时间由运行VM的机器管理。

在禁用the并启用hyperv-守护进程之后,服务器时钟不处于驱动状态。

但是,在运行timedatectl时,我们可以看到输出显示系统时钟没有被同步:

代码语言:javascript
复制
[user@server ~]$ timedatectl
               Local time: Tue 2021-09-07 10:54:08 BST
           Universal time: Tue 2021-09-07 09:54:08 UTC
                 RTC time: Tue 2021-09-07 09:54:08
                Time zone: Europe/London (BST, +0100)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no

timedatectl是否仅通过检查the服务是否正在运行来设置“系统时钟同步”的值?

EN

回答 1

Unix & Linux用户

发布于 2021-09-10 10:56:14

timedatectlsystemd-timedated.service获取同步信息。

根据systemd-timedated.service的版本,它可能知道:

  • 只有systemd-timesyncd.service
  • 同步服务的内置列表,
  • 环境变量SYSTEMD_TIMEDATED_NTP_SERVICES中以冒号分隔的systemd-timedated.service进程环境中的服务列表。
  • 和/或(/usr/lib)|(/usr/local/lib)|(/etc)/systemd/ntp-units.d/*.list文件中的服务列表,每行一个。

NTP service显示基本上取决于“列为NTP同步服务的任何服务是否运行?”

System clock synchronized信息来自内核:如果内核知道时间同步服务正在为其提供更新,内核将清除内核中time_status变量中的第7位。您可以使用adjtimex --print查看这个变量的值:如果在它显示的status值中设置了第7位(值64),那么系统时钟将不同步。timedatectl / systemd-timedated.service使用此位作为其System clock synchronized: yes/no显示的源。

如果您的systemd-timedated.service版本支持SYSTEMD_TIMEDATED_NTP_SERVICES环境变量(请检查服务的手册页),那么您可以创建一个类似于/etc/systemd/system/systemd-timedated.service.d/override.conf的覆盖文件:

代码语言:javascript
复制
[Service]
Environment=SYSTEMD_TIMEDATED_NTP_SERVICES=<name of HyperV daemon .service here>:chronyd.service:ntp.service:systemd-timesyncd.service

显然,用适当的<name of HyperV daemon .service here>守护进程的.service文件的实际名称替换HyperV。

在创建这个覆盖文件并重新启动systemd-timedated.service之后,timedatectl命令现在应该显示NTP service: active,如果环境变量中列出的任何服务都在运行(根据systemd)。

如果HyperV守护进程本身不更新系统时钟同步状态位,那么显然可以使用adjtimex --status 0来指示时钟是同步的,或者使用adjtimex --status 64来表示它是不同步的。(注意:我并不声称完全理解内核计时系统,所以如果您选择这样做,它将承担您自己的风险。也许有一个很好的理由可以解释为什么HyperV守护进程不更新这个状态位。)

当您使用timedatectl set-ntp true时,systemd-timedated将检查它的时间同步服务器列表中提到的服务,并尝试启用和启动它找到的第一个安装的服务,因此SYSTEMD_TIMEDATED_NTP_SERVICES中的列表应该根据您的喜好排序。

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

https://unix.stackexchange.com/questions/668009

复制
相关文章

相似问题

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