У меня есть сервер Ubuntu 9.10, работающий как хост KVM с установленным на нем ntpd. Хост-система имеет правильное системное время. На данный момент у меня только один гость KVM, а также сервер Ubuntu 9.10. На нем не установлен ntpd, и я только что обнаружил, что часы отстают примерно на 6 минут. Когда его установили около месяца назад, все было иначе.
Я думал, что мне нужно только синхронизировать часы хоста, и что гости используют часы хоста. Но, возможно, это воспоминание от использования OpenVZ. Я считаю, что причина была связана с тем, что только хост может изменять физические системные часы.
Правильно ли запускать ntpd на хосте и на всех гостях? Или есть что-то еще, что предпочтительнее? Как мне синхронизировать гостевые часы?
Проверьте, какой источник частоты вы используете:
$ cat /sys/devices/system/clocksource/clocksource0/current_clocksource
Проверьте, какие из них доступны:
$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource
Если у вас есть запись "kvm-clock" в "available_clocksource", попробуйте использовать ее, установив параметр ядра:
clocksource=kvm-clock
Довольно хороший документ Вот (в общем) почему так сложно установить правильные часы.
А хрония экземпляр на виртуальную машину с короткими интервалами опроса обновлений от локальных серверов NTP, кажется, единственный жизнеспособный разумный способ пойти.
Хотя chrony может транслировать обновления времени по локальной сети, он не поддерживает прослушивание таких обновлений и нет планов добавить это. Рекомендуется использовать Unicast с таким комментарием: «…
Даже с очень скромным оборудованием NTP-сервер может обслуживать сотни тысяч клиентов в обычном режиме клиент / сервер.
… »
Есть сообщения, что kvm-clock вызывает скачки времени (измеряется в часах) и может даже вызывать зависание системы. Возможно, вам придется отключить его, например:
https://patchwork.kernel.org/patch/104597/ (либо сам патч, либо обертка LD_PRELOAD kvm-noclock).
Я столкнулся с многочисленными проблемами с хронометражем на виртуальных машинах, и на нескольких различных платформах виртуализации у меня также были проблемы с собственными инструментами синхронизации времени между хостами и виртуальными машинами.
Мой совет - иметь авторитетный источник времени, основанный на физическом оборудовании (в данном случае ваш хост-сервер KVM), и синхронизировать ваши виртуальные машины, используя стандартные методы синхронизации времени ОС (в вашем случае, ntpd) обратно к этому сервер. Часто требуется более короткий интервал повторной синхронизации, если гостевые виртуальные машины слишком сильно дрейфуют. Короче говоря, я думаю, что с ntpd вы на правильном пути.
В качестве примера на VMWare мы обнаружили, что синхронизация времени VMWare Tools будет корректировать время только в том случае, если оно смещается назад на виртуальных машинах. Если бы виртуальная машина опередила свой хост, это не исправило бы время.