ntpd vs. systemd-timesyncd - วิธีการซิงค์ NTP ที่เชื่อถือได้?


31

เมื่อฉันสอบถามสถานะของ NTP daemon ด้วยntpdc -c sysinfoฉันจะได้รับผลลัพธ์ต่อไปนี้:

system peer:          0.0.0.0
system peer mode:     unspec
leap indicator:       11
stratum:              16
precision:            -20
root distance:        0.00000 s
root dispersion:      12.77106 s
reference ID:         [73.78.73.84]
reference time:       00000000.00000000  Thu, Feb  7 2036  7:28:16.000
system flags:         auth monitor ntp kernel stats
jitter:               0.000000 s
stability:            0.000 ppm
broadcastdelay:       0.000000 s
authdelay:            0.000000 s

สิ่งนี้บ่งชี้ว่าการซิงค์ NTP ล้มเหลว อย่างไรก็ตามเวลาของระบบนั้นแม่นยำภายใน 1 วินาที เมื่อฉันรันระบบโดยไม่มีการเชื่อมต่อเครือข่ายในช่วงเวลาเดียวกับที่ฉันทำตอนนี้เวลาของระบบจะเบี่ยงเบน ~ 10s

พฤติกรรมนี้แสดงให้เห็นว่าระบบมีวิธีการซิงค์เวลาอื่น ฉันรู้ว่ามีsystemd-timesyncd.service(ด้วยไฟล์กำหนดค่าที่/etc/systemd/timesyncd.conf) และtimedatectl statusทำให้ฉันมีเวลาที่ถูกต้อง:

      Local time: Thu 2016-08-25 10:55:23 CEST
  Universal time: Thu 2016-08-25 08:55:23 UTC
        RTC time: Thu 2016-08-25 08:55:22
       Time zone: Europe/Berlin (CEST, +0200)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: yes
 Last DST change: DST began at
                  Sun 2016-03-27 01:59:59 CET
                  Sun 2016-03-27 03:00:00 CEST
 Next DST change: DST ends (the clock jumps one hour backwards) at
                  Sun 2016-10-30 02:59:59 CEST
                  Sun 2016-10-30 02:00:00 CET

ดังนั้นคำถามของฉันคือความแตกต่างระหว่างกลไกทั้งสองคืออะไร หนึ่งในนั้นเลิกใช้หรือไม่ พวกเขาสามารถใช้ในแบบคู่ขนาน? ฉันควรไว้วางใจข้อใดเมื่อฉันต้องการสอบถามสถานะการซิงค์ NTP

(โปรดทราบว่าฉันมีระบบที่แตกต่างกัน (ในเครือข่ายที่แตกต่างกัน) ซึ่งทั้งสองวิธีแสดงถึงความสำเร็จและให้เวลาที่ถูกต้อง)


2
ฉันพบว่า Fedora ใช้chronyจริง: การกำหนดค่า NTP โดยใช้ chrony Suite
David Tonhofer

คำตอบ:


19

systemd-timesyncd นั้นเป็นการใช้งาน NTP แบบไคลเอนต์ขนาดเล็กเพียงอย่างเดียวมากขึ้นหรือน้อยลงรวมกับ systemd-release ที่ใหม่กว่า มันมีน้ำหนักเบากว่า ntpd เต็มรูปแบบ แต่รองรับการซิงค์เวลาเท่านั้น - นั่นคือไม่สามารถทำหน้าที่เป็นเซิร์ฟเวอร์ NTP สำหรับเครื่องอื่น ๆ มีวัตถุประสงค์เพื่อแทนที่ ntpd สำหรับลูกค้า

คุณไม่ควรใช้ทั้งคู่ขนานในทางทฤษฎีพวกเขาสามารถเลือกเซิร์ฟเวอร์เวลาที่แตกต่างกันเล็กน้อยซึ่งมีความล่าช้าเล็กน้อยระหว่างพวกเขา

เพื่อรับสถานะคุณต้องใช้ntpdcถ้าคุณใช้ ntpd และtimedatectlถ้าคุณใช้ timesyncd ฉันรู้ว่าไม่มีประโยชน์ที่สามารถอ่านทั้งสองได้


เป็นไปได้อย่างไรที่ระบบหนึ่งของการซิงค์ของ ntpd ล้มเหลวขณะที่อีกระบบหนึ่งประสบความสำเร็จ (ทั้งสองระบบกำลังเรียกใช้ systemd-timesyncd ในแบบคู่ขนาน) ฉันค่อนข้างแน่ใจว่าสิ่งนี้ไม่เกี่ยวข้องกับปัญหาไฟร์วอลล์เนื่องจากฉันตรวจสอบการตั้งค่าที่เกี่ยวข้อง ตอนนี้ฉันเหลือผลลัพธ์ไว้สองรายการและฉันอยากจะเชื่อใจในความสำเร็จ แต่ฉันมีข้อสงสัยเนื่องจากไคลเอนต์ทั้งสองใช้โพรโทคอล NTP เดียวกัน แต่กลับล้มเหลว ที่จริงฉันคาดหวังว่าทั้งคู่จะทำงาน
a_guest

1
ntpd และ timesyncd ใช้การตั้งค่าที่แตกต่างกัน คุณตั้งค่า timeserver เดียวกันสำหรับทั้งสองหรือไม่
maxf

คุณสามารถใช้ timesyncd เพื่อซิงค์เวลากับ GPS เช่นเดียวกับ ntp ได้หรือไม่
bakalolo

Systemd-timesyncd เป็นไคลเอนต์ SNTP ซึ่งมีความแม่นยำน้อยกว่า NTP ผู้อ่านไม่ควรเข้าใจผิดเกี่ยวกับการคิด systemd-timesyncd เป็นไคลเอนต์ NTP น้ำหนักเบา
Philip Couling

14

systemd-timesyncd ไม่มีระเบียบวินัยของนาฬิกา: นาฬิกาไม่ได้รับการฝึกฝนหรือชดเชยและนาฬิกาภายในจะไม่ลดลงตามกาลเวลา มันมีตรรกะพื้นฐานในการปรับช่วงโพล แต่ไม่มีระเบียบวินัยโฮสต์จะจบลงด้วยเวลาที่ไม่สม่ำเสมอตลอดไปเนื่องจาก systemd-timesyncd ผลักหรือดึงในช่วงเวลาใดก็ตามที่คิดว่าการดริฟท์ระยะใกล้ต้องใช้ นอกจากนี้ยังไม่สามารถประเมินคุณภาพของแหล่งเวลาระยะไกลได้ คุณไม่น่าจะได้รับความแม่นยำมากกว่า 100ms สิ่งนี้เพียงพอสำหรับอุปกรณ์ผู้ใช้ขั้นปลายอย่างแล็ปท็อป แต่อาจทำให้เกิดปัญหากับระบบกระจายที่ต้องการความแม่นยำของเวลามากขึ้น

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