Apakah saya perlu menjalankan server NTP di setiap VM?

18

Tidak bisakah para tamu entah bagaimana mewarisi waktu sistem tuan rumah?

Sepertinya tidak ada gunanya menjalankan daemon yang sama untuk mendapatkan hasil yang sama pada mesin yang sama beberapa kali tetapi saya tidak menemukan sesuatu yang berhubungan dengan waktu ketika membaca artikel KVM atau Xen. Pemahaman saya adalah bahwa tamu mendapatkan waktu host pada saat boot tetapi kemudian mungkin terpisah. Apakah itu benar ?

zimbatme
sumber
3
linux-kvm.org/page/KVMClock
Hauke ​​Laging
1
Saya kira Anda maksud klien NTP?
Michael Hampton
1
@MichaelHampton: Ya, perbedaan antara klien NTP dan server tidak pernah benar-benar jelas bagi saya karena paket ntp selalu menyediakan keduanya.
zimbatm
2
Terkait dengan pertanyaan ini: pada Debian dan turunannya, openntppaket jauh lebih ringan daripada ntppaket. Itu tidak mengikat secara default dan hanya bertindak sebagai klien yang persis apa yang kita butuhkan di sini.
zimbatm

Jawaban:

13

Ini benar. Perlu dicatat bahwa waktu tidak hanya "dapat" hanyut, tetapi juga akan hilang karena fakta bahwa interval antara penghenti waktu (yang sering didasarkan pada pengaturan waktu pada OS) diregangkan dan dikompresi sesuai dengan hypervisor.

Solusi yang biasa diambil di sebagian besar platform virtualisasi (layanan integrasi Hyper-V, alat VMWare) menjalankan daemon pada tamu yang secara berkala menyinkronkan jam dengan host VM. Seperti dicatat oleh Hauke ​​dalam komentar untuk pertanyaan Anda, KVM juga menyediakan jam paravirtualized yang akan membutuhkan masing-masing driver dimuat pada OS tamu untuk bekerja.

Bacaan lebih lanjut:

Pencatatan Waktu di Mesin Virtual VMWare (vmware.com)
KVM sinkronisasi jam tamu (s19n.net)

the-wabbit
sumber
Terima kasih banyak. Bagi mereka yang menggunakan EC2, Xen juga tampaknya menyediakan sumber jam: cat /sys/devices/system/clocksource/clocksource0/current_clocksource=> xen
zimbatm
Tetap chronyd direkomendasikan bahkan jika kvm-clock digunakan dengan host sebagai server dan VM sebagai klien.
akostadinov
21

Di dunia yang sempurna, tamu VM Anda akan menjaga waktu yang sempurna, atau setidaknya sesempurna yang disediakan oleh tuan rumah. Sayangnya kita tidak hidup di dunia yang sempurna.

Berdasarkan pengalaman saya dengan hampir setiap hypervisor yang dikenal manusia, saya selalu menjalankan klien NTP di mesin virtual, tanpa kecuali. Setup saya yang biasa adalah ntpd dengan opsi -g, atau ntpdate mulai tepat sebelum itu untuk sistem lama, untuk melangkah jam (yang mungkin jauh dari sinkronisasi saat boot sistem).

KVM memiliki pengaturan yang hampir sempurna, dengan jam realtime paravirtualized ; tamu dengan driver yang sesuai (setidaknya Linux terbaru) akan menjaga waktu dan juga tuan rumah. Tapi masih ada yang salah di sini: Misalnya, tuan rumah mungkin tidak menjalankan NTP, tuan rumah mungkin memiliki zona waktu yang tidak ditetapkan, jam tuan rumah mungkin saja salah, dll.

VMware dan Hyper-V berada di tengah. Masing-masing memiliki alat yang dimaksudkan untuk dijalankan pada tamu yang menyinkronkan jam dengan tuan rumah secara berkala, tetapi sekali lagi, ini rentan terhadap masalah yang ada dengan jam tuan rumah.

Para tamu di server Hyper-V tes saya juga menunjukkan beberapa perilaku aneh: bahkan dengan layanan integrasi, jam tamu akan melayang lebih cepat dari 500 ppm, mencegah ntpd dari bekerja ( menganggap jam itu gila jika melayang lebih cepat dari ini ). Saya harus mengganti tamu-tamu ini ke Kronik , yang memungkinkan nilai ini disesuaikan.

Xen adalah yang terburuk dalam hal ini; sama sekali tidak ada sinkronisasi dan menjalankan NTP di tamu cukup banyak diperlukan. (Saya diberi tahu bahwa versi terbaru dari Xen memiliki semacam sinkronisasi tetapi belum secara pribadi bekerja dengannya.)

Keadaan menjadi lebih buruk jika hypervisor host tidak berada di bawah kendali Anda, seperti cloud publik. Anda berada di tangan penyedia sehubungan dengan jam tuan rumah, dan jika mereka tidak rajin menyinkronkannya, Anda kalah.

Dengan semua itu, menjalankan klien NTP di mesin virtual Anda cukup banyak diperlukan jika Anda bahkan membutuhkan jam semi-akurat. NB: Jika Anda menjalankan mesin virtual Windows, dapatkan klien NTP pihak ketiga yang menyesuaikan jam secara terus menerus; alasan buruk untuk klien yang datang dengan Windows hanya menyesuaikan jam seminggu sekali , yang benar-benar konyol.

Michael Hampton
sumber
Apakah menjalankan ntpdatetugas cron harian cukup atau apakah harus menjadi daemon ntp?
AngerClown
4
Anda benar-benar memerlukan sesuatu untuk menyinkronkan jam secara terus-menerus, karena itu bisa jadi jauh tidak sinkron dalam satu hari yang menyebabkan Anda mengalami masalah. Dan beberapa program tidak suka jamnya diinjak.
Michael Hampton
Masalah dengan daemon ntp adalah bahwa itu terutama dimaksudkan untuk memberikan waktu kepada orang lain dan dengan demikian akan berhenti bekerja jika waktu melayang terlalu jauh. Saya benar-benar berharap ada sesuatu yang lebih seperti ntpdate yang akan berjalan terus menerus dan tidak mengikat port apa pun.
zimbatm
1
@JonasPfenniger Jika ntpd tidak berhasil untuk Anda, coba gunakan chrony sebagai gantinya (seperti yang disarankan di atas). Ini bisa disetel lebih dari ntpd untuk mengakomodasi skenario aneh yang kita lihat dengan mesin virtual.
Michael Hampton
3
Meskipun saya setuju dengan 95% dari apa yang Anda katakan, saya hanya ingin menunjukkan bahwa klien Windows menggunakan NTP tidak terbatas pada satu perubahan jam per minggu. Kunci reg berikut memungkinkan Anda untuk menentukan interval pembaruan secara efektif: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\UpdateIntervalNilai ditentukan dalam detik dan biasanya diatur ke 360000 (100 jam), tetapi Anda dapat mengaturnya ke 900 untuk menyinkronkan setiap 15 menit jika aplikasi Anda sangat sensitif terhadap waktu. Ingatlah untuk memulai kembali layanan W32Time sesudahnya.
kayjay
3

Saya akan merekomendasikan untuk menggunakan NTP karena sudah terkenal dan sudah ada sejak lama. Menyesuaikan jam bukanlah hal sepele. NTP telah mengatasi masalah ini.

Garis resmi VMware adalah menggunakan satu mekanisme, dengan NTP lebih disukai karena lebih halus dan mengambil langkah lebih kecil untuk menyesuaikan waktu. Solusi VMware internal mengambil langkah-langkah yang lebih besar. Ketika Anda menjalankan keduanya, mereka bisa saling bertarung. Dengan solusi VMware internal mengambil langkah besar dan kemudian NTP menyesuaikannya dan mengambilnya kembali sedikit.

Namun dalam praktiknya kami menjalankan keduanya pada saat yang sama dan saya belum melihat masalah.

$ 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
jris198944
sumber