Mesin Hyper-V melayang-layang di mana-mana, bahkan dengan NTP

10

Diselesaikan Masalahnya adalah Hyper-V pada mesin itu. Saya menghapus Hyper-V, menginstal VMware Server, menjalankan VM yang sama. Masalah sinkronisasi waktu hilang (perbedaan <100 ms setelah sehari).


Setup saya seperti ini:

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 dan S1 memiliki sinkronisasi baik - stripchart menunjukkan perbedaan kurang dari 100 ms.

S2 melayang seperti orang gila. Inilah sedikit stripchart melawan AD1:

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 

Dalam 20 detik, itu melayang lebih dari sedetik. Jika saya mengatur ulang secara manual ke dalam 1s, dalam beberapa menit itu akan kembali melayang sekitar 2 detik. Semalam ia pergi dari ~ 2s ke ~ 5s. Linux VM di dalam S2 memiliki sinkronisasi sempurna dengan AD1.

Inilah konfigurasi:

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

Saya melihat log peristiwa, dan selain dari peringatan tentang sinkronisasi (setelah keluar dari sinkronisasi), tidak ada peringatan lain.

Bagaimana saya bisa menyelesaikan masalah ini? Ini satu-satunya mesin yang mengalami masalah ini. Semua mesin lain (fisik dan virtual) baik-baik saja.

Sunting: Untuk memperjelas: VM (AD1) integrasi dimatikan dan disinkronkan ke time.nist.gov. AD1 baik-baik saja. Ini adalah mesin fisik S1 yang tidak dapat disinkronkan ke AD1 dan melayang di seluruh. Semua server fisik lainnya dapat disinkronkan ke AD1 dengan baik.

Perbarui Jadi, tampaknya ada masalah menjalankan VM. Jam berjalan lambat dengan VM mati. Dihidupkan, itu segera mulai kehilangan detik. Saya swt VM untuk hanya menggunakan setengah sumber daya, dan yang tampaknya telah sedikit dimitigasi, untuk saat ini. Terima kasih!

MichaelGG
sumber

Jawaban:

5

Dari uraian Anda, sepertinya ada masalah perangkat keras yang sebenarnya dengan RTC ( http://en.wikipedia.org/wiki/Real-time_clock ) pada motherboard server S2.

Tamu Hyper-V awalnya mendapatkan jam itu dari host (HYV1), tetapi karena Anda menonaktifkan sinkronisasi waktu Hyper-V, ia mendapatkan semua pembaruan jam lebih lanjut dari NIST (yang berfungsi dengan baik). Linux VM Anda tidak terintegrasi dengan Hyper-V, jadi sudah waktunya dari domain, yang juga berfungsi dengan baik. Mesin fisik Anda yang lain berfungsi dengan baik, hanya ada satu server fisik yang mengalami penyimpangan 1 detik setiap 20 detik (yang merupakan penyimpangan jumlah gila). Waktu melayang jauh lebih cepat daripada waktu sinkronisasi jaringan dapat mengatur ulang jam ke waktu yang tepat (yang jika saya ingat benar terjadi setiap 8 jam).

Jika Anda ingin mengesampingkan Hyper-V sebagai penyebab kesalahan pada S2, buat entri boot "no Hypervisor", reboot tanpa Hyper-V, dan lihat apakah waktu melayang berlanjut. Instruksi di sini: http://blogs.msdn.com/virtual_pc_guy/archive/2008/04/14/creating-a-no-hypervisor-boot-entry.aspx

-Sean

Sean Earp
sumber
OK, saya akan mencobanya.
MichaelGG
OK, saya mematikan VM (tidak menonaktifkan HyperV). Jam jauh lebih baik sekarang. Setelah sekitar 3 menit, hanya hilang sekitar 100 ms. Ini masih kalah, tetapi jauh lebih sedikit dari sebelumnya. Segera setelah saya menyalakan VM, itu menjadi gila. Ini 1 detik dalam beberapa detik. Mungkin menyebabkan VM tidak memiliki layanan integrasi?
MichaelGG
Michael- Ini mungkin tampak keluar dari bidang kiri di sini, tetapi apakah Anda menjalankan segala jenis aplikasi multimedia pada partisi induk S2? -Sean
Sean Earp
Nggak. Masalah akhirnya menjadi Hyper-V. Lepas Hyper-V, pakai Vmware Server, jalankan VM yang sama - tidak ada masalah. Sinkronisasi waktu adalah <100ms.
MichaelGG
3

Masalahnya adalah dengan implementasi virtual dari berbagai sumber clock (tsc, jiffies, acpi_pm, cmos_trc). Cara terbaik yang saya telah menemukan untuk memperbaiki masalah ini dengan HyperV adalah untuk mengubah off the HyperV disediakan jam sinkronisasi untuk mesin tamu Anda, kemudian gunakan adjtimex untuk mengatur waktu. Pada OS tamu Ubuntu lakukan ini ...

# 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

dan jawab TIDAK untuk kedua pertanyaan

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

biarkan itu berjalan selama beberapa jam untuk mengkalibrasi, tekan Ctrl-C untuk keluar.

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

ini akan melakukan analisis kuadrat terkecil dari jam Anda dan akan menemukan penyesuaian yang tepat

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

ini akan menyinkronkan ulang waktu pada mesin Anda dan ntp seharusnya dapat membuatnya tetap sinkron karena seharusnya tidak terlalu banyak melayang.


sumber
2

Ini tampaknya menjadi masalah yang sangat umum dengan VM. Lihat situs web berikut:

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

Saran saya adalah untuk menyinkronkan hanya dengan server waktu eksternal dan menonaktifkan sinkronisasi waktu integrasi

Semoga ini bisa membantu.

apalagi
sumber
Itulah tepatnya yang telah saya lakukan. VM (AD1) integrasi dimatikan dan disinkronkan ke time.nist.gov. AD1 baik-baik saja. Mesin fisik S1 yang kehilangan sinkronisasi ke AD1.
MichaelGG
Seperti yang dikatakan oleh bab ini - untuk mengatur MaxAllowedPhaseOffset ke 1. jaylee.org/post/2009/10/14/…
gbjbaanb
2

Kami telah menjalankan Hyper-v on Core untuk sementara waktu. Awalnya kami mengalami masalah waktu sinkronisasi ..... Saya kembali ke praktik terbaik dari Windows NT lama saya.

Saya melihat server dengan OS. Saya membuat Linux, Router, Windows, Novell master.

Anda mungkin tidak memiliki Novell sekarang tetapi tetap bersamaku.

Setiap server "master" disinkronkan ke router. Router menuju strata. Kemudian setiap server anggota memiliki server OS induknya dan tambahan dari salah satu Master lainnya.

  • Linux ke Router, lalu ke Novell
  • Novell ke Router, lalu ke Windows
  • Windows ke router, lalu ke Linux
  • Router ke Stratum, lalu ke Core switch
  • Inti Beralih ke Stratum, lalu ke Router

Bagian terakhir dari strategi ini adalah ... SEMUA YANG memiliki server waktu. Jika tidak memiliki server waktu maka tidak akan dicolokkan ke jaringan. Dari pemanggang roti ke beralih ke telepon PBX ke server.

Ini adalah salah satu hal pertama yang saya lakukan ketika saya mendapatkan pekerjaan baru adalah menghabiskan waktu untuk memetakan jaringan dan mengatur waktu. Saya kemudian bisa memeriksanya di sana-sini dan menghilangkan sinkronisasi waktu sebagai masalah sejak saat itu.

Thomas Denton
sumber
Hmm, saya akan mencoba menambahkan manual sekunder dan melihat apakah itu membantu. Tapi semuanya bekerja dengan baik - hanya mesin fisik yang satu ini melayang.
MichaelGG
Mesin macam apa itu? Dell / HP / IBM - Lainnya? Saya memiliki kotak Dell yang selalu perlu disetel.
Thomas Denton
Dell PowerEdge 850 dengan Pentium D920 di dalamnya (atau sesuatu di sekitar sana - 2.8GHz, tidak Intel VT.)
MichaelGG
PE 350 akan melayang sangat buruk. tapi itu bertahun-tahun yang lalu. Saya belum pernah menggunakan 850 tetapi server SC1435 yang merupakan analog lebih murah ke 850 baik-baik saja. Mungkin melihat lingkungan, apakah server bergetar dan baterai cmos longgar atau sesuatu yang gila seperti itu?
Thomas Denton
1

Waktu melayang di semua tempat di VM. Anda benar-benar ingin memastikan bahwa server NTP tidak menggunakan jam lokal dalam pernyataan 'server' apa pun, karena jam lokal terlalu tidak dapat diandalkan. Satu hal yang saya lakukan untuk membantu adalah mengatur atribut "maxpoll" untuk server pada mesin VMed. Ini memaksa layanan ntp untuk memeriksa jam hulu lebih sering daripada default yang dikonfigurasi, yang membantu menjaganya tetap benar.

server [timeserver] maxpoll 12

Coba beberapa pengaturan untuk melihat seberapa jauh Anda perlu menjaga waktu yang relatif dapat diandalkan. 12 bekerja untuk saya, tetapi masing-masing lingkungan berbeda.

sysadmin1138
sumber
Saya mencoba dengan waktu polling seperti 2 atau 4 (16 detik). Masih melayang gila-gilaan.
MichaelGG
1

Ini mungkin terdengar lucu, tapi saya yakin Anda menjalankan pengaturan multi-prosesor? Ada dikenal isu jam-drift dengan produsen tertentu batuk AMD batuk yang terjadi dengan motherboard multi-core / multi-socket. Aktivitas interupsi berat - seperti katakanlah, menjalankan satu atau dua mesin virtual - membuat penyimpangan menjadi lebih buruk. Aliran yang Anda alami terdengar sangat mencurigakan seperti ini.

Untuk apa nilainya, saya lebih suka penawaran AMD daripada Intel, jadi jangan menganggap ini sebagai pukulan terhadap mereka.

Avery Payne
sumber
Mesin ini menjalankan Pentium D930, jadi ini adalah pengaturan multicore. Saya akan menonaktifkan VM dan melihat apa yang terjadi.
MichaelGG
2
Membunuh sebuah inti pada VM membantu sinkronisasi pada host.
MichaelGG
1

Dengan asumsi bahwa AD1 adalah pengontrol domain, saya pikir masalah di sini mungkin terkait dengan pengaturan server Hyper-V waktunya dari salah satu VM tamunya sendiri. Itu sebabnya masalah hilang ketika Anda beralih ke VMware: server VMware tidak merasa terdorong untuk menyinkronkan jamnya dengan pengontrol domain Windows.

Skyhawk
sumber