Как предотвратить временный дрейф в гостевой системе Debian на хосте CentOS KVM?

Я знаю, что могу установить ntp в гостевой, но мое запутанное понимание того, что я догадался до сих пор, предполагает, что это не обязательно.

Хост – CentOS 6.3, а гость – Debian Wheezy, который, как представляется, использует kvmчасы в качестве источника времени:

 # cat /sys/devices/system/clocksource/clocksource0/current_clocksource kvm-clock 

Есть ли что-то особенное, что мне нужно сделать, чтобы заставить гостя использовать часы хоста?

У гостя нет прямого доступа к часам хоста. Вместо этого он использует kvm-часы, которые указывают на область памяти, обновленную хостом, от часов хоста. Таким образом, гость использует часы хоста. Проблема в том, что эта область памяти не обновляется постоянно, она обновляется только тогда, когда есть событие «виртуальной машины», и, таким образом, гости могут дрейфовать, а затем возвращаться к правильному времени.

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

Некоторые источники,

Как уже упоминалось, хост записывает время на страницу памяти, которую гость может прочитать. Обычно это означает, что аппаратные часы vm соответствуют хостам, запрещая любые ошибки, когда хост не пишет эту страницу в таких критических событиях, как масштабирование скорости процессора. Обычно проблема заключается в том, что ОС не признает, что аппаратные часы меняются / корректируются. Регулярный «hwclock -hctosys» обновит ОС на текущий аппаратный такт, и (по-моему) чище, чем запуск демона NTP.

Вы можете увидеть это в действии, запустив что-то подобное в вашем гостевом устройстве kvm-clock:

 date && hwclock --hctosys && date Sun Jan 5 23:40:44 MST 2014 Sun Jan 5 23:40:06 MST 2014 

Помимо того, что уже было сказано о kvm-часах, вы можете попробовать стандартные лучшие практики – уйти от тикающих ядер, понизить передачу ядра до 10 или около того, включить ntpclient , убедиться, что хост не перегружен – часто происходит дрейф времени во время чрезмерного перегрузки процессора. Если виртуальная машина имеет множество виртуальных центральных процессоров, возьмите это число на несколько нот