Ketika saya menanyakan status daemon NTP dengan ntpdc -c sysinfo
saya mendapatkan output berikut:
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
Ini menunjukkan bahwa sinkronisasi NTP gagal. Namun waktu sistem akurat dalam presisi 1 detik. Ketika saya menjalankan sistem saya tanpa koneksi jaringan untuk periode yang sama seperti yang saya lakukan sekarang waktu sistem akan menyimpang ~ 10s.
Perilaku ini menunjukkan bahwa sistem memiliki cara lain untuk menyinkronkan waktu. Saya menyadari bahwa ada juga systemd-timesyncd.service
(dengan file konfigurasi di /etc/systemd/timesyncd.conf
) dan timedatectl status
memberi saya waktu yang tepat:
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
Jadi pertanyaan saya adalah apa perbedaan antara kedua mekanisme tersebut? Apakah salah satunya sudah usang? Bisakah mereka digunakan secara paralel? Mana yang harus saya percayai ketika saya ingin menanyakan status sinkronisasi NTP?
(Perhatikan bahwa saya memiliki sistem yang berbeda (dalam jaringan yang berbeda) yang kedua metode menunjukkan keberhasilan dan menghasilkan waktu yang tepat.)
Jawaban:
systemd-timesyncd pada dasarnya adalah implementasi NTP khusus klien kecil yang kurang lebih dibundel dengan rilis systemd yang lebih baru. Ini lebih ringan daripada ntpd penuh tetapi hanya mendukung sinkronisasi waktu - yaitu tidak dapat bertindak sebagai server NTP untuk mesin lain. Ini dimaksudkan untuk mengganti ntpd untuk klien.
Anda sebaiknya tidak menggunakan keduanya secara paralel, karena secara teori mereka dapat memilih server waktu yang berbeda yang memiliki sedikit keterlambatan di antara mereka, yang menyebabkan jam sistem Anda secara berkala "gelisah".
Untuk mendapatkan status, Anda sayangnya perlu menggunakan
ntpdc
jika Anda menggunakan ntpd dantimedatectl
jika Anda menggunakan timesyncd, saya tahu tidak ada utilitas yang bisa membaca keduanya.sumber
systemd-timesyncd tidak memiliki disiplin jam: jam tidak terlatih atau kompensasi, dan jam internal melayang dari waktu ke waktu tidak berkurang. Ini memiliki logika dasar untuk menyesuaikan interval jajak pendapat, tetapi tanpa mendisiplinkan tuan rumah akan berakhir dengan waktu yang tidak merata selamanya karena systemd-timesyncd mendorong atau menarik pada interval apa pun yang menurutnya memerlukan penyimpangan jangka pendek. Itu juga tidak dapat menilai kualitas sumber waktu jauh. Anda tidak mungkin mendapatkan akurasi lebih dari 100 ms. Ini cukup untuk perangkat pengguna akhir yang sederhana seperti laptop, tetapi pasti dapat menyebabkan masalah untuk sistem terdistribusi yang menginginkan ketepatan waktu yang lebih besar.
sumber