Назад | Перейти на главную страницу

Лучшая практика для синхронизации системных часов на хосте KVM

У меня есть сервер 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 будет корректировать время только в том случае, если оно смещается назад на виртуальных машинах. Если бы виртуальная машина опередила свой хост, это не исправило бы время.