У меня есть сервер unRAID 6.6.5 с совершенно правильным временем и несколькими виртуальными машинами Linux, которые также идеально синхронизировались. Я перезагрузил одну из своих виртуальных машин, и внезапно часы идут вдвое быстрее, чем hwclock. Я легко могу это увидеть, выполнив эти 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. Кроме того, все мои виртуальные машины в настоящее время работают под управлением 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
Что мне не хватает? Я провел обширное исследование по этому поводу и пока не нашел ни одного работающего решения.
Пока ваша система работает, аппаратные часы не используются. Системные часы, поддерживаемые ядром, - единственное, что имеет значение. Ядро в любом случае будет автоматически синхронизировать аппаратные часы с системным временем каждые 11 минут, но это только для того, чтобы избежать полного завершения работы.
Вопросы, которые следует задать:
date
и chronyc -n tracking
показывает правильное время и делает chronyc -n sources
показать, что ваша система достаточно близко к своим источникам?)Если ответы на эти вопросы положительные, значит, ваша система поступает правильно. Игнорируйте аппаратные часы, пока ваша система работает.