Я работаю с веб-приложением в системе тестирования / разработки Ubuntu, работающей в Parallels. В определенные даты и время (взятые из системного времени) происходят некоторые события и что-то изменяется в базе данных. (например, учетная запись пользователя заблокирована, если пароль не менялся в течение определенного времени, или статус объекта был изменен, если срок истек и т. д.)
Чтобы иметь возможность тестировать определенные сценарии, я работаю со снимками состояния в Parallels, чтобы сохранить состояние системы в несколько ключевых моментов времени. Может случиться так, что по прошествии нескольких месяцев мне нужно будет вернуться к определенному моменту времени, чтобы протестировать конкретный сценарий того состояния.
Моя проблема в том, что после восстановления снимка системная дата такая, как я хочу (а именно, равна дате и времени, когда был сделан снимок).
Но через несколько секунд или минут системное время изменяется на некоторый момент времени между реальным временем и ожидаемым (моментальным снимком) временем. У меня такое впечатление, что это время, которое прошло относительно. Например, если я сделал снимок 01.02.2018 (в реальном времени) с системной датой гостя Ubuntu 01.01.2018 (время гостя), и я восстановлю снимок 01.03.2018 (в реальном времени) , то через несколько минут для гостя Ubuntu будет установлено значение 2018-02-01 (время гостя).
Что я сделал до сих пор:
ntp
и ntpdate
Automatic Date&Time
и Automatic Timezone
в настройках рабочего стола UbuntuПроблема, похоже, связана с hwclock
. В качестве примера я восстановил снимок от 25 января 2018 г. (время гостя) вчера, 25 мая 2018 г. (в реальном времени). Я выполнил (сразу после восстановления снимка):
date ; \
hwclock --show ; \
date -s 2018-01-26 ; \
hwclock --systohc ; \
hwclock --set --date 2018-01-26 ; \
hwclock --show ;
Это приводит к следующему выводу:
Thu Jan 25 18:17:49 CET 2018
2018-03-09 01:01:27.249216+0100
Fri Jan 26 00:00:00 CET 2018
2018-03-09 01:01:27.775701+0100
Если я подожду какое-то время, системное время в конечном итоге изменится на время hwclock - я не выяснил почему. Я тоже не понимаю, почему попытки установить hwclock
time не работает (ошибка не отображается, но новое время игнорируется ...)
Наконец, я также проверил syslog
но намека на измененную дату нет. Он просто печатает запись для старой даты, а следующая запись - с новой датой, без указания причины изменения даты.
Что я пропустил?
P.S.
Это результат systemctl | grep time
rtkit-daemon.service loaded active running RealtimeKit Scheduling Policy Service
systemd-timedated.service loaded active running Time & Date Service
timers.target loaded active active Timers
anacron.timer loaded active running Trigger anacron every hour
apt-daily-upgrade.timer loaded active waiting Daily apt upgrade and clean activities
apt-daily.timer loaded active waiting Daily apt download activities
motd-news.timer loaded active elapsed Message of the Day
snapd.refresh.timer loaded active waiting Timer to automatically refresh installed snaps
systemd-tmpfiles-clean.timer loaded active waiting Daily Cleanup of Temporary Directories
Благодаря Форум пользователей Parallels, Мне удалось решить эту проблему.
config.pvs
файл в текстовом редакторе<TimeSync SyncInterval_patch="1" dyn_lists="">
<Enabled>0</Enabled>
<SyncInterval>60</SyncInterval>
<KeepTimeDiff>0</KeepTimeDiff>
<SyncHostToGuest>0</SyncHostToGuest>
<SyncTimezoneDisabled>1</SyncTimezoneDisabled>
</TimeSync>
Если вам нужно заставить его работать с существующим моментальным снимком, найдите папку Snapshots в пакете виртуальной машины (где config.pvs
файл был найден). Там вы можете найти файлы снимков. Чтобы найти правильный снимок, вы можете использовать дату создания и снимки экрана в файлах PNG в качестве подсказки. В {id}.pvc
файл содержит копию конкретного снимка config.pvs
файл. Выполните ту же настройку, что и в шаге 3. выше.
Теперь временной сдвиг должен быть отключен и для этого снимка.
Спасибо Дмитрию из службы поддержки Parallels за ответ на форуме поддержки Parallels.