추가 읽기

추가 읽기

매월 반복되는 작업의 실행을 테스트하기 위해 Ubuntu 18.04(systemd 237)에서 가짜 시간을 설정하려고 합니다.

가상 머신(게스트 추가 기능이 있는 Virtualbox)에서 실행됩니다.

ntp 동기화가 비활성화된 경우에도 시간은 몇 초 후에 올바른 시간으로 다시 재설정됩니다.

예.

# Disable the sync
timedatectl set-ntp 0
# There aren't any ntp daemons running
systemctl -a | grep ntp    # Returns nothing

# This confirms there is no sync active
timedatectl status         
#                       Local time: Mo 2019-03-11 15:22:13 CET
#                   Universal time: Mo 2019-03-11 14:22:13 UTC
#                         RTC time: Mo 2019-03-11 14:22:13    
#                        Time zone: Europe/Berlin (CET, +0100)
#        System clock synchronized: no                        
# systemd-timesyncd.service active: no                        
#                  RTC in local TZ: no           

# Setting up the fake time       
timedatectl set-time '2015-11-20 16:14:50'

# It worked! Wuhuu!
timedatectl status         
#                       Local time: Fr 2015-11-20 16:14:51 CET
#                   Universal time: Fr 2015-11-20 15:14:51 UTC
#                         RTC time: Fr 2015-11-20 15:14:51    
#                        Time zone: Europe/Berlin (CET, +0100)
#        System clock synchronized: no                        
# systemd-timesyncd.service active: no                        
#                  RTC in local TZ: no

# 5 sec later
timedatectl status         
#                       Local time: Mo 2019-03-11 15:25:35 CET
#                   Universal time: Mo 2019-03-11 14:25:35 UTC
#                         RTC time: Fr 2015-11-20 15:14:51    
#                        Time zone: Europe/Berlin (CET, +0100)
#        System clock synchronized: no                        
# systemd-timesyncd.service active: no                        
#                  RTC in local TZ: no

동기화 서비스가 없다면 어떻게 동기화를 유지하나요?

답변1

동기화 서비스가 없으면 […]

하지만 있습니다. 게스트 운영 체제에서 실행되는 VirtualBox 서비스에 내장되어 있습니다.

불행하게도 게스트 운영 체제의 서비스는 VBoxService한 번에 많은 작업을 수행하며 서비스를 중지하면 수행했던 모든 작업이 완전히 취소됩니다. 기본 서비스 관리 도구를 통한 제어가 없기 때문에 사용 가능한 유일한 세부 제어는 Oracle의 도구입니다.

VBoxManage가 추가 데이터를 설정합니다."가상 머신 이름""VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1

동기화 서비스 스레드 자체는 비활성화되지 않습니다. 이로 인해 이 스레드에 의해 호출된 감독자 호출이 실패를 반환하게 됩니다. 동기화 서비스 스레드가 계속 실행됩니다. 호스트 시간을 반복적으로 가져오는 데 실패합니다.

추가 읽기

답변2

이는 가상 머신을 호스트 시스템과 동기화하는 서비스로 인해 발생한 것으로 보입니다. 제 경우에는(Virtualbox) 서비스를 비활성화하면 문제가 해결되었습니다.

systemctl stop vboxadd-service.service

더 복잡한 솔루션은 다른 답변/설명에 지정되어 있지만 호스트 측에서 단계가 필요합니다. 제 경우에는 이 모의과 관련된 모든 테스트를 게스트에서 실행해야 한다는 점을 고려하면 기록하는 것이 더 간단했습니다.

관련 정보