모든 VM에서 NTP 서버를 실행해야합니까?


18

게스트가 어떻게 든 호스트의 시스템 시간을 상속받을 수 없습니까?

동일한 머신에서 동일한 결과를 여러 번 얻기 위해 동일한 데몬을 실행하는 것은 무의미 해 보이지만 KVM 또는 Xen 기사를 읽을 때 시간과 관련된 것을 찾지 못했습니다. 제 이해는 게스트가 부팅 할 때 호스트 시간을 얻지 만 분리 될 수 있다는 것입니다. 그 맞습니까 ?



1
NTP 클라이언트를 의미한다고 생각합니까?
Michael Hampton

1
@MichaelHampton : 그렇습니다. ntp 패키지는 항상 두 가지를 모두 제공하기 때문에 NTP 클라이언트와 서버의 구별이 실제로 명확하지 않았습니다.
zimbatm

2
이 질문과 관련하여 : 데비안과 파생물에서 openntp패키지는 패키지보다 훨씬 더 가벼운 무게 ntp입니다. 기본적으로 바인딩되지 않으므로 여기에서 정확히 필요한 클라이언트 역할을합니다.
zimbatm

답변:


13

맞습니다. 하이퍼 바이저가 적합하다고 볼 때 타이머 인터럽트 (OS에서 시간을 유지하는 경우가 종종 있음) 사이의 간격이 확장되고 압축되므로 시간은 "드리프트"할 수 있을 뿐만 아니라 드리프트 될 것입니다.

대부분의 가상화 플랫폼 (Hyper-V 통합 서비스, VMWare 도구)에서 일반적으로 수행되는 해결 방법은 게스트에서 데몬을 실행하여 주기적으로 시계를 VM 호스트와 동기화합니다. Hauke가 귀하의 질문에 대한 언급에서 언급했듯이 KVM은 추가로 반 가상화 시계를 제공하며 게스트 OS에로드 된 각 드라이버가 작동해야합니다.

더 읽을 거리 :

VMWare 가상 머신 (vmware.com)의 KVM 시간 관리
KVM 게스트 클록 동기화 (s19n.net)


고마워 : EC2에 사람들을 위해, 젠은 또한 클럭 소스를 제공하는 것 cat /sys/devices/system/clocksource/clocksource0/current_clocksource=> 젠
zimbatm

kvm-clock이 호스트를 서버로 사용하고 VM을 클라이언트로 사용하더라도 여전히 chronyd를 권장합니다.
akostadinov

20

완벽한 세상에서 VM 게스트는 완벽한 시간을 유지하거나 최소한 호스트가 제공하는 완벽을 유지합니다. 불행히도 우리는 완벽한 세상에 살고 있지 않습니다.

사람에게 알려진 거의 모든 하이퍼 바이저에 대한 경험을 바탕으로 항상 예외없이 가상 머신에서 NTP 클라이언트를 실행합니다. 내 일반적인 설정은 -g 옵션을 사용하여 ntpd를 사용하거나 이전 시스템의 경우 ntpdate를 시작하여 이전 단계에서 시계를 밟는 것입니다 (시스템 부팅시 동기화되지 않을 수 있음).

KVM은 반 가상화 된 실시간 클럭으로 거의 완벽한 설정을 갖추고 있습니다 . 적절한 드라이버 (최신 모든 Linux)를 보유한 게스트는 호스트뿐만 아니라 시간을 유지합니다. 그러나 여전히 문제가 있습니다. 예를 들어 호스트에서 NTP를 실행하지 않거나 호스트에 잘못된 시간대가 설정되어 있거나 호스트의 시계가 잘못되었을 수 있습니다.

VMware와 Hyper-V는 중간에 떨어집니다. 각각에는 게스트에서 실행되는 도구가있어 시계를 호스트와 주기적으로 동기화하지만 다시 말하면 호스트 시계의 기존 문제에 취약합니다.

테스트 Hyper-V 서버의 게스트도 이상한 동작을 보였습니다. 통합 서비스를 사용하더라도 게스트 시계가 500ppm보다 빠르게 표류하여 ntpd가 작동하지 못하게합니다 ( 이보다 더 빨리 표류하면 시계가 미친 것으로 간주합니다 ). 나는 이러한 손님을 전환했다 chrony 수 있으며, 이 값을 조정 할 수 있습니다.

젠은 이런 점에서 최악이다. 그것은 절대적으로 동기화없으며 게스트에서 NTP를 실행하는 것이 거의 필요합니다. (최신 버전의 Xen은 일종의 동기화가 있지만 아직 개인적으로 작업하지 않았다고 들었습니다.)

퍼블릭 클라우드와 같이 호스트 하이퍼 바이저가 제어 할 수없는 경우 상황이 악화됩니다. 귀하는 호스트 시계와 관련하여 제공자의 자비에 있으며, 동기화를 유지하는데 부지런하지 않으면 귀하는 잃게됩니다.

이 모든 것 때문에 반 정확한 시계조차도 필요하다면 가상 머신에서 NTP 클라이언트를 실행하는 것이 매우 필요합니다. NB : Windows 가상 머신을 실행하는 경우 시계를 지속적으로 조정하는 타사 NTP 클라이언트를 확보하십시오. Windows와 함께 제공되는 클라이언트에 대한 잘못된 구실 은 일주일에 한 번만 시계를 조정하므로 완전히 어리 석습니다.


ntpdate일일 cron 작업에서 충분히 실행 중입니까, 아니면 ntp 데몬이어야합니까?
AngerClown

4
시계를 지속적으로 동기화 할 무언가가 필요합니다. 하루 종일 동기화되지 않아 문제가 발생할 수 있기 때문입니다. 그리고 일부 프로그램은 시계를 밟는 것을 좋아하지 않습니다.
Michael Hampton

ntp 데몬의 문제는 기본적으로 다른 사람에게 시간을 제공하기위한 것이므로 시간이 너무 멀면 작동이 중지됩니다. 나는 ntpdate와 같이 더 연속적으로 실행되고 포트를 바인딩하지 않는 것이 더 좋기를 바랍니다.
zimbatm

1
@JonasPfenniger ntpd가 제대로 작동하지 않으면 chrony를 대신 사용해보십시오 (위에서 제안). 가상 머신에서 볼 수있는 이상한 시나리오를 수용하기 위해 ntpd보다 약간 더 조정할 수 있습니다.
Michael Hampton

3
귀하가 말한 내용의 95 %에 동의하지만 NTP를 사용하는 Windows 클라이언트가 주당 한 번의 시계 변경으로 제한되지 않는다는 점을 지적하고 싶었습니다. 다음 reg 키를 사용하면 업데이트 간격을 효과적으로 정의 할 수 있습니다 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\UpdateInterval. 값은 초 단위로 정의되며 일반적으로 360000 (100 시간)으로 설정되지만 응용 프로그램이 특히 시간에 민감한 경우 15 분마다 동기화하도록 900으로 설정할 수 있습니다. 나중에 W32Time 서비스를 다시 시작해야합니다.
kayjay

3

NTP는 잘 알려져 있고 오랫동안 사용되어 왔기 때문에 NTP를 사용하는 것이 좋습니다. 시계를 조정하는 것은 쉽지 않습니다. NTP가이 문제를 해결했습니다.

VMware공식 라인은 하나의 메커니즘을 사용하는 것입니다. NTP 는보다 세밀하고 시간을 조정하기 위해 더 작은 단계를 수행하기 때문에 NTP를 선호 합니다. 내부 VMware 솔루션은 더 큰 단계를 수행합니다. 둘 다 달릴 때 서로 싸울 수 있습니다. 내부 VMware 솔루션을 통해 큰 발걸음을 내딛은 다음 NTP가이를 조정하고 약간 되돌립니다.

그러나 실제로 우리는 동시에 두 가지를 모두 실행하지만 아직 문제를 보지 못했습니다.

$ ntpq   
ntpq> peers
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
something.org  172.2.1.5          2 u   57   64  377    1.597   -2.409   5.952


$  vmware-toolbox-cmd  timesync status
Enabled


$ vmware-toolbox-cmd help timesync
timesync: functions for controlling time synchronization on the guest OS
Usage: vmware-toolbox-cmd timesync <subcommand>

Subcommands:
  enable: enable time synchronization
  disable: disable time synchronization
  status: print the time synchronization status
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.