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