배경

배경

NTP가 설치되어 있고 내부 NTP 서버 피어가 레이어 2입니다. 하지만 서버를 다시 시작할 때마다 가상 머신 시간이 ESX 호스트와 동기화된 후 6시간씩 빨라집니다.

나는 ntpdate -s xxxx를 실행했고 그것이 수정되었습니다. 그러나 다시 시작한 후에는 시간이 6시간 앞당겨졌습니다.

왜 NTP가 이를 처리하지 않습니까? ntp를 활성화했고 부팅 중에 시작되지만 시간은 항상 ESX 시간입니다. 우분투 16.04를 사용하고 있습니다.

또한 timedatectlNTP는 표시되지 않지만 systemd.timesyncd표시됩니다. systemd.timesyncd가상 머신에서 비활성화되고 중지되었습니다.

root@host001:~# timedatectl
                      Local time: Fri 2020-05-08 16:00:59 UTC
                  Universal time: Fri 2020-05-08 16:00:59 UTC
                        RTC time: Fri 2020-05-08 08:57:03
                       Time zone: UTC (UTC, +0000)
       System clock synchronized: no
systemd-timesyncd.service active: no
                 RTC in local TZ: no

답변1

VMWare 자체 백서에서는 Linux VM 설치에서 NTP 서버를 실행할 것을 권장하지만,기본적으로, VM 시간은 VM이 호스팅되는 하이퍼바이저/호스트의 시간과 동기화됩니다.

하이퍼바이저 시간과 실제 시간이 차이가 있는 경우또는ntpd 데몬이 실행되고 있지 않으면 영향을 받는 하이퍼바이저에서 호스팅되는 가상 머신에 타이밍 차이가 발생합니다.

vSphere 설명서 센터 - 게스트 운영 체제와 호스트 운영 체제 간의 시간 동기화 구성설명VMware기본행동:

시간 동기화가 발생한 후 VMware Tools는 게스트 운영 체제와 호스트 운영 체제의 시계가 여전히 일치하는지 확인하기 위해 매분 확인합니다. 그렇지 않은 경우 게스트 운영 체제의 시계는 호스트의 시계와 일치하도록 동기화됩니다.

게스트 운영 체제의 시계가 호스트의 시계보다 느린 경우 VMware Tools는 호스트의 시계와 일치하도록 게스트의 시계를 앞으로 이동합니다. 게스트 운영 체제의 시계가 호스트의 시계보다 빠른 경우 VMware Tools는 시계가 동기화될 때까지 게스트의 시계가 느리게 실행되도록 합니다.

VMware Tools의 주기적 시간 동기화가 켜져 있는지 여부에 관계없이 특정 작업 후에 시간 동기화가 발생합니다.

  • VMware Tools 데몬이 시작될 때(예: 재부팅 또는 전원 켜기 작업 중)

  • 일시 중단된 작업에서 가상 머신을 재개하는 경우

  • 스냅샷으로 되돌린 후

  • 디스크를 축소한 후

실시간, 하이퍼바이저 시간, VM 시간 간에 이러한 차이가 발생하는 경우 수행해야 할 몇 가지 작업이 있습니다.

  • 시간, 시간대를 수정하고 VMware 호스트/하이퍼바이저에서 NTP를 활성화합니다.
  • VM/Linux와 VM의 VMWare 측/vmx 파일에 있는 하이퍼바이저 간의 동기화를 비활성화합니다.
  • VM/Linux 측에서 하이퍼바이저에 액세스할 수 없습니다. 시작 시 가상 머신과 하이퍼바이저의 동기화를 비활성화하고,가상 머신 도구, 경쟁하지 않기 때문에항상, NTP 데몬을 사용하여 VM 시간을 설정/드리프트합니다.

    vmware-toolbox-cmd timesync disable
    

    호스트/하이퍼바이저 시간을 수정할 수 없는 경우 시간 동기화를 비활성화해야 합니다., 이러한 차이가 클수록 상황은 더욱 긴급해집니다.

다시 인용vSphere 설명서 센터 - 게스트 운영 체제와 호스트 운영 체제 간의 시간 동기화 구성

기본 시간 동기화 소프트웨어(예: NTP(Network Time Protocol)...)는 일반적으로 VMware Tools의 주기적 시간 동기화보다 더 정확하므로 선호됩니다. 게스트에서는 한 가지 형태의 정기적인 시간 동기화만 사용하세요. 기본 시간 동기화 소프트웨어를 사용하는 경우 VMware Tools의 주기적 시간 동기화를 끄십시오.

VM 측 NTP 서비스의 경우,엔테푸드시간 차이가 너무 크면 중단하고, 무시하라는 지시를 받으면 매우 느리게 동기화합니다.

부팅/NTP 서비스 시작의 경우 즉시 자동으로 시간을 변경하려면 ntp.conf의 첫 번째 줄에 다음을 추가합니다.

tinker panic 0

또한보십시오:

VMWare KB - 시간 동기화 비활성화(1189),호스트와 가상 머신 간의 시간 동기화를 완전히 비활성화하는 데 사용됩니다..

30분 이상 동기화가 되지 않을 경우 11분 모드자세한 설명tinker panic 0

아덴다

그럼에도 불구하고, 다시 한 번 여러 분야의 팀과 협력하는 경우 호스트 측 시간 개념을 수정하고 VMWare 팀의 주의를 환기시키는 것이 좋습니다.

하이퍼바이저 종료 시간은 해당 VMWare 호스트에서 생성된 로그 타임스탬프와 VM/하우스키핑 파일 생성/수정 시간에 영향을 미칩니다.

하이퍼바이저 타이밍 오류의 영향은 특히 다음과 같은 상황에서 더욱 복잡할 수 있습니다.

  • VMWare 파일이 위치한 저장 공간은 여러 VMWare 호스트에서 공유됩니다.
  • 로그는 중앙 syslog 서버로 전송됩니다.
  • 동일한 vCenter에서 여러 VMWare 호스트를 관리합니다.

답변2

배경

대부분의 컴퓨터에서 시작 시:

  • 시간은 RTC에서 읽습니다(RTC는 컴퓨터가 꺼져 있을 때 항상 배터리로 전원을 공급받습니다).
  • 컴퓨터를 마지막으로 종료했을 때 파일에 저장된 내용을 기반으로 일부 조정 사항이 추가될 수 있습니다.
  • 이것은 컴퓨터 시간인 새로운 "하드웨어 시간"입니다.
  • 어느 시점까지는 클라이언트(sntp, ntpdate, ntpd, chronyd 등) 또는 하드웨어 시계(GPS)가 더 나은 추정으로 시간을 업데이트합니다.

어떤 이유로든 RTC 배터리에 오류가 발생하면 시작 시간이 정확한 시간과 크게 다를 수 있습니다.

답변

가상 컴퓨터에서 RTC는 실제 RTC가 아닌 가상 RTC이며 시간은 호스트 시간을 기준으로 읽어옵니다. 호스트 시간이 꺼져 있으면 가상 머신의 시작 시간도 크게 늘어납니다. RTC 배터리 불량 같습니다.

이것이 바로 이런 일이 발생하는 이유입니다(가상 머신에서 복사한 것).

root@host001:~# timedatectl
                      Local time: Fri 2020-05-08 16:00:59 UTC  
                  Universal time: Fri 2020-05-08 16:00:59 UTC  
                        RTC time: Fri 2020-05-08 08:57:03  
                       Time zone: UTC (UTC, +0000)  
       System clock synchronized: no  
systemd-timesyncd.service active: no  
                 RTC in local TZ: no  

이것RTC 시간이 다릅니다.실제, 현지 또는 UTC보다 더 정확합니다.

해결책

호스트 시간이 올바른지 확인하세요. 거기에서 ntp 또는 GPS를 사용하십시오.


예를 들어, Qemu 매뉴얼 페이지에서:

-rtc [base=utc|localtime|datetime][,clock=host|rt|vm][,driftfix=none|slew]

기본적으로 RTC는 호스트 시스템 시간에 따라 구동됩니다. 이를 통해 RTC를 게스트 내부의 정확한 참조 시계로 사용할 수 있습니다. 특히 호스트 시간이 정확한 외부 참조 시계(예: NTP를 통해)를 원활하게 따르는 경우 더욱 그렇습니다.

관련 항목: VM BIOS RTC를 스푸핑하여 시간 설정

관련 정보