Sorun
Aynı sorunu yaşadım ve iyi bir çözüm bulamadım. İşte bulduğum:
Sorun, özgeçmişten sonra, konuktaki sistem ve donanım saat sürelerinin farklı olmasıdır.
root @ guest: ~ # tarih; hwclock
Cmt 11 Eki 13:09:38 UTC 2014
Cts 11 Eki 13:10:42 2014 -0.454380 saniye
Ev sahibinde aşağıdakileri kabul ediyorlar:
dördüncü kök: ~ # tarih; hwclock
Cmt 11 Eki 13:11:35 UTC 2014
Cts 11 Eki 13:11:36 2014 -1.000372 saniye
Çözüm, hwclock --hctosys
devam ettirildikten sonra konuk üzerinde çalışmak olacaktır . Ancak, misafirin askıya alındığını ve devam ettirildiğini fark etmediği için bunu yalnızca konuk sistemindeki değişikliklerle yapmanın bir yolunu bulamadım.
QEmu Misafir Acentesi
Konukta QEmu Guest Agent adlı bir yazılımı çalıştırma ve konuk donanım saatinden konuk sistem saatini güncellemek için ana bilgisayardan bildirim alma olasılığı vardır . Ancak, sayfa bir JSON ayrıştırıcısı ile ilgili sorunlar nedeniyle konuk ajan ana bilgisayar ve konuk birbirlerinden saldırılara karşı savunmasız yaptığını belirtmektedir (en azından etkilenen kodun ana bilgisayarda da çalıştığına inanıyorum, bundan emin değilim) ). Her neyse, bunu nasıl ayarlayacağınız aşağıda açıklanmıştır:
Libvirt wiki'de belirtildiği gibi aracı için bir virtio seri kanalı oluşturun (ayrıca bkz. Libvirt alan formatı belgeleri ).
Seri kanal kullanılabilir hale geldikten sonra, konuğa QEmu Konuk Aracısını kurun ve başlatın. (Debian:. apt-get install --no-install-recommends qemu-guest-agent
)
Askıya alarak, bekleyerek ve devam ettirerek saat ofsetini tetikleyin. : Sonra düzeltmek için ana bilgisayarda aşağıdaki komutu çalıştırın virsh qemu-agent-command backup '{"execute":"guest-set-time"}'
kullanarak o wiki sayfasını virsh qemu-agent-command
olan desteksiz ama iş yok başka komutu bulamadım.
Libvirt'te guest-set-time
askıya alma işleminden devam etme çağrısını otomatikleştirme hakkında iki tartışma buldum :
Ancak, görebildiğim kadarıyla hiçbir şey uygulanmadı.
Stoney-cloud.org'un wiki'sinde konuk aracıya komutların nasıl gönderileceği hakkında bilgi buldum .
Ayrıca ayarı denedim tickpolicy="catchup"
içinde libvirt zamanlayıcı yapılandırması ama bu sorunu çözmedi.
NTP
Aracıyı kullanmanın bir alternatifi, bir ntp arka plan programı kullanmak veya ntpdate'i periyodik olarak bir cron işinden çağırmak olacaktır. İkincisini tavsiye etmem, çünkü zamanın geriye gitmesine neden olabilir, bu da programları karıştırabilir (örneğin, Dovecot IMAP sunucusu geriye doğru gitmeye çalışmaz ve sonlanabilir).
Aşağıdaki ntp artalanlarını denedim:
openntpd : Testimdeki zamanı 60 dakikada yaklaşık 2 saniyede çok yavaş düzeltir. Zaman farkı 120 saniyeydi. Ayrıca, zaman ofseti çok büyükse ve testimde bu durumda zamanı düzeltmek için başarısız olursa , openntpd bir hata atar . Openntpd'nin avantajları: Krootta normal kullanıcı olarak çalışabilir.
chrony : Testimde 30 dakikada 120 saniyelik bir zaman farkını düzeltir. chrony normal kullanıcı olarak çalışacak şekilde yapılandırılabilir. chroot desteği uygulanmadı. NTP sunucusu yoklama aralığı her NTP sunucusu için yapılandırılabilir.
systemd-timesyncd : Testimde 30 saniyede 120 saniyelik bir zaman ofsetini düzeltir. Varsayılan olarak normal kullanıcı olarak çalışır. Ancak, NTP sunucularının yoklama aralığı 2048 saniyeye kadar artar, böylece en kötü durumda devam ettirildikten sonra 34 dakikaya kadar bir askıya alma / devam etme algılanmaz. Bu yapılandırılabilir gibi görünmüyor. Ayrıca, timeyncd adımı geriye doğru geriye doğru izledim, bu da bir cronda ntpdate çağırma ile aynı sorunlara neden oluyor (yukarıya bakınız).
chrony problemi çözer. Openntpd uygun değil çünkü düzeltme oranı çok düşük ve yapılandırılabilir görünmüyor. yoklama aralığı yapılandırılamadığından, systemd-timesyncd de sorunu tamamen çözmez.
NTP cinlerinin Debian'ın şu versiyonlarını test ettim: openntpd 20080406p-10, kronik 1.30-1 ve systemd 215-5 + b1.