systemd-timesyncd (Türkçe)
- systemd-timesyncd, sistem saatini sistem ağında senkronize hale getirebilmek için eklenmiş bir hayalet programdır. Program bir SNTP istemcisi sağlar. chrony gibi NTP istemcilerine veya NTP referans sunucusuna kıyasla bu yöntem sadece kullanıcı tarafında hizmet sunar ve NTP'nin zorluklarıyla uğraşmaz, sadece bir sunucudan güncel saatin bilgisini edinip yerel saati o saate denk getirmeye çalışır. Eğer herhangi bir ağdaki istemcilere NTP sunmayacaksanız veya yerel donanım saatlerine bağlanmak istemiyorsanız bu basit NTP istemcisi çoğu kurulum için fazlasıyla yeterli olacaktır. Servis minimal düzeyde yetki ile çalışmaktadır, sadece ağ bağlantısı sağlandığında beraber çalışabilmesi için networkd'ye bağlanmıştır. Servis, her yeni NTP senkronizasyonu edinildiğinde mevcut saati diske kaydeder ve bunu, Raspberry Pi ve gömülü cihazlar gibi RTC'si olmayan sistemlere uyacak şekilde sistem saatini açılış sırasında düzeltmek ve her zaman doğru olmasa da zamanın tekdüze ilerlediğinden emin olmak için kullanır. Bu servisten yararlanabilmek için systemd kurulumu sırasında "systemd-timesync" adıyla yeni bir kullanıcı ve grup oluşturulmalıdır.
Yapılandırma
systemd-timesyncd başlatılırken /etc/systemd/timesyncd.conf
dizinindeki yapılandırma dosyasını okuyacaktır. Bu dosya şöyle gözükmektedir:
/etc/systemd/timesyncd.conf
[Time] #NTP= #FallbackNTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org #...
Yeni zaman sunucuları eklemek veya elde bulunanları değiştirmek için ilgili yerleri yorum satırından çıkarın, ardından sunucu adreslerini veya IP adreslerini boşluklar bırakarak ekleyin. Ayrıca bir yapılandırma parçası da (configuration snippet) /etc/systemd/timesyncd.conf.d/*.conf
kullanabilirsiniz, daha fazla bilgi için timesyncd.conf(5) sayfasına bakın.
Örneğin, NTP havuzu tarafından sağlanan herhangi bir sunucuyu kullanabilir veya varsayılan Arch havuzunu (yine NTP havuz projesi tarafından sağlanmıştır) kullanabilirsiniz:
/etc/systemd/timesyncd.conf veya /etc/systemd/timesyncd.conf.d/local.conf
[Time] NTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org FallbackNTP=0.pool.ntp.org 1.pool.ntp.org 0.fr.pool.ntp.org
Yapılandırmanızı doğrulamak için
$ timedatectl show-timesync --all
LinkNTPServers= SystemNTPServers= RuntimeNTPServers= FallbackNTPServers=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org ServerName=2.arch.pool.ntp.org ServerAddress=45.136.155.37 RootDistanceMaxUSec=5s PollIntervalMinUSec=32s PollIntervalMaxUSec=34min 8s PollIntervalUSec=34min 8s NTPMessage={ Leap=0, Version=4, Mode=4, Stratum=3, Precision=-24, RootDelay=217.346ms, RootDispersion=52.047ms, Reference=27912C56, OriginateTimestamp=Fri 2024-01-19 16:39:56 +03, ReceiveTimestamp=Fri 2024-01-19 16:39:56 +03, TransmitTimestamp=Fri 2024-01-19 16:39:56 +03, DestinationTimestamp=Fri 2024-01-19 16:39:56 +03, Ignored=no, PacketCount=12, Jitter=535.760ms } Frequency=-210741
Servis yapılandırmasına ek olarak, NTP sunucuları NTP=
ile systemd-networkd yapılandırma dosyası üzerinden veya dinamik bir şekilde bir DHCP sunucusu aracılığıyla da sağlanabilir (.network dosyasının içerisinde [DHCPv4]
veya [DHCPv6]
bölümünde UseNTP
seçeneği aktif hale getirilirse).
Kullanılacak NTP sunucusu aşağıdaki kurallar kullanılarak belirlenir:
- systemd-networkd.service(8) yapılandırmasından veya DHCP aracılığıyla elde edilen arayüz başı NTP sunucularına öncelik verilir.
-
/etc/systemd/timesyncd.conf
içinde tanımlanan NTP sunucuları çalıştırılırken arayüz başına listeye eklenecek ve servis yanıt veren bir tane bulana kadar sırayla sunucularla iletişime geçecektir. - Bu adımlar tamamlandıktan sonra herhangi bir NTP sunucu bilgisi edinilmezse,
FallbackNTP=
içinde tanımlanmış NTP sunucusu ana makine adları veya IP adresleri kullanılır.
- Hizmet her senkronizasyonda
/var/lib/systemd/timesync/clock
dosyasını günceller. Bu dosya konumu sabittir ve değiştirilemez. - Bu yazma işlemi salt okunur kök bölümü çalıştırırken veya SD kartta yazmaları en aza indirmeye çalışırken soruna sebep olabilir.
- Yazma işlemi yapılandırma dosyasına eklenecek
PollIntervalMinSec=1d
veSaveIntervalSec=infinity
ayarları ile azaltılabilir.
Kullanım
Etkinleştirme ve başlatma
Servisi etkinleştirip çalıştırmak için aşağıdaki komutu girin:
# timedatectl set-ntp true
Alternatif olarak (örneğin chroot içerisindeyken) systemd-timesyncd.service
servisini başlatın/etkinleştirin.
Servis kontrolü
Senkronizasyon süreci belirgin ölçüde yavaş olabilir. Bu herhangi bir sorun olduğu anlamına gelmez, bir sorun olduğundan emin olmadan önce belli bir süre beklemek gerekir. Hizmetin ne durumda olduğunu kontrol etmek için aşağıdaki komutu kullanın:
$ timedatectl status
Local time: Fri 2024-01-19 17:36:59 +03 Universal time: Fri 2024-01-19 14:36:59 UTC RTC time: Fri 2024-01-19 14:36:59 Time zone: Europe/Istanbul (+03, +0300) System clock synchronized: yes NTP service: active RTC in local TZ: no
Ayrıntılı bilgi edinme
Servise dair ayrıntılı bilgi edinmek için aşağıdaki komutu kullanın:
$ timedatectl timesync-status
Server: 45.136.155.37 (2.arch.pool.ntp.org) Poll interval: 34min 8s (min: 32s; max 34min 8s) Leap: normal Version: 4 Stratum: 3 Reference: 27912C56 Precision: 1us (-24) Root distance: 165.137ms (max: 5s) Offset: -4.870ms Delay: 17.750ms Jitter: 535.761ms Packet count: 13 Frequency: -4.405ppm
Varsayılan olmayan yapılandırma ayarlarını görüntüleme
Varsayılan olmayan yapılandırma ayarlarını ve bu ayarların hangi dosyalar ile ayarlandığını görmek için aşağıdaki komutu kullanın:
$ systemd-analyze cat-config systemd/timesyncd.conf --tldr
# /etc/systemd/timesyncd.conf [Time] # /etc/systemd/timesyncd.conf.d/local.conf [Time] NTP=0.nl.pool.ntp.org 1.nl.pool.ntp.org 2.nl.pool.ntp.org 3.nl.pool.ntp.org RootDistanceMaxSec=0.1 PollIntervalMinSec=1d PollIntervalMaxSec=4w SaveIntervalSec=infinity
Günlüğü görüntüleme
Servise dair, son 24 saat içinde günlüğe kaydedilmiş olayları listelemek için aşağıdaki komutu kullanın:
# journalctl -u systemd-timesyncd --no-hostname --since "1 day ago"
Jan 19 15:14:20 systemd[1]: Stopping Network Time Synchronization... Jan 19 15:14:20 systemd[1]: systemd-timesyncd.service: Deactivated successfully. Jan 19 15:14:20 systemd[1]: Stopped Network Time Synchronization. Jan 19 15:14:20 systemd[1]: Starting Network Time Synchronization... Jan 19 15:14:20 systemd[1]: Started Network Time Synchronization. Jan 19 15:14:20 systemd-timesyncd[1023]: Contacted time server 178.215.228.24:123 (0.nl.pool.ntp.org). Jan 19 15:14:20 systemd-timesyncd[1023]: Initial clock synchronization to Fri 2024-01-19 15:14:20.393865 CET.