ปัญหา
ฉันมีปัญหาเดียวกันและฉันไม่พบวิธีแก้ปัญหาที่ดี นี่คือสิ่งที่ฉันพบ:
ปัญหาคือหลังจากที่กลับมาทำงานระบบและฮาร์ดแวร์นาฬิกาเวลาในแขกจะแตกต่างกัน:
root @ guest: ~ # date; hwclock
เสาร์ 11 ตุลาคม 13:09:38 UTC 2014
เสาร์ 11 ตุลาคม 13:10:42 2014 -0.454380 วินาที
บนโฮสต์พวกเขาเห็นด้วย:
root @ four: ~ # date; hwclock
เสาร์ 11 ตุลาคม 13:11:35 UTC 2014
วันเสาร์ที่ 11 13:11:36 2014 -1.000372 วินาที
การแก้ปัญหาคือการทำงานhwclock --hctosys
กับแขกหลังจากที่ได้กลับมาทำงานต่อ อย่างไรก็ตามฉันไม่พบวิธีที่จะทำเช่นนี้กับการเปลี่ยนแปลงในระบบของแขกเท่านั้นเนื่องจากแขกไม่ได้สังเกตว่ามันถูกระงับและทำงานต่อ
ตัวแทนบุคคลทั่วไปของ QEmu
มีความเป็นไปได้ในการใช้งานซอฟต์แวร์ที่เรียกว่าQEmu Guest Agentบนแขกและแจ้งจากโฮสต์เพื่ออัพเดตนาฬิการะบบแขกจากนาฬิกาฮาร์ดแวร์ของแขก อย่างไรก็ตามหน้าระบุว่าตัวแทนผู้เข้าพักทำให้โฮสต์และแขกที่เสี่ยงต่อการถูกโจมตีจากปัญหาอื่น ๆ ที่มีปัญหากับตัวแยกวิเคราะห์ JSON (อย่างน้อยฉันเชื่อว่ารหัสที่ได้รับผลกระทบยังทำงานบนโฮสต์ฉันไม่แน่ใจเกี่ยวกับเรื่องนั้น ) อย่างไรก็ตามนี่คือวิธีการตั้งค่า:
ตั้งค่าช่องสัญญาณอนุกรม virtio สำหรับเอเจนต์ตามที่กล่าวถึงในlibvirt wiki (ดูเอกสารประกอบรูปแบบโดเมน libvirt )
หลังจากช่องซีเรียลพร้อมใช้งานให้ติดตั้งและเริ่มต้น QEmu Guest Agent บนแขก (Debian:. 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
ฉันได้ลองตั้งค่าtickpolicy="catchup"
ในการตั้งค่าตัวจับเวลา libvirtแต่วิธีนี้ไม่ได้แก้ปัญหา
NTP
ทางเลือกอื่นในการใช้เอเจนต์คือใช้ ntp daemon หรือโทร ntpdate เป็นระยะจากงาน cron ฉันจะไม่แนะนำอย่างหลังเนื่องจากอาจทำให้เวลาย้อนกลับไปได้ซึ่งอาจทำให้โปรแกรมสับสน (ตัวอย่างเช่นเซิร์ฟเวอร์ Dovecot IMAP ไม่พยายามจัดการเวลาย้อนหลังและสามารถยกเลิกได้)
ฉันลอง ntp daemons ต่อไปนี้:
openntpd : แก้ไขเวลาช้ามากในอัตราประมาณ 2 วินาทีต่อ 60 นาทีในการทดสอบของฉัน เวลาชดเชยคือ 120 วินาที นอกจากนี้openntpd จะโยนข้อผิดพลาดหากเวลาชดเชยมีขนาดใหญ่เกินไปและในการทดสอบของฉันล้มเหลวในการแก้ไขเวลาในกรณีนั้นอย่างสมบูรณ์ ข้อดีของ openntpd: สามารถเรียกใช้เป็นผู้ใช้ปกติใน chroot
chrony : แก้ไขการชดเชยเวลา 120 วินาทีใน 30 นาทีในการทดสอบของฉัน chrony สามารถกำหนดค่าให้เรียกใช้ในฐานะผู้ใช้ปกติ ไม่มีการสนับสนุน chroot ช่วงเวลาการสำรวจเซิร์ฟเวอร์ NTP สามารถกำหนดค่าสำหรับเซิร์ฟเวอร์ NTP แต่ละเครื่อง
systemd-timesyncd : แก้ไขการชดเชยเวลา 120 วินาทีใน 30 วินาทีในการทดสอบของฉัน ทำงานเป็นผู้ใช้ปกติโดยค่าเริ่มต้น อย่างไรก็ตามช่วงเวลาการโพลของเซิร์ฟเวอร์ NTP เพิ่มขึ้นสูงสุดถึง 2048 วินาทีดังนั้นการหยุดชั่วคราว / การดำเนินการต่อจะไม่ถูกตรวจพบจนกระทั่ง 34 นาทีหลังจากการดำเนินการต่อในกรณีที่เลวร้ายที่สุด ดูเหมือนว่าจะไม่สามารถกำหนดค่าได้ นอกจากนี้ฉันได้สังเกตขั้นตอน timesyncd ย้อนหลังซึ่งทำให้เกิดปัญหาเช่นเดียวกับการเรียก ntpdate ใน cron (ดูด้านบน)
ลำดับที่จะแก้ปัญหา Openntpd ไม่เหมาะสมเนื่องจากอัตราการแก้ไขต่ำเกินไปและดูเหมือนจะไม่สามารถกำหนดค่าได้ systemd-timesyncd ไม่ได้แก้ปัญหาอย่างสมบูรณ์เช่นกันเพราะช่วงเวลาการสำรวจไม่สามารถกำหนดค่าได้
ฉันทดสอบ NTP daemons เวอร์ชัน Debian ต่อไปนี้: openntpd 20080406p-10, chrony 1.30-1 และ systemd 215-5 + b1