hyperv-daemonを有効にすると、システムクロックがtimedatectlを介して同期されることを意味しますか?

hyperv-daemonを有効にすると、システムクロックがtimedatectlを介して同期されることを意味しますか?

chronydを無効にし、代わりにhypervデーモンを使用してサーバークロックを同期して、仮想マシンを実行しているコンピュータでゲストOSの時間を管理することを選択しました。

chronydを無効にし、hyperv-daemonを有効にした後、サーバークロックはもはやドリフトしません。

ただし、実行すると、timedatectlシステムクロックが同期していないことを示す出力を表示できます。

[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はchronydサービスが実行されていることを確認するだけで「システムクロック同期」値を設定しますか?

答え1

timedatectlから同期情報を取得しますsystemd-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/*.list1行に1つ)。

表示は、デフォルトNTP serviceで「実行中のNTP同期サービスとしてリストされているサービスはありますか?」によって決まります。

このSystem clock synchronized情報はカーネルから来ます。時間同期サービスがアップデートを提供していることをカーネルが知っている場合、カーネルはtime_statusカーネル内の変数からビット7をクリアします。次のコマンドを使用して、この変数の値を表示できますadjtimex --print。ビット7(値64)がに設定されている場合、statusシステムクロックはいいえ同期中です。 / このビットをtimedatectl表示ソースとして使用します。systemd-timedated.serviceSystem clock synchronized: yes/no

バージョンが環境変数をsystemd-timedated.serviceサポートしている場合SYSTEMD_TIMEDATED_NTP_SERVICES(サービスマニュアルページの確認)、次のオーバーライドファイルを作成できます/etc/systemd/system/systemd-timedated.service.d/override.conf

[Service]
Environment=SYSTEMD_TIMEDATED_NTP_SERVICES=<name of HyperV daemon .service here>:chronyd.service:ntp.service:systemd-timesyncd.service

明らかに、対応するHyperVデーモンをファイル<name of HyperV daemon .service here>の実際の名前に置き換えます。.service

このオーバーレイファイルを作成して再起動した後、コマンドはsystemd-timedated.service環境変数にリストされているサービスが実行されているかどうかを表示する必要があります(に従って)。timedatectlNTP service: activesystemd

HyperVデーモン自体がシステムクロック同期ステータスビットを更新しない場合は、adjtimex --status 0それを直接実行して、クロックが同期していることを示すか、クロックがadjtimex --status 64同期していないことを示します。 (注:私はカーネルタイミングシステムを完全に理解しているとは主張しません。したがって、これを選択した場合自分の責任で使用してください。HyperVデーモンがこのステータスビットを更新しない理由は何でもあります。 )


これを使用すると、時刻timedatectl set-ntp true同期systemd-timedatedサーバーのリストに記載されているサービスを確認し、インストールされた最初のサービスを有効にして開始しようとするため、リストSYSTEMD_TIMEDATED_NTP_SERVICESは必要に応じてソートする必要があります。

関連情報