ntpd so với systemd-timesyncd - Làm thế nào để đạt được đồng bộ hóa NTP đáng tin cậy?


31

Khi tôi truy vấn trạng thái của trình nền NTP với ntpdc -c sysinfotôi nhận được đầu ra sau:

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

Điều này chỉ ra rằng đồng bộ hóa NTP không thành công. Tuy nhiên thời gian hệ thống chính xác trong vòng 1 giây. Khi tôi chạy hệ thống của mình mà không có kết nối mạng trong cùng khoảng thời gian như bây giờ, thời gian hệ thống sẽ lệch ~ 10 giây.

Hành vi này cho thấy hệ thống có một cách khác để đồng bộ hóa thời gian. Tôi nhận ra rằng cũng có systemd-timesyncd.service(với tệp cấu hình tại /etc/systemd/timesyncd.conf) và timedatectl statuscho tôi thời gian chính xác:

      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

Vì vậy, câu hỏi của tôi là sự khác biệt giữa hai cơ chế là gì? Là một trong số họ không được chấp nhận? Chúng có thể được sử dụng song song? Tôi nên tin tưởng vào cái nào khi tôi muốn truy vấn trạng thái đồng bộ hóa NTP?

(Lưu ý rằng tôi có một hệ thống khác (trong một mạng khác) mà cả hai phương pháp đều biểu thị thành công và mang lại thời gian chính xác.)


2
Tôi đã thấy rằng Fedora thực sự sử dụng chrony : Cấu hình NTP bằng cách sử dụng bộ chrony Suite
David Tonhofer

Câu trả lời:


19

systemd-timesyncd về cơ bản là một triển khai NTP chỉ dành cho khách hàng nhỏ ít nhiều được đóng gói với các bản phát hành systemd mới hơn. Nó nhẹ hơn ntpd đầy đủ nhưng chỉ hỗ trợ đồng bộ hóa thời gian - tức là nó không thể hoạt động như một máy chủ NTP cho các máy khác. Nó dự định thay thế ntpd cho khách hàng.

Bạn không nên sử dụng cả hai song song, vì theo lý thuyết, họ có thể chọn các bộ đếm thời gian khác nhau có độ trễ nhẹ giữa chúng, dẫn đến đồng hồ hệ thống của bạn bị "giật" định kỳ.

Để có được trạng thái, bạn không may cần phải sử dụng ntpdcnếu bạn sử dụng ntpd và timedatectlnếu bạn sử dụng timesyncd, tôi biết không có tiện ích nào có thể đọc cả hai.


Làm thế nào có thể sau đó trên một hệ thống đồng bộ hóa của ntpd bị lỗi trong khi trên hệ thống khác thì nó thành công (cả hai đều chạy song song systemd-timesyncd). Tôi khá chắc chắn rằng điều này không liên quan đến vấn đề tường lửa khi tôi đã kiểm tra các cài đặt tương ứng. Ngay bây giờ tôi còn lại hai kết quả và tôi rất muốn tin tưởng vào kết quả thành công tuy nhiên tôi nghi ngờ vì cả hai khách hàng đều thực hiện cùng một giao thức NTP nhưng một thất bại. Thật ra tôi sẽ mong cả hai làm việc.
a_guest

1
ntpd và timesyncd sử dụng các cài đặt khác nhau. Bạn đã đặt cùng một máy chủ thời gian cho cả hai?
maxf

bạn có thể sử dụng timesyncd để đồng bộ hóa thời gian với GPS như với ntp không?
bakalolo

Systemd-timesyncd là máy khách SNTP kém chính xác hơn NTP. Người đọc không nên lầm tưởng rằng systemd-timesyncd là một ứng dụng khách NTP trọng lượng nhẹ.
Philip Couling

14

systemd-timesyncd không có kỷ luật đồng hồ: đồng hồ không được đào tạo hoặc bù, và đồng hồ bên trong trôi theo thời gian không giảm. Nó có logic thô sơ để điều chỉnh khoảng thời gian thăm dò ý kiến ​​nhưng không xử lý kỷ luật, máy chủ sẽ kết thúc với thời gian không đồng đều mãi mãi khi systemd-timesyncd đẩy hoặc kéo theo bất kỳ khoảng thời gian nào mà nó nghĩ là sự trôi dạt gần. Nó cũng không thể đánh giá chất lượng của nguồn thời gian từ xa. Bạn không thể có được độ chính xác lớn hơn 100ms. Điều này là đủ cho các thiết bị người dùng cuối đơn giản như máy tính xách tay, nhưng nó chắc chắn có thể gây ra sự cố cho các hệ thống phân tán muốn có độ chính xác về thời gian cao hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.