Назад | Перейти на главную страницу

Как предотвратить относительный сдвиг во времени после восстановления снимка в Parallels?

Я работаю с веб-приложением в системе тестирования / разработки Ubuntu, работающей в Parallels. В определенные даты и время (взятые из системного времени) происходят некоторые события и что-то изменяется в базе данных. (например, учетная запись пользователя заблокирована, если пароль не менялся в течение определенного времени, или статус объекта был изменен, если срок истек и т. д.)

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

Моя проблема в том, что после восстановления снимка системная дата такая, как я хочу (а именно, равна дате и времени, когда был сделан снимок).

Но через несколько секунд или минут системное время изменяется на некоторый момент времени между реальным временем и ожидаемым (моментальным снимком) временем. У меня такое впечатление, что это время, которое прошло относительно. Например, если я сделал снимок 01.02.2018 (в реальном времени) с системной датой гостя Ubuntu 01.01.2018 (время гостя), и я восстановлю снимок 01.03.2018 (в реальном времени) , то через несколько минут для гостя Ubuntu будет установлено значение 2018-02-01 (время гостя).

Что я сделал до сих пор:

Проблема, похоже, связана с 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, Мне удалось решить эту проблему.

  1. Выключите виртуальную машину
  2. Найдите пакет виртуальной машины> щелкните правой кнопкой мыши> Показать содержимое пакета> открыть config.pvs файл в текстовом редакторе
  3. Найдите ключ TimeSync и отредактируйте его следующим образом:

<TimeSync SyncInterval_patch="1" dyn_lists="">
<Enabled>0</Enabled>
<SyncInterval>60</SyncInterval>
<KeepTimeDiff>0</KeepTimeDiff>
<SyncHostToGuest>0</SyncHostToGuest>
<SyncTimezoneDisabled>1</SyncTimezoneDisabled>
</TimeSync>

  1. Сохраните изменения и закройте файл.
  2. Снова запустите виртуальную машину. Все последующие снимки больше не будут иметь проблемы с синхронизацией времени.

Если вам нужно заставить его работать с существующим моментальным снимком, найдите папку Snapshots в пакете виртуальной машины (где config.pvs файл был найден). Там вы можете найти файлы снимков. Чтобы найти правильный снимок, вы можете использовать дату создания и снимки экрана в файлах PNG в качестве подсказки. В {id}.pvc файл содержит копию конкретного снимка config.pvs файл. Выполните ту же настройку, что и в шаге 3. выше.

Теперь временной сдвиг должен быть отключен и для этого снимка.

Спасибо Дмитрию из службы поддержки Parallels за ответ на форуме поддержки Parallels.