Hyper-V Makinesi, NTP ile bile zamanın her tarafına kayıyor


10

Çözüldü Sorun bu makinede Hyper-V idi. Hyper-V'yi kaldırdım, VMware Server'ı yükledim, aynı VM'yi çalıştırdım. Zaman senkronizasyonu sorunları ortadan kalktı (bir gün sonra <100 ms fark).


Kurulumum şöyle:

HYV1 - HyperV machine (non domain) - sync irrelevant
AD1  - VM AD server on HYV1, sync'd to time.nist.gov. HyperV time sync off.
S1   - Physical machine, sync'd to domain. 
S2   - Physical machine running HyperV, sync'd to domain.
V1   - Linux VM machine on S2, sync'd to AD1. No HyperV integration.

AD1 ve S1'in ince senkronizasyonu vardır - stripchart 100ms'den az fark gösterir.

S2 deli gibi sürükleniyor. İşte AD1'e karşı biraz stripchart:

18:33:22 d:+00.0010138s o:+05.4101899s 
18:33:24 d:+00.0010138s o:+05.4319765s 
18:33:26 d:+00.0000000s o:+05.4788429s 
18:33:28 d:+00.0000000s o:+05.6089942s 
18:33:30 d:+00.0010138s o:+05.7240269s 
18:33:32 d:+00.0000000s o:+06.0421911s 
18:33:34 d:+00.0081104s o:+06.5613708s 
18:33:37 d:+00.0000000s o:+06.9096594s 
18:33:39 d:+00.0000000s o:+06.8867838s 
18:33:41 d:+00.0010127s o:+06.8936401s 

20 saniye içinde bir saniyenin üzerine sürüklendi. Manuel olarak 1 saniye içinde sıfırlarsam, birkaç dakika içinde yaklaşık 2 saniye geri sürüklenir. Gecede ~ 2s ~ 5s gitti. S2 içindeki Linux VM, AD1 ile mükemmel senkronizasyona sahiptir.

İşte yapılandırma:

C:\Users\mgg>w32tm /dumpreg /subkey:Parameters

Value Name                 Value Type          Value Data
------------------------------------------------------------

ServiceDll                 REG_EXPAND_SZ       %systemroot%\system32\w32time.dll
ServiceMain                REG_SZ              SvchostEntry_W32Time
ServiceDllUnloadOnStop     REG_DWORD           1
Type                       REG_SZ              NT5DS
NtpServer                  REG_SZ              ad01.mydomain ad02.mydomain


C:\Users\mgg>w32tm /dumpreg /subkey:Config

Value Name                Value Type          Value Data
-----------------------------------------------------------

FrequencyCorrectRate      REG_DWORD           4
PollAdjustFactor          REG_DWORD           5
LargePhaseOffset          REG_DWORD           50000000
SpikeWatchPeriod          REG_DWORD           900
LocalClockDispersion      REG_DWORD           9
HoldPeriod                REG_DWORD           5
PhaseCorrectRate          REG_DWORD           1
UpdateInterval            REG_DWORD           30000
EventLogFlags             REG_DWORD           2
AnnounceFlags             REG_DWORD           5
TimeJumpAuditOffset       REG_DWORD           28800
MinPollInterval           REG_DWORD           2
MaxPollInterval           REG_DWORD           8
MaxNegPhaseCorrection     REG_DWORD           -1
MaxPosPhaseCorrection     REG_DWORD           -1
MaxAllowedPhaseOffset     REG_DWORD           300

Olay günlüğüne baktım ve senkronizasyon hakkındaki uyarıların dışında (senkronizasyondan çıktıktan sonra), başka uyarı yok.

Bu sorunu nasıl giderebilirim? Bu sorunu yaşayan tek makine bu. Diğer tüm makineler (fiziksel ve sanal) iyi durumda.

Düzenleme: Açıklığa kavuşturmak için: VM (AD1) tümleştirmesi kapalıdır ve time.nist.gov ile eşitlenir. AD1 iyidir. AD1 ile senkronize edilemeyen ve her yere sürüklenen fiziksel makine S1'dir. Diğer tüm fiziksel sunucular AD1 ile senkronize edilebilir.

Güncelleme Yani, VM'nin çalıştırılmasıyla ilgili bir sorun gibi görünüyor. Saat, VM kapalıyken yavaşça kayar. Açıldığında, hemen saniye kaybetmeye başlar. Sanal Makineyi sadece kaynakların yarısını kullanacak şekilde değiştirdim ve şimdilik bunu biraz hafifletmiş gibi görünüyor. Teşekkürler!

Yanıtlar:


5

Açıklamanızdan, S2 sunucusunun anakartında RTC ( http://en.wikipedia.org/wiki/Real-time_clock ) ile ilgili gerçek bir donanım sorunu olduğu anlaşılıyor .

Hyper-V konuk başlangıçta saatini ana bilgisayardan (HYV1) alır, ancak Hyper-V zaman senkronizasyonunu devre dışı bıraktığınız için, NIST'den (saat çalışıyor) tüm diğer saat güncellemelerini alır. Linux VM'niz Hyper-V ile entegre değildir, bu yüzden zamanı da etki alanından alıyor ve bu da iyi çalışıyor. Diğer fiziksel makineleriniz iyi çalışıyor, her 20 saniyede 1 saniyelik bir kaymaya sahip olan tek bir fiziksel sunucudur (bu, çılgınca bir sürüklenme miktarıdır). Zaman, ağ zaman senkronizasyonunun saati doğru saate sıfırlayabileceğinden (daha sonra doğru hatırlıyorsam 8 saatte bir gerçekleşir) çok daha hızlı sürükleniyor.

S2'deki hatanın nedeni olarak Hyper-V'yi dışlamak istiyorsanız, bir "Hiper Yönetici yok" önyükleme girişi oluşturun, Hyper-V olmadan yeniden başlatın ve zaman kaymasının devam edip etmediğini görün. Buradaki talimatlar: http://blogs.msdn.com/virtual_pc_guy/archive/2008/04/14/creating-a-no-hypervisor-boot-entry.aspx

-Sean


Tamam bunu deneyeceğim.
MichaelGG

Tamam, VM'yi kapattım (HyperV'yi devre dışı bırakmadım). Saat şimdi çok daha iyi. Yaklaşık 3 dakika sonra sadece 100ms kaybedilir. Hala kaybediyor, ama eskisinden çok daha az. VM'yi açtığımda, çıldırıyor. Birkaç saniye içinde 1 saniye patlar. Belki de VM'nin entegrasyon hizmetleri olmadığından?
MichaelGG

Michael- Bu sol alanın dışında görünebilir, ancak S2'nin ana bölümünde herhangi bir multimedya uygulaması çalıştırıyor musunuz? -Sean
Sean Earp

Hayır! Sorun Hyper-V oldu. Hyper-V'yi çıkardı, Vmware Server'ı takın, aynı VM'yi çalıştırdı - sorun yok. Zaman senkronizasyonu <100 ms'dir.
MichaelGG

3

Sorun, çeşitli saat kaynaklarının (tsc, jiffies, acpi_pm, cmos_trc) sanal uygulamasıyla ilgilidir. HyperV ile bu sorunu çözmenin en iyi yolu , konuk makineniz için HyperV tarafından sağlanan saat senkronizasyonunu kapatmak ve ardından zamanı ayarlamak için adjtimex kullanmaktır. Bir Ubuntu konuk işletim sisteminde bunu yapın ...

# rm /var/log/clocks.log
# /etc/init.d/ntp-server stop
# ntpdate ntp.ubuntu.com
# hwclock -u --systohc
# adjtimex -l -u -h ntp.ubuntu.com

ve her iki soruya da Hayır

# while [ /bin/true ] ; do yes | adjtimex -l -u -h ntp.ubuntu.com ; sleep 60 ; done

kalibre etmek için birkaç saat çalıştırın, çıkmak için Ctrl-C tuşlarına basın.

# adjtimex -r -a -u -h ntp.ubuntu.com

bu saatinizin en küçük kareler analizini yapacaktır ve doğru ayarlamayı bulacaktır

# ntpdate ntp.ubuntu.com
# hwclock -u --systohc
# /etc/init.d/ntp-server start

bu, makinenizdeki zamanı yeniden senkronize eder ve ntp artık senkronize tutabilecektir, çünkü artık çok fazla sürüklenmemelidir.


2

Bu, VM'lerde çok yaygın bir sorun gibi görünüyor. Aşağıdaki web sitelerine bakın:

http://www.vmwareinfo.com/2008/04/enabling-ntp-on-esx-servers.html

http://social.technet.microsoft.com/Forums/en-US/winserverhyperv/thread/6fff3eef-1b5b-4059-8618-22ab3f5c293c

Benim önerim sadece harici bir zaman sunucusuyla senkronize etmek ve herhangi bir entegrasyon zamanı senkronizasyonunu devre dışı bırakmak olabilir

Umarım bu yardımcı olur.


Ben de aynen bunu yaptım. VM'nin (AD1) entegrasyonu kapalıdır ve time.nist.gov ile senkronize edilir. AD1 iyidir. AD1 ile senkronizasyonu kaybeden fiziksel makine S1'dir.
MichaelGG


2

Bir süredir Core'da Hyper-v kullanıyoruz. İlk başta zaman senkronizasyonu sorunları vardı ..... Benim eski windows NT gün en iyi uygulama döndü.

Sunuculara işletim sistemi ile bakıyorum. Bir Linux, Router, Windows, Novell master oluşturuyorum.

Şimdi Novell olmayabilir ama bana katlanabilirsiniz.

Her bir "ana" sunucu yönlendiriciyle senkronize edilir. Tabakaya yönlendirici. Daha sonra her üye sunucunun ana işletim sistemi sunucusu ve diğer Master'lardan birinin ikincil sunucusu olur.

  • Linux'tan Router'a, sonra Novell'e
  • Novell'den Router'a, sonra Windows'a
  • Windows'u yönlendiriciye, sonra Linux'a
  • Yönlendiriciyi Stratum'a, ardından Core anahtarına
  • Çekirdek Stratum'a, ardından Router'a geçin

Bu stratajinin son parçası ... HER ŞEYİN bir zaman sunucusu var. Bir zaman sunucusu yoksa, ağa bağlanmayacaktır. Ekmek kızartma makinesinden telefon PBX'ine sunuculara geçmek için.

Bu, yeni bir işe geldiğimde yaptığım ilk şeylerden biri, ağı haritalamak ve zamanı ayarlamak için zaman harcamaktır. Daha sonra burada ve orada kontrol edebilir ve o zamandan itibaren bir sorun olarak zaman senkronizasyonunu ortadan kaldırabilirim.


Hmm, manuel bir ikincil eklemeyi deneyeceğim ve bunun yardımcı olup olmadığını göreceğim. Ama diğer her şey iyi çalışıyor - sadece bu fiziksel makine sürükleniyor.
MichaelGG

Ne tür bir makine? Dell / HP / IBM - Diğer? Her zaman ayarlanması gereken Dell kutularım var.
Thomas Denton

İçinde Pentium D920 bulunan Dell PowerEdge 850 (veya etrafındaki bir şey - 2.8GHz, Intel VT yapıyor)
MichaelGG

PE 350'ler çok kötü sürüklenirdi. Ama bu yıllar önceydi. Ben 850 kullanmadım ama 850 ucuz analog SC1435 sunucuları iyi. Belki ortama bakın, sunucu titreşiyor ve CMOS batarya gevşek mi yoksa çılgınca bir şey mi?
Thomas Denton

1

VM'lerde zaman her yerde sürükleniyor. Yerel saat çok güvenilir olmadığından, NTP sunucusunun yerel saati herhangi bir 'sunucu' deyiminde kullanmadığından emin olmak istiyorsunuz. Yardım etmek için yaptığım bir şey, VMed makinelerde sunucular için "maxpoll" özelliğini ayarlamaktır. Bu, ntp hizmetini, akış yukarı saatleriyle yapılandırılmış varsayılandan çok daha sık denetlemeye zorlar ve bu da doğru kalmasına yardımcı olur.

server [timeserver] maxpoll 12

Zamanı nispeten güvenilir tutmak için ne kadar aşağı inmeniz gerektiğini görmek için birkaç ayarı deneyin. 12 benim için çalışıyor, ama her ortam farklı.


2 veya 4 gibi bir anket süresi ile denedim (16 saniye). Hala delice sürükleniyor.
MichaelGG

1

Bu kulağa komik gelebilir, ancak eminim ki çok işlemcili bir kurulum çalıştırıyorsunuz? Belirli üreticileri ile bilinen saat-sürüklenme sorunları vardır öksürük AMD öksürük çok çekirdekli / çok soket anakartlar ile gerçekleşebilir. Ağır kesme faaliyeti - örneğin bir sanal makine çalıştırmak gibi - sürüklemeyi daha da kötüleştirir. Yaşadığınız sürüklenme bu şekilde çok kuşkuyla geliyor .

Değeri için AMD'nin Intel üzerindeki tekliflerini tercih ediyorum, bu yüzden bunu onlara karşı bir darbe olarak almayın.


Makine bir Pentium D930 çalıştırıyor, bu yüzden çok çekirdekli bir kurulum. VM'leri devre dışı bırakacağım ve ne olacağını göreceğim.
MichaelGG

2
VM'deki bir çekirdeği öldürmek, ana bilgisayardaki senkronizasyona yardımcı oldu.
MichaelGG

1

AD1'in bir etki alanı denetleyicisi olduğunu varsayarsak, buradaki sorunun Hyper-V sunucunuzun zamanını kendi konuk VM'lerinden biriyle ayarlamasıyla ilgili olabileceğini düşünüyorum. Bu nedenle VMware'e geçtiğinizde sorun ortadan kalktı: VMware sunucusu saatini bir Windows etki alanı denetleyicisiyle senkronize etmek zorunda değildir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.