ฉันจำเป็นต้องเรียกใช้เซิร์ฟเวอร์ NTP ใน VM ทุกเครื่องหรือไม่


18

แขกไม่สามารถสืบทอดเวลาระบบของโฮสต์ได้หรือ

ดูเหมือนว่าไม่มีประโยชน์ที่จะเรียกใช้ daemon เดียวกันเพื่อให้ได้ผลลัพธ์เดียวกันในเครื่องเดียวกันหลายครั้ง แต่ฉันไม่พบสิ่งใดที่เกี่ยวข้องกับเวลาเมื่ออ่านบทความ KVM หรือ Xen ความเข้าใจของฉันคือแขกรับเวลาโฮสต์ในการบูต แต่ก็อาจแยกจากกัน ถูกต้องหรือไม่



1
ฉันคิดว่าคุณหมายถึงลูกค้า NTP หรือไม่
Michael Hampton

1
@MichaelHampton: ใช่ความแตกต่างระหว่างไคลเอนต์ NTP และเซิร์ฟเวอร์ไม่เคยชัดเจนสำหรับฉันเนื่องจากแพ็คเกจ nTP ให้ทั้งสองเสมอ
ซิมบับเว

2
ที่เกี่ยวข้องกับคำถามนี้: ใน Debian และอนุพันธ์openntpแพ็คเกจมีน้ำหนักเบากว่าntpแพ็คเกจมาก มันไม่ได้ผูกตามค่าเริ่มต้นและทำหน้าที่เป็นลูกค้าซึ่งเป็นสิ่งที่เราต้องการตรงนี้
ซิมบับเว

คำตอบ:


13

สิ่งนี้ถูกต้อง ควรสังเกตว่าเวลาไม่เพียง "สามารถ" ออกไป แต่จะลอยไปเนื่องจากความจริงที่ว่าช่วงเวลาระหว่างการขัดจังหวะตัวจับเวลา (ซึ่งการจับเวลาบน OS มักจะขึ้นอยู่กับ) ถูกยืดออกและบีบอัดตามที่ hypervisor จะพอดี

วิธีแก้ปัญหาที่ใช้กันทั่วไปในแพลตฟอร์มเวอร์ช่วลไลเซชั่นส่วนใหญ่ (บริการการรวม Hyper-V, เครื่องมือ VMWare) กำลังเรียกใช้ daemon บนผู้เยี่ยมชมซึ่งจะซิงโครไนซ์นาฬิกากับโฮสต์ VM เป็นระยะ ตามที่ระบุไว้โดย Hauke ​​ในความคิดเห็นคำถามของคุณ KVM ยังมีนาฬิกา paravirtualized ซึ่งจะต้องใช้ไดรเวอร์ที่เกี่ยวข้องบนระบบปฏิบัติการ guest เพื่อให้ทำงานได้

อ่านเพิ่มเติม:

การบอกเวลาใน VMWare Virtual Machines (vmware.com) การ
ซิงโครไนซ์นาฬิกาแขกของ KVM (s19n.net)


ขอบคุณมาก. สำหรับผู้ที่อยู่ใน EC2 ดูเหมือนว่า Xen จะให้แหล่งสัญญาณนาฬิกา: cat /sys/devices/system/clocksource/clocksource0/current_clocksource=> xen
zimbatm

ยังคงแนะนำให้ใช้ chronyd แม้ว่าจะใช้นาฬิกา kvm กับโฮสต์เป็นเซิร์ฟเวอร์และ VM เป็นไคลเอนต์
akostadinov

21

ในโลกที่สมบูรณ์แบบแขก VM ของคุณจะให้เวลาที่สมบูรณ์แบบหรืออย่างน้อยก็สมบูรณ์แบบตามที่โฮสต์ให้ น่าเสียดายที่เราไม่ได้อยู่ในโลกที่สมบูรณ์แบบ

จากประสบการณ์ของฉันที่มีคนรู้จัก hypervisor ทุกคนฉันมักจะเรียกใช้ไคลเอนต์ NTP ในเครื่องเสมือนโดยไม่มีข้อยกเว้น การตั้งค่าปกติของฉันคือ ntpd ด้วยตัวเลือก -g หรือ ntpdate เริ่มต้นก่อนที่มันจะเป็นระบบเก่าไปยังขั้นตอนที่นาฬิกา

KVM มีเกือบการติดตั้งที่สมบูรณ์แบบกับนาฬิกาเรียลไทม์ paravirtualized ; แขกที่มีไดร์เวอร์ที่เหมาะสม (อย่างน้อยลีนุกซ์ล่าสุดอย่างน้อย) จะคอยดูแลตลอดเวลาและโฮสต์ แต่ยังมีสิ่งผิดปกติเกิดขึ้นที่นี่: ตัวอย่างเช่นโฮสต์อาจไม่ได้ใช้ NTP โฮสต์อาจตั้งค่าเขตเวลาไม่ถูกต้องนาฬิกาของโฮสต์อาจผิดปกติ ฯลฯ

VMware และ Hyper-V อยู่ตรงกลาง แต่ละคนมีเครื่องมือที่จะทำงานบนแขกที่ซิงค์นาฬิกากับโฮสต์เป็นระยะ แต่ก็มีความเสี่ยงที่จะเกิดปัญหาใด ๆ กับนาฬิกาโฮสต์

ผู้เข้าพักในการทดสอบ Hyper-V เซิร์ฟเวอร์ของฉันยังแสดงพฤติกรรมบางอย่างแปลก: แม้จะมีการบริการรวมนาฬิกาของผู้เข้าพักจะดริฟท์ได้เร็วกว่า 500 ppm การป้องกัน ntpd จากการทำงาน ( มันคิดว่าบ้านาฬิกาถ้ามันลอยได้เร็วขึ้นกว่านี้ ) ผมต้องเปลี่ยนผู้เข้าพักเหล่านี้เพื่อchronyซึ่งจะช่วยให้ค่านี้มีการปรับเปลี่ยน

เซนเป็นสิ่งที่เลวร้ายที่สุดในแง่นี้ มันไม่มีการซิงโครไนซ์และเรียกใช้ NTP ในแขกเป็นสิ่งที่จำเป็นมาก (มีคนบอกฉันว่า Xen รุ่นล่าสุดมีการซิงโครไนซ์บางอย่าง แต่ยังไม่ได้ใช้งานได้เป็นการส่วนตัว)

สิ่งที่แย่ลงถ้าโฮสต์ไฮเปอร์ไวเซอร์ไม่ได้อยู่ภายใต้การควบคุมของคุณเช่นคลาวด์สาธารณะ คุณอยู่ในความเมตตาของผู้ให้บริการที่เกี่ยวกับนาฬิกาโฮสต์และหากพวกเขาไม่ขยันในการทำข้อมูลให้ตรงกันคุณจะสูญเสีย

ด้วยเหตุนี้การใช้งาน NTP ไคลเอนต์ในเครื่องเสมือนของคุณจึงเป็นสิ่งจำเป็นหากคุณต้องการนาฬิกาแบบกึ่งเที่ยงตรง หมายเหตุ: ถ้าคุณเรียกใช้เครื่องเสมือน Windows รับไคลเอนต์ NTP บุคคลที่สามที่ปรับนาฬิกาอย่างต่อเนื่อง ข้อแก้ตัวที่แย่สำหรับลูกค้าที่มาพร้อมกับ Windows จะปรับนาฬิกาเพียงสัปดาห์ละครั้งเท่านั้นซึ่งไร้สาระอย่างที่สุด


ทำงานntpdateใน cron รายวันเพียงพอหรือไม่หรือจะต้องเป็น ntp daemon?
AngerClown

4
คุณต้องการบางสิ่งบางอย่างในการซิงค์นาฬิกาอย่างต่อเนื่องเนื่องจากอาจไปไกลเกินพอในหนึ่งวันเพื่อทำให้เกิดปัญหา และบางโปรแกรมไม่ชอบที่จะเหยียบนาฬิกา
Michael Hampton

ปัญหาของ ntp daemon คือจุดประสงค์หลักคือเพื่อให้เวลาแก่ผู้อื่นและจะหยุดทำงานหากเวลาแยกกันมากเกินไป ฉันหวังว่าจะมีบางสิ่งเพิ่มเติมเช่น ntpdate ที่จะทำงานอย่างต่อเนื่องและไม่ผูกพอร์ตใด ๆ
ซิมบับเว

1
@JonasPfenniger หาก ntpd ไม่ได้ผลสำหรับคุณลองใช้ chrony แทน (ตามที่แนะนำข้างต้น) สามารถปรับได้มากกว่า ntpd เล็กน้อยเพื่อรองรับสถานการณ์แปลก ๆ ที่เราเห็นด้วยเครื่องเสมือน
Michael Hampton

3
ในขณะที่ฉันเห็นด้วย 95% ของสิ่งที่คุณพูดฉันแค่อยากจะชี้ให้เห็นว่าไคลเอนต์ Windows ที่ใช้ NTP ไม่ได้ จำกัด อยู่ที่การเปลี่ยนนาฬิกาหนึ่งครั้งต่อสัปดาห์ คีย์ reg ต่อไปนี้อนุญาตให้คุณกำหนดช่วงเวลาการปรับปรุงอย่างมีประสิทธิภาพ: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\UpdateIntervalค่าถูกกำหนดเป็นวินาทีและโดยปกติแล้วจะตั้งค่าเป็น 360000 (100 ชั่วโมง) แต่คุณสามารถตั้งค่าเป็น 900 เพื่อซิงค์ทุก 15 นาทีหากแอปพลิเคชันของคุณ อย่าลืมรีสตาร์ทบริการ W32Time ในภายหลัง
kayjay

3

ฉันอยากจะแนะนำให้ใช้ NTP เพราะเป็นที่รู้จักกันดีและใช้เวลานานมาก การปรับนาฬิกานั้นไม่สำคัญ NTP ได้แก้ไขปัญหานี้แล้ว

สายอย่างเป็นทางการของ VMware คือการใช้กลไกหนึ่งที่มี NTP แนะนำเพราะมันเป็นเม็ดเล็กและทำตามขั้นตอนขนาดเล็กที่จะปรับเวลา โซลูชัน VMware ภายในทำตามขั้นตอนที่ใหญ่กว่า เมื่อคุณวิ่งทั้งคู่พวกเขาสามารถต่อสู้ซึ่งกันและกัน ด้วยโซลูชัน VMware ภายในที่ดำเนินการเป็นขั้นตอนใหญ่จากนั้น NTP จะปรับและนำกลับมาใช้อีกเล็กน้อย

ในทางปฏิบัติเราวิ่งทั้งสองอย่างพร้อมกันและฉันยังไม่เห็นปัญหา

$ ntpq   
ntpq> peers
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
something.org  172.2.1.5          2 u   57   64  377    1.597   -2.409   5.952


$  vmware-toolbox-cmd  timesync status
Enabled


$ vmware-toolbox-cmd help timesync
timesync: functions for controlling time synchronization on the guest OS
Usage: vmware-toolbox-cmd timesync <subcommand>

Subcommands:
  enable: enable time synchronization
  disable: disable time synchronization
  status: print the time synchronization status
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.