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/*.list한 줄에 하나씩).

표시는 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.servicetimedatectl이제 NTP service: active환경 변수에 나열된 서비스가 실행 중인지 여부를 표시해야 합니다(에 따라 systemd).

HyperV 데몬 자체가 시스템 시계 동기화 상태 비트를 업데이트하지 않는 경우 adjtimex --status 0이를 직접 수행하여 시계가 동기화되었음을 나타내거나 adjtimex --status 64시계가 동기화되지 않았음을 나타낼 수 있습니다. (참고: 나는 커널 타이밍 시스템을 완전히 이해한다고 주장하지 않습니다. 따라서 이 작업을 선택하면자신의 책임하에 사용하십시오.HyperV 데몬이 이 상태 비트를 업데이트하지 않는 데는 그럴 만한 이유가 있을 수 있습니다. )


이를 사용하면 timedatectl set-ntp true시간 systemd-timedated동기화 서버 목록에 언급된 서비스를 확인하고 설치된 첫 번째 서비스를 활성화하고 시작하려고 시도하므로 SYSTEMD_TIMEDATED_NTP_SERVICES목록은 원하는 대로 정렬되어야 합니다.

관련 정보