Я установил сервер Ubuntu 12.04 в качестве узла KVM и создал гостевую систему Ubuntu, на которой также запущен сервер Ubuntu 12.04. Серверы находятся в часовом поясе AST, который составляет UTC + 3 часа. После правильной установки времени в гостях, использующих date -s
Я могу перезагружать гостей сколько угодно, сохраняя правильное время между перезагрузками.
Если, однако, хост KVM перезагружается (у хоста нет проблем со временем между перезагрузками), то, как только я запускаю своих гостей KVM, все они отстают ровно на 3 часа от правильного времени. Приведенные ниже выходные данные показывают системное время и время аппаратных часов на хосте и гостевой системе.
root@kvmhost1:~# date
Wed Jan 16 14:10:38 AST 2013
root@kvmhost1:~# hwclock
Wed 16 Jan 2013 02:10:40 PM AST -0.187899 seconds
root@kvmguest1:~# date
Wed Jan 16 11:10:45 AST 2013
root@kvmguest1:~# hwclock
Wed 16 Jan 2013 02:10:47 PM AST -0.521226 seconds
После корректировки времени для гостей их можно будет перезагрузить без неправильного переключения времени.
Вещи, которые я пробовал / тестировал
dmesg | grep kvm-clock
на госте, и он подтвердил, что часы kvm используются.Обновить
Я установил аппаратные часы на местное время, используя --localtime
вариант на hwclock
команда. Та же проблема все еще сохраняется. Вывод немного яснее, потому что программные и аппаратные часы установлены на одно и то же время.
root@kvmhost1:~# date
Wed Jan 16 15:50:26 AST 2013
root@kvmhost1:~# hwclock
Wed 16 Jan 2013 03:50:29 PM AST -0.750378 seconds
root@kvmguest1:~# date
Wed Jan 16 12:50:29 AST 2013
root@kvmguest1:~# hwclock
Wed 16 Jan 2013 12:50:31 PM AST -0.849677 seconds
Решение
Ответ Майкла Хэмптона ниже решил проблему. Гость был создан с помощью файла кикстарта, который по умолчанию не устанавливает аппаратные часы на время UTC. Я добавил параметр --utc в параметр часового пояса кикстарта, и он решил эту проблему. Вариант кикстарта теперь выглядит следующим образом:
timezone --utc Asia/Bahrain
Похоже, вы каким-то образом установили гостя таким образом, что он считает, что аппаратные часы показывают местное время. Гости KVM всегда должны учитывать свои аппаратные часы по времени UTC, если они не являются гостями Windows (но даже они могут быть настроены на аппаратные часы UTC) ...
Отредактируйте /etc/default/rcS
файл и изменить UTC=no
к UTC=yes
. Затем сбросьте гостевые часы.