Не допускайте, чтобы часы ВМ работали быстрее, чем должны

У меня есть сервер unRAID 6.6.5 с абсолютно правильным временем и несколькими виртуальными машинами Linux, которые раньше тоже были идеально синхронизированы. Я перезагрузил одну из своих виртуальных машин, и вдруг часы идут в два раза быстрее, чем часы. Я легко вижу это, выполнив эти 2 цикла в 2 разных терминалах:

while true; do date; sleep 1; done;
while true; do hwclock --show; sleep 1; done;

Если это имеет значение, аппаратным обеспечением сервера unRAID является Intel Xeon E3-1245 V6 на E3C236D2I с ECC RAM. Кроме того, все мои виртуальные машины в настоящее время работают под CentOS 7. По умолчанию CentOS 7 поставляется с установленным chronyd. Выполнение любой из этих двух команд синхронизирует часы, но, поскольку часы все равно идут в два раза быстрее, они сразу же не синхронизируются после:

hwclock --localtime --hctosys
chronyc makestep

Я также попытался с помощью ntpd. Результат точно такой же, я могу запустить синхронизацию, но часы все равно идут слишком быстро. Кроме того, все мои виртуальные машины настроены одинаково:

[root@vm ~]# cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc acpi_pm
[root@vm ~]# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
tsc

Я также пытался перейти на acpi_pm в прошлом, не видя каких-либо улучшений. Сервер unRAID также работает с TSC:

root@server:~# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
tsc
root@server:~# cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc hpet acpi_pm

Что мне не хватает? Я провел обширные исследования по этому вопросу и пока не нашел ни одного решения для работы.

1 ответ

Пока ваша система работает, аппаратные часы не используются. Системные часы, поддерживаемые ядром, являются единственными, которые имеют значение. В любом случае ядро ​​автоматически синхронизирует аппаратные часы с системным временем каждые 11 минут, но это просто для того, чтобы исключить возможность полного отключения.

Вопросы, которые нужно задать:

  1. Точное ли системное время показывается хостом вашей виртуальной машины? (т.е. date а также chronyc -n tracking показывает правильное время и делает chronyc -n sources показать свою систему достаточно близко к ее источникам?)
  2. Точное ли системное время показывается вашими виртуальными машинами? (Используйте те же чеки, что и выше.)
  3. После перезагрузки, достаточно ли быстро и своевременно возвращаются хост и его виртуальные машины? (Системы могут потерять или выиграть значительное время при перезагрузке из-за разницы аппаратных / системных часов, которую вы видите.)

Если ответы на эти вопросы положительные, значит, ваша система работает правильно. Игнорируйте аппаратные часы, пока ваша система работает.

Другие вопросы по тегам