ซิงโครไนซ์นาฬิกากับ NTP ขณะออนไลน์และกับ RTC ขณะออฟไลน์หรือไม่


11

มีกลไกที่มีอยู่ซึ่งซิงโครไนซ์ระบบ linux กับ NTP ขณะออนไลน์หรือไม่และมี RTC ที่คาดการณ์ได้ในขณะออฟไลน์หรือไม่


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

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

OTOH RTC ของฮาร์ดแวร์ก็ลอยแรงเช่นกัน แต่ในอัตราคงที่ อัตราดริฟท์ RTC แตกต่างกันไปในแต่ละบอร์ด แต่มีค่าคงที่ต่อบอร์ดและสามารถวัดได้

ฉันเดาว่าสิ่งที่เราต้องการคือกลไกที่ทำสิ่งต่อไปนี้:

  • วัดอัตราการดริฟท์ RTC ของบอร์ดก่อนการปรับใช้
  • ปรับเวลาของระบบอย่างต่อเนื่อง / สม่ำเสมอผ่าน NTP เมื่อทำได้
  • ปรับเวลาของระบบเป็นประจำจาก RTC เมื่อไม่สามารถใช้ NTP ได้ นำอัตรา RTC ที่เป็นที่รู้จักมาพิจารณา
  • ตัวเลือก: วัดและบันทึกอัตราการล่องลอยของ RTC อย่างต่อเนื่องขณะออนไลน์ (1)

ด้วย 'กลไก' ฉันหมายถึงบางส่วนที่ได้รับการดูแลรักษาเป็นอย่างดีมีเอกสารชิ้นส่วนซอฟต์แวร์และ / หรือการตั้งค่าที่สามารถจัดการทั้งสองสถานะ "ออนไลน์" กับ "ออฟไลน์" ตรวจสอบให้แน่ใจว่านาฬิการะบบถูกซิงโครไนซ์กับแหล่งเวลาที่ถูกต้อง rtc) ตรวจจับการเปลี่ยนแปลงสถานะและแก้ไขการดริฟท์ RTC ไม่สำคัญว่าจะมีการใช้งานเป็นพิเศษ / การกำหนดค่าปลั๊กอิน ntpd เป็น daemon ที่แยกต่างหากเป็นงาน cron หรืออื่น ๆ

ฉันได้ดูที่Chronyแต่ตามเอกสารของมันพยายามที่จะทำนายการดริฟท์ของนาฬิการะบบซึ่งในกรณีของเราลอยไปไกลกว่า RTC มาก Chrony ดูเหมือนว่าจะใช้ RTC เพื่อให้เวลาในการรีบูตเท่านั้น


(1) หมายเหตุ ntpd เปิดใช้งานโหมด '11 -minute 'ของเคอร์เนล (อัปเดต rtc จากนาฬิการะบบทุก 11 นาที) ดูเหมือนว่าจะไม่มีวิธีใดในการใช้เมล็ดในปัจจุบันและ ntpd เพื่อป้องกันโหมด 11 นาที ดังนั้นข้อมูลดริฟท์ rtc ใด ๆ จะหายไปขณะที่ ntpd กำลังทำงาน (thx @billthor)


การปรับปรุง / แก้ไข:

  • เรากำลังพิจารณาที่จะเพิ่มนาฬิกาวิทยุภายนอกสำหรับสัญญาณ MSF หรือ DCF77 (เราอยู่ในยุโรป) ผ่าน USB หรืออนุกรม แต่เราค่อนข้างจะรักษาฮาร์ดแวร์ให้ผอม
  • นักสะสมของเราอยู่ในอาคารบ่อยครั้งที่อยู่ในห้องใต้ดิน ดังนั้นการเพิ่มนาฬิกา GPS จะไม่ช่วย
  • เราใช้ Debian 7 นั่นหมายถึง hwclock จาก util-linux-2.20.1, ntpdate-4.2.6p5, ntpd จาก ntp-4.2.6.p5, chrony-1.24 (อาจเป็น 1.30)
  • หมายเหตุว่าปัญหาของเราไม่ได้ว่าเราไม่ได้รู้วิธีการใช้ntpdate(8), hwclock(8), date(1)ฯลฯ โปรดดูส่วนเพิ่มเข้ามาในตัวเอียงเกี่ยวกับสิ่งที่ผมหมายถึงกับ 'กลไก'
  • เพิ่มเชิงอรรถเกี่ยวกับ '11 -minute mode '
  • นี่คือการสนทนาที่น่าสนใจมากเกี่ยวกับออฟไลน์ซิงค์และ RTC ดริฟท์

ตามที่ฉันเข้าใจแล้วการรวมกันของ ntpd และ hwclock ช่วยให้คุณทำสิ่งเหล่านี้ทั้งหมดแล้ว
รอย

@ แน่นอนว่า คำถามคือทำอย่างไรจึงจะรวม ntp (d) และ RTC (hwclock) เข้าด้วยกันเพื่อให้ได้ความแม่นยำสูงสุด?
Nils Toedtmann

ฉันเข้าใจว่านาฬิกา sys ลอยมากกว่า RTC ฉันอยากรู้ว่าสิ่งใดที่คุณไม่สามารถยอมรับได้เกี่ยวกับลักษณะ / ประสิทธิภาพของการจัดการระบบดริฟท์ของ Chrony? Chrony ล้มเหลวสำหรับคุณอย่างไร
dfc

@dfc chrony ไม่ได้ล้มเหลวเรา เรายังไม่ได้ลองเพราะดูเหมือนว่าจะไม่ใช้ RTC เพื่อให้เวลาในช่วงออฟไลน์ซึ่งฉันคิดว่าจะเพิ่มความแม่นยำในการใช้งานของเรา เราจะทดสอบตามลำดับเวลาหากไม่มีการแนะนำวิธีการที่ดูมีแนวโน้มมากกว่านี้
Nils Toedtmann

ฉันคิดว่าคุณควรมองตามลำดับเวลา ดูเหมือนว่าคุณกำลังออกตัวเลือกที่ดีโดยดูจากลางสังหรณ์ ในความคิดของฉันมันย้อนหลังเพื่อตรวจสอบ chrony iff ไม่พบ RTC-ntpd ดูเหมือนว่าสิ่งที่ง่ายที่สุดคือการดูว่า chrony ตรงตามความต้องการของคุณหรือไม่และถ้าไม่ลงไปในช่องกระต่ายนี้
dfc

คำตอบ:


4

สถานการณ์ของคุณผิดปกติและฉันจะประหลาดใจถ้าใครมากับการntpdกำหนดค่าตามมาตรฐานเพื่อทำสิ่งที่คุณต้องการ ที่กล่าวว่าฉันชอบประหลาดใจและมันเกิดขึ้นบ่อยครั้งในส่วนเหล่านี้

แต่จนกว่าจะมีใครคิดไอเดียที่ดีกว่านี้คุณได้พิจารณาข้อความcrontabเช่นนี้หรือไม่?

*/5 * * * *   ntpdate 0.pool.ntp.org || ( hwclock --adjust; hwclock --hctosys )

IE ทุกห้านาทีพยายามซิงค์นาฬิกาผ่านntpdateและถ้า (และถ้ามี) ที่ล้มเหลว, ปรับนาฬิกาฮาร์ดแวร์สำหรับล่องลอยไปตาม/etc/adjtimeไฟล์ (ที่มีรูปแบบเป็นรายละเอียดในman hwclockและที่บรรทัดแรกที่คุณได้ประชากรที่เหมาะสมโดยใช้ความรู้ของคุณ จากอัตรา RTC นั้น) จากนั้นตั้งนาฬิการะบบจาก RTC

โปรดทราบว่าถ้าคุณไปหาวิธีแก้ปัญหาเช่นนี้และคุณกำลังปรับใช้ระบบเหล่านี้จำนวนมากก็ถือว่าเป็นการสุภาพที่จะทำงานกับกลุ่มและสนับสนุนเซิร์ฟเวอร์กลับตามสัดส่วนการใช้งานของคุณ คุณสามารถค้นหาข้อมูลเพิ่มเติมได้ที่http://www.pool.ntp.org/en/vendors.html


คุณตอกย้ำแนวคิดพื้นฐาน :-) แต่มันไม่ได้นับเป็นคำตอบ (ยัง) เนื่องจากมันไม่ได้คำนึงถึงการดริฟท์ RTC (คงที่ แต่มีนัยสำคัญ) เราสามารถปรับปรุงได้เช่นใช้/etc/adjtimeและhwclock --adjust?
Nils Toedtmann

ใช่; ดูด้านบน.
MadHatter

นี่เป็นวิธีการแก้ปัญหาที่ฉันมีอยู่ในใจเมื่อฉันเขียนความคิดเห็นก่อนหน้าของฉัน นอกจากนี้หากนาฬิกาของระบบซิงค์อยู่ในปัจจุบันผ่าน ntpd คุณสามารถใช้ hwclock เพื่อวัดและกำหนดอัตราการดริฟท์ที่แม่นยำสำหรับ RTC
รอย

น่าเสียดายที่ไม่เห็นความคิดเห็นเกี่ยวกับ ntpd & '11
-minute

-1

NTP มีกลไกที่จะทราบว่าเป็นออนไลน์หรือออฟไลน์แล้วและจะเปลี่ยนเป็นแหล่งที่มีลำดับความสำคัญต่ำกว่าตามที่ต้องการ มันง่ายมากที่จะตรวจสอบค่าการเข้าถึงเพื่อเรียกแหล่งข้อมูลอื่น แต่ฉันจะใช้ NTP ตามที่กล่าวไว้ด้านล่างการตรวจสอบและแก้ไข RTC Drift น่าจะเป็นเรื่องยาก

ในช่วงก่อนอินเทอร์เน็ตฉันใช้โปรแกรมที่จะโทรออกไปยังแหล่งข้อมูลและซิงค์นาฬิกา อาจยังมีบริการที่ให้แหล่งเวลาผ่านโมเด็ม สิ่งนี้จะต้องมีการเข้าถึงสายโทรศัพท์

มีปัญหาที่ทราบเกี่ยวกับนาฬิกาในระบบซึ่งไม่ได้ใช้กับ RTC ปัญหาบางอย่างได้รับการบันทึกไว้ในรายการปัญหาระบบปฏิบัติการ NTP ที่ทราบแล้ว สิ่งเหล่านี้อาจอธิบายถึงการเลื่อนนาฬิกาของคุณ การแก้ไขปัญหาอาจช่วยแก้ปัญหาของคุณได้ ในกรณีที่ไม่มีเห็บที่ไม่ได้รับฉันพบแหล่งเวลาท้องถิ่น (ระบบ) อาจมีเสถียรภาพมาก

คุณอาจใช้ไดร์เวอร์นาฬิกา Dumb (33) กับโปรแกรมที่เขียนเวลา RTC ที่เหมาะสมไปยังอุปกรณ์ / dev / dumbclockX

มีไดรเวอร์อื่น ๆ อีกจำนวนหนึ่งที่ยึดตามนาฬิกาวิทยุ บางส่วนของการใช้บริการคลื่นสั้นเช่น WWV และ CHU ซึ่งอาจทำงานในสภาพแวดล้อมที่ไม่มีสัญญาณ GPS สำหรับยุโรปรายการนี้จะรวมถึง BBC, TDF, RBU และ RMW

Pavel Krejci ได้เขียนไดรเวอร์ RTC เช่นกัน แต่ดูเหมือนว่าจะไม่ได้รวมอยู่ในไดรเวอร์ที่เป็นทางการ สิ่งนี้อาจทำงานกับการซิงโครไนซ์ชนิด PPS

มันเป็นไปได้ที่จะวัดค่า RTC ดริฟท์ก่อนการปรับใช้ อย่างไรก็ตามคุณจะต้องตรวจสอบให้แน่ใจว่า RTC ไม่ได้รับการอัพเดตโดยอัตโนมัติ เมื่อนาฬิกาของระบบได้รับการอัพเดตด้วยฟังก์ชั่น adjtimex RTC อาจถูกอัพเดททุก 11 นาที

NTP จะอัปเดตนาฬิกาเมื่อเชื่อมต่อ โดยปกติ NTP จะปฏิเสธที่จะทำการปรับค่านาฬิการะบบอย่างมาก มีตัวเลือกในการปรับระยะเวลาที่สามารถปรับนาฬิกาได้

ฉันแนะนำตัวเลือกสำหรับการใช้ RTC ด้านบน นาฬิกาวิทยุอาจเหมาะสมกว่านาฬิกา GPS

การวัดการลอยในกรณีที่ไม่มีแหล่งเวลาที่เชื่อถือได้เพื่อเปรียบเทียบกับมันน่าจะเป็นความพยายามที่ไร้ประโยชน์ หากเวลาท้องถิ่นไม่เสถียรคุณไม่สามารถใช้มันเพื่อตรวจสอบ RTC และในทางกลับกัน การวัดดริฟท์ขณะที่เชื่อมต่อ NTP จะไม่ทำงานหากเคอร์เนลกำลังอัพเดต RTC ทุก ๆ 11 นาที RTCs ที่ฉันเคยใช้มีความละเอียดหนึ่งวินาทีดังนั้นพวกเขาจะต้องลอยอย่างมีนัยสำคัญเพื่อให้สามารถวัดได้อย่างน่าเชื่อถือ


ฉันไม่เข้าใจว่าสิ่งนี้เกี่ยวข้องกับคำถามของฉันอย่างไร ฉันไม่คิดว่าปัญหาของฉันคือการขาดไดรเวอร์ ... หรือไม่?
Nils Toedtmann

@NilsToedtmann เท่าที่ฉันสามารถหาได้ไม่มี RTC อย่างเป็นทางการ ฉันเชื่อว่าlocalไดรเวอร์ใช้นาฬิกาเซิร์ฟเวอร์ซึ่งคุณรายงานการดริฟท์ ฉันจะอัพเดทคำตอบของฉัน
BillThor

เมื่อคุณพูดว่า 'drivers' คุณหมายถึงไดรเวอร์เคอร์เนล Linux (ซึ่งมีมากมาย) หรือคุณสมบัติ ntpd? ขอบคุณสำหรับเคล็ดลับของคุณบางคนมีความน่าสนใจ - แม้ว่าฉันคิดว่าพวกเขาควรได้รับการโพสต์แทนที่จะเป็นความคิดเห็น ขอบคุณโดยเฉพาะสำหรับการกล่าวถึง '11 -minute more 'ฉันลืมไปแล้ว ฉันอัพเดตคำถามของฉัน
Nils Toedtmann

@NilsToedtmann ไม่ฉันหมายถึงไดรเวอร์นาฬิกา NTP มันเป็นประสบการณ์ของฉันที่โดยปกติแล้ว RTCs จะดริฟท์ แต่ไม่ใช่ในอัตราที่สูงหากการปะทะนั้นดี เห็บที่ไม่ได้รับอาจมีปัญหากับนาฬิการะบบ
BillThor
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.