เซิร์ฟเวอร์ NTP จัดการอย่างแม่นยำอย่างไร
พวกเราหลายคนมีปัญหากับคอมพิวเตอร์และอุปกรณ์อื่น ๆ ที่มีการตั้งค่าเวลาที่แม่นยำเป็นครั้งคราว แต่การซิงค์อย่างรวดเร็วกับเซิร์ฟเวอร์ NTP ทำให้ทุกอย่างดีขึ้นอีกครั้ง แต่ถ้าอุปกรณ์ของเราสูญเสียความถูกต้องเซิร์ฟเวอร์ NTP จะจัดการเพื่อให้แม่นยำอย่างไร?
เซสชั่นคำถามและคำตอบในวันนี้มาถึงเราด้วยความอนุเคราะห์จาก SuperUser - แผนกย่อยของ Exchange Exchange ซึ่งเป็นกลุ่มที่ขับเคลื่อนด้วยชุมชนของเว็บไซต์ถาม - ตอบ.
ภาพถ่ายมารยาทของ LEOL30 (Flickr).
คำถาม
ผู้อ่าน SuperUser Frank Thornton ต้องการทราบว่าเซิร์ฟเวอร์ NTP สามารถรักษาความถูกต้องได้อย่างไร:
ฉันสังเกตเห็นว่าบนเซิร์ฟเวอร์ของฉันและเครื่องอื่น ๆ นาฬิกาจะลอยอยู่เสมอเพื่อให้พวกเขาต้องซิงค์เพื่อให้แม่นยำ นาฬิกาเซิร์ฟเวอร์ NTP จะเก็บการดริฟท์อย่างไรและยังคงความถูกต้องอยู่เสมอ?
เซิร์ฟเวอร์ NTP จะจัดการอย่างไรเพื่อให้แม่นยำ?
คำตอบ
ผู้สนับสนุน SuperUser Michael Kjorling มีคำตอบสำหรับเรา:
เซิร์ฟเวอร์ NTP พึ่งพานาฬิกาที่มีความแม่นยำสูงสำหรับการจับเวลาที่แม่นยำ แหล่งเวลาทั่วไปสำหรับเซิร์ฟเวอร์ NTP ส่วนกลางคือนาฬิกาอะตอมหรือตัวรับสัญญาณ GPS (โปรดจำไว้ว่าดาวเทียม GPS มีนาฬิกาอะตอมมิกออนบอร์ดอยู่) นาฬิกาเหล่านี้มีความแม่นยำเนื่องจากให้การอ้างอิงเวลาที่แม่นยำสูง.
ไม่มีอะไรน่าอัศจรรย์เกี่ยวกับ GPS หรือนาฬิกาอะตอมที่ทำให้พวกเขาบอกคุณได้ว่าเวลาเท่าไหร่ เนื่องจากนาฬิกาอะตอมทำงานอย่างไรพวกเขาจึงเก่งมากเมื่อได้รับการบอกเล่าเวลา, การเก็บรักษา เวลาที่ถูกต้อง (ตั้งแต่วินาทีถูกกำหนดในแง่ของผลกระทบของอะตอม) ในความเป็นจริงมันเป็นที่น่าสังเกตว่าเวลา GPS แตกต่างจาก UTC ที่เราคุ้นเคยมากขึ้นที่จะเห็น นาฬิกาอะตอมเหล่านี้ได้รับการซิงโครไนซ์กับเวลาของอะตอมระหว่างประเทศหรือ TAI เพื่อไม่เพียงบอกเวลาผ่านไปอย่างแม่นยำ แต่ยัง เวลา.
เมื่อคุณมีเวลาที่แน่นอนในระบบเดียวที่เชื่อมต่อกับเครือข่ายเช่นอินเทอร์เน็ตมันเป็นเรื่องของวิศวกรรมโพรโทคอลที่ทำให้สามารถถ่ายโอนเวลาที่แม่นยำระหว่างโฮสต์ผ่านเครือข่ายที่ไม่น่าเชื่อถือ ในเรื่องนี้ Stratum 2 (หรือไกลจากแหล่งเวลาจริง) เซิร์ฟเวอร์ NTP ไม่แตกต่างจากระบบเดสก์ท็อปของคุณที่ซิงค์กับชุดของเซิร์ฟเวอร์ NTP.
ตามเวลาที่คุณมีเวลาที่ถูกต้องไม่กี่ครั้ง (ตามที่ได้รับจากเซิร์ฟเวอร์ NTP หรือที่อื่น ๆ ) และทราบอัตราความก้าวหน้าของนาฬิกาท้องถิ่นของคุณ (ซึ่งง่ายต่อการตรวจสอบ) คุณสามารถคำนวณอัตราดริฟท์ของนาฬิกาท้องถิ่นของคุณ กาลเวลา เมื่อล็อคเข้าแล้วค่านี้จะสามารถใช้เพื่อปรับนาฬิกาท้องถิ่นอย่างต่อเนื่องเพื่อให้รายงานค่าใกล้เคียงกับเวลาที่ผ่านไปอย่างแม่นยำแม้ว่านาฬิกาเรียลไทม์ท้องถิ่นจะไม่ถูกต้องอย่างแน่นอน ตราบใดที่นาฬิกาในพื้นที่ของคุณไม่สูง เอาแน่ไม่ได้, สิ่งนี้จะช่วยให้สามารถรักษาเวลาที่ถูกต้องได้ในบางครั้งแม้ว่าแหล่งเวลาของคุณจะไม่สามารถใช้งานได้ไม่ว่าด้วยเหตุผลใด.
การใช้งานไคลเอนต์ NTP บางอย่าง (อาจเป็น ntpd daemon หรือการใช้งานบริการระบบส่วนใหญ่) ทำสิ่งนี้และอื่น ๆ (เช่นสหายของ ntpd ntpdate ที่เพิ่งตั้งนาฬิกาเพียงครั้งเดียว) ไม่ได้ทำ สิ่งนี้เรียกโดยทั่วไปว่า ไฟล์ดริฟท์ เพราะมันเก็บการวัดดริฟท์ของนาฬิกาอย่างต่อเนื่อง แต่การพูดอย่างเคร่งครัดมันไม่จำเป็นต้องเก็บเป็นไฟล์เฉพาะบนดิสก์.
ใน NTP Stratum 0 เป็นคำจำกัดความแหล่งเวลาที่แม่นยำ Stratum 1 เป็นระบบที่ใช้แหล่งเวลา Stratum 0 เป็นแหล่งเวลา (และจึงมีความแม่นยำน้อยกว่าแหล่งเวลา Stratum 0 เล็กน้อย) Stratum 2 อีกครั้งมีความแม่นยำน้อยกว่า Stratum 1 อีกเล็กน้อยเนื่องจากมีการซิงค์เวลากับแหล่ง Stratum 1 เป็นต้น ในทางปฏิบัติการสูญเสียความแม่นยำนี้มีน้อยมากจนแทบไม่มีเลยในทุกกรณี แต่เป็นกรณีที่ร้ายแรงที่สุด.
มีสิ่งที่จะเพิ่มคำอธิบายหรือไม่ ปิดเสียงในความคิดเห็น ต้องการอ่านคำตอบเพิ่มเติมจากผู้ใช้ Stack Exchange คนอื่นหรือไม่ ลองอ่านหัวข้อสนทนาเต็มได้ที่นี่.