Чи потрібно запускати NTP-сервер у кожному VM?


18

Не могли гості якось успадкувати системний час господаря?

Здається, безглуздо запускати один і той же демон, щоб отримати ті самі результати на одній машині кілька разів, але я не знайшов нічого, пов’язаного з часом, читаючи статті KVM або Xen. Я розумію, що гість отримує час перебування під час завантаження, але потім він може розпливатися. Це правильно ?



1
Я припускаю, що ви маєте на увазі клієнта NTP?
Майкл Хемптон

1
@MichaelHampton: Так, різниця між клієнтом NTP і сервером мені ніколи не була дуже зрозумілою, оскільки пакет ntp завжди забезпечує і те, і інше.
зимбат

2
Зв'язане з цим питанням: на Debian та похідних openntpпакет значно більший, ніж ntpпакет. Він не пов'язується за замовчуванням, тому просто виступає клієнтом, що саме тут нам потрібно.
зимбат

Відповіді:


13

Це вірно. Слід зазначити , що час не тільки «може» дрейфувати геть, але буде дрейфувати в зв'язку з тим , що інтервали між перериваннями таймера (який хронометраж ОС часто на основі) розтягуються і пресують як гипервизор буде потрібним.

Загальноприйняте рішення на більшості платформ віртуалізації (послуги інтеграції Hyper-V, інструменти VMWare) працює на демон, який періодично синхронізує годинник з хостом VM. Як зазначив Хауке у коментарі до вашого питання, KVM додатково забезпечує паравіртуалізований годинник, який потребує роботи відповідного драйвера, завантаженого в гостьовій ОС.

Подальше читання:

Хронометраж у віртуальних машинах VMWare (vmware.com)
Синхронізація годинника гості KVM (s19n.net)


Дуже дякую. Для тих, хто перебуває на EC2, Xen також здається, що джерело годинника: cat /sys/devices/system/clocksource/clocksource0/current_clocksource=> xen
zimbatm

Ще chronyd рекомендується, навіть якщо kvm-clock використовується з хостом як сервером, а VM як клієнтом.
акостадінов

21

В ідеальному світі ваші гості VM залишали б ідеальний час або, принаймні, так само ідеально, як надає господар. На жаль, ми не живемо в ідеальному світі.

Виходячи зі свого досвіду практично кожного відомого людині гіпервізора, я завжди запускаю клієнт NTP у віртуальних машинах без винятку. Моя звичайна настройка - ntpd з опцією -g або ntpdate, що починається прямо перед нею для старих систем, щоб переключити годинник (що може бути далеко не синхронізовано при завантаженні системи).

KVM має майже ідеальне налаштування, з його паравіртуалізованим годинником у режимі реального часу ; гості з відповідним драйвером (у всіх останніх Linux, принаймні) збережуть час, а також хост. Але тут все йде не так: Наприклад, хост може не працювати з NTP, хост може встановити неправильний часовий пояс, годинник хоста може бути просто неправильним і т.д.

VMware та Hyper-V потрапляють посередині. У кожного є інструмент, призначений для запуску на гості, який періодично синхронізує годинник з хостом, але, знову ж таки, це вразливо для будь-яких існуючих проблем з хост-годинником.

Гості на моєму тестовому сервері Hyper-V також проявляли дивну поведінку: навіть за допомогою інтеграційних служб гостьовий годинник рухатиметься швидше, ніж 500 проміле, не дозволяючи ntpd працювати ( він вважає, що годинник божевільний, якщо він дрейфує швидше, ніж цей ). Мені довелося переключити цих гостей на хронічні , що дозволяє коригувати це значення .

Ксен - найгірший у цьому відношенні; у нього немає абсолютно ніякої синхронізації, і запуск NTP в гостях дуже потрібен. (Мені кажуть, що зовсім недавні версії Xen мають певну синхронізацію, але особисто з нею ще не працювали.)

Все погіршується, якщо гіпервізор хоста не знаходиться під вашим контролем, наприклад, публічна хмара. Ви знаходитесь у владі постачальника щодо годинника хоста, і якщо вони не старанно підтримують його синхронізованим, ви програєте.

При всьому цьому запуск клієнтів NTP у ваших віртуальних машинах дуже потрібен, якщо вам потрібен навіть напівточний годинник. Примітка. Якщо ви запускаєте віртуальні машини Windows, отримайте сторонній клієнт NTP, який постійно регулює годинник; поганий привід для клієнта, який постачається разом із Windows, налаштовує годинник лише раз на тиждень , що абсолютно смішно.


Чи ntpdateдостатньо бігу в щоденній роботі з крон або це повинен бути демоном ntp?
AngerClown

4
Вам дійсно потрібно щось, щоб синхронізувати годинник постійно, оскільки це може вийти досить далеко від синхронізації за день, щоб викликати у вас проблеми. А деякі програми не люблять, щоб годинник ступав.
Майкл Хемптон

Проблема з демоном ntp полягає в тому, що він в першу чергу покликаний надавати час іншим і, таким чином, перестане працювати, якщо час занадто сильно рознесеться. Я дуже хотів би, щоб було щось більше на зразок ntpdate, яке буде працювати постійно і не пов'язувати жодні порти.
зимбат

1
@JonasPfenniger Якщо ntpd не працює для вас, спробуйте скористатися chrony (як запропоновано вище). Це може бути налаштовано трохи більше, ніж ntpd, щоб вмістити дивні сценарії, які ми бачимо з віртуальними машинами.
Майкл Хемптон

3
Хоча я згоден з 95% сказаного, я просто хотів зазначити, що клієнт Windows, що використовує NTP, не обмежується однією зміною годин на тиждень. Наступний ключ регулювання дозволяє ефективно визначити інтервал оновлення: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\UpdateIntervalзначення визначається в секундах і зазвичай встановлюється 360000 (100 годин), але ви можете встановити його на 900 для синхронізації кожні 15 хвилин, якщо ваші програми особливо чутливі до часу. Не забудьте після цього перезапустити послугу W32Time.
каяд

3

Я б рекомендував використовувати NTP, оскільки він добре відомий і існує вже давно. Налаштування годинника не є дрібницею. NTP вирішив це питання.

Офіційна лінія VMware є використання одного механізму, з 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.