문제
나는 같은 문제를 겪었고 좋은 해결책을 찾지 못했습니다. 내가 찾은 것은 다음과 같습니다.
문제는 다시 시작한 후 게스트의 시스템 및 하드웨어 시계 시간이 다르다는 것입니다.
root @ guest : ~ # 날짜; hwclock
토 10 월 11 일 13:09:38 UTC 2014
토 10 월 11 일 13:10:42 2014 -0.454380 초
호스트에서 그들은 다음에 동의합니다.
root @ four : ~ # 날짜; hwclock
토 10 월 11 일 13:11:35 UTC 2014
토 10 월 11 일 13:11:36 2014 -1.000372 초
해결책은 hwclock --hctosys
게스트가 재개 된 후에 게스트 에서 실행 하는 것 입니다. 그러나 게스트가 시스템을 일시 중지했다가 다시 시작한다는 사실을 알지 못하므로 게스트 시스템에서만 변경하는 방법을 찾지 못했습니다.
QEmu 게스트 에이전트
게스트 에서 QEmu Guest Agent 라는 소프트웨어를 실행 하고 게스트 하드웨어 시계에서 게스트 시스템 시계를 업데이트하도록 호스트에게 알릴 수 있습니다. 그러나이 페이지는 게스트 에이전트가 JSON 파서 문제로 인해 호스트와 게스트 가 서로의 공격에 취약 하다고 언급합니다 (적어도 영향을받는 코드가 호스트에서 실행된다고 생각합니다. ). 어쨌든, 설정 방법은 다음과 같습니다.
libvirt 위키에 언급 된대로 에이전트의 virtio 직렬 채널을 설정 하십시오 ( libvirt 도메인 형식 문서 참조 ).
직렬 채널을 사용할 수있게되면 게스트에서 QEmu Guest Agent를 설치하고 시작하십시오. (데비안 : apt-get install --no-install-recommends qemu-guest-agent
.)
일시 중단, 대기 및 재개하여 클럭 오프셋을 트리거합니다. 그런 다음 호스트에서 다음 명령을 실행하여 수정하십시오. virsh qemu-agent-command backup '{"execute":"guest-set-time"}'
사용중인 위키 페이지 virsh qemu-agent-command
가 지원되지 않지만 작업을 수행하는 다른 명령을 찾지 못했습니다.
libvirt 내 guest-set-time
에서 일시 중단에서 다시 시작할 때 호출하는 자동화에 대한 두 가지 토론이 있습니다 .
그러나 내가 볼 수있는 한 아직 구현되지 않았습니다.
stoney-cloud.org의 위키 에서 게스트 에이전트에 명령을 제출하는 방법에 대한 정보를 찾았 습니다 .
libvirt 타이머 구성tickpolicy="catchup"
에서 설정 을 시도했지만 문제가 해결되지 않았습니다.
NTP
에이전트 사용의 대안은 ntp 데몬을 사용하거나 cron 작업에서 주기적으로 ntpdate를 호출하는 것입니다. 후자는 시간이 뒤로 이동하여 프로그램을 혼란스럽게 할 수 있으므로 후자를 권장하지 않습니다 (예 : Dovecot IMAP 서버는 뒤로 이동하는 시간을 처리하려고 시도하지 않고 종료 할 수 있음).
다음 ntp 데몬을 시도했습니다.
openntpd : 테스트에서 60 분마다 약 2 초의 속도로 시간을 매우 느리게 수정합니다. 시간 오프셋은 120 초입니다. 또한 시간 오프셋이 너무 커서 내 테스트에서 해당 시간의 시간을 완전히 수정하지 못하면 openntpd에서 오류가 발생합니다 . openntpd의 장점 : chroot에서 일반 사용자로 실행할 수 있습니다.
chrony : 테스트에서 30 분 동안 120 초의 시간 오프셋을 수정합니다. chrony는 일반 사용자로 실행되도록 구성 할 수 있습니다. chroot 지원이 구현되지 않았습니다. NTP 서버 폴링 간격은 각 NTP 서버마다 구성 할 수 있습니다.
systemd-timesyncd : 테스트에서 30 초 동안 120 초의 시간 오프셋을 수정합니다. 기본적으로 일반 사용자로 실행합니다. 그러나 NTP 서버의 폴링 간격은 최대 2048 초까지 증가하므로 최악의 경우 재개 후 34 분까지 일시 중지 / 재개가 감지되지 않습니다. 구성 할 수없는 것 같습니다. 또한 timesyncd 단계가 시간을 거꾸로 보았으므로 cron에서 ntpdate를 호출하는 것과 동일한 문제가 발생합니다 (위 참조).
chrony는 문제를 해결합니다. Openntpd는 보정 속도가 너무 낮아 구성 할 수없는 것 같아서 적합하지 않습니다. 폴링 간격을 구성 할 수 없기 때문에 systemd-timesyncd도 문제를 완전히 해결하지는 않습니다.
NTP 데몬의 데비안 버전 openntpd 20080406p-10, chrony 1.30-1 및 systemd 215-5 + b1을 테스트했습니다.