Linux Time Synchronization: NTP, Chrony ug systemd-timesyncd

Linux Time Synchronization: NTP, Chrony ug systemd-timesyncd
Kadaghanan sa mga tawo nagsubay sa oras. Mobangon mi sa saktong oras aron makompleto ang among mga ritwal sa buntag ug moadto sa trabaho, mopahuway sa paniudto, magtagbo sa mga deadline sa proyekto, magsaulog sa mga adlawng natawhan ug holidays, mosakay og eroplano, ug uban pa.

Dugang pa: ang uban kanato nalinga sa panahon. Ang akong relo gipaandar sa solar energy ug makakuha og saktong oras gikan sa National Institute of Standards and Technology (NIST) ngadto sa Fort Collins, Colorado pinaagi sa longwave radio WWVB. Ang mga signal sa oras gi-synchronize sa atomic nga orasan, nga nahimutang usab sa Fort Collins. Ang akong Fitbit nag-sync sa akong telepono nga nag-sync sa server NTP, nga sa kadugayan mo-synchronize sa atomic nga orasan.

Ang mga aparato nagsubay usab sa oras

Adunay daghang mga hinungdan ngano nga ang atong mga aparato ug kompyuter nanginahanglan tukma nga oras. Pananglitan, sa banking, stock market, ug uban pang pinansyal nga negosyo, ang mga transaksyon kinahanglang himoon sa hustong pagkahan-ay, ug ang tukma nga mga han-ay sa panahon hinungdanon niini.

Ang among mga telepono, tablet, awto, GPS system ug kompyuter nanginahanglan ug tukma nga setting sa oras ug petsa. Gusto nako nga ang orasan sa desktop sa akong computer magpakita sa saktong oras. Gusto nako ang mga pahinumdom nga makita sa akong lokal nga kalendaryo sa husto nga oras. Ang husto nga oras nagsiguro usab nga ang cron ug systemd nga mga trabaho modagan sa husto nga oras.

Importante usab ang petsa ug oras sa pag-log, mao nga mas sayon ​​​​ang pagpangita sa pipila ka mga troso base sa petsa ug oras. Pananglitan, nagtrabaho ako kaniadto sa DevOps (wala kini gitawag nga kaniadto) ug nag-set up sa usa ka sistema sa email sa estado sa North Carolina. Nagproseso kami sa kapin sa 20 milyon nga mga email sa usa ka adlaw. Ang pagsubay sa e-mail pinaagi sa usa ka serye sa mga server, o pagtino sa eksaktong pagkasunodsunod sa mga panghitabo gamit ang mga log files sa geographically dispersed nga mga host, mahimong mas sayon ​​kung ang tagsa-tagsa nga mga computer i-synchronize sa oras.

Usa ka higayon - daghang oras

Kinahanglan nga tagdon sa mga host sa Linux nga adunay oras sa sistema ug oras sa RTC. Ang RTC (Real Time Clock) usa ka gamay nga katingad-an ug dili kaayo tukma nga ngalan alang sa usa ka orasan sa hardware.

Ang orasan sa hardware padayon nga nagdagan bisan kung ang kompyuter gipalong, gamit ang baterya sa motherboard sa sistema. Ang panguna nga gimbuhaton sa RTC mao ang pagtipig sa oras kung ang koneksyon sa usa ka server sa oras wala magamit. Sa mga adlaw nga imposible ang pagkonektar sa usa ka server sa oras sa Internet, ang matag kompyuter kinahanglan adunay tukma nga internal nga orasan. Ang mga operating system kinahanglan nga maka-access sa RTC sa oras sa pag-boot ug ang user kinahanglan nga mano-mano nga itakda ang oras sa sistema gamit ang BIOS hardware configuration interface aron masiguro nga kini husto.

Ang mga orasan sa hardware wala makasabut sa konsepto sa mga time zone; Gitipigan lang sa RTC ang oras, dili ang time zone o offset gikan sa UTC (Coordinated Universal Time, nailhan usab nga GMT o Greenwich Mean Time). Mahimo nimong i-install ang RTC gamit ang usa ka himan nga akong tabonan sa ulahi niini nga artikulo.

Ang oras sa sistema mao ang oras nga gipakita sa OS sa orasan sa GUI sa imong desktop, sa output sa command sa petsa, sa mga timestamp sa mga troso. Magamit usab kini kung ang mga file gihimo, giusab, ug giablihan.

Sa panid tawo para sa rtc adunay usa ka bug-os nga paghulagway sa RTC ug sa sistema sa orasan.

Unsay naa sa NTP?

Ang mga kompyuter sa tibuok kalibutan naggamit sa NTP (Network Time Protocol) aron i-synchronize ang ilang oras sa standard reference nga mga orasan sa Internet gamit ang hierarchy sa NTP servers. Ang mga nag-unang server sa oras naa sa layer 1 ug sila direktang konektado sa lainlaing mga serbisyo sa nasyonal nga oras sa layer 0 pinaagi sa satellite, radyo o bisan mga modem sa mga linya sa telepono. Ang Layer 0 time services mahimo nga atomic clock, radio receiver nga gipasa sa mga signal nga gipasa sa atomic clock, o GPS receiver nga naggamit ug tukma kaayo nga clock signal nga gipasa sa GPS satellites.

Ang kadaghanan sa mga reference server adunay pipila ka libo nga publiko nga NTP stratum 2 server nga bukas sa publiko. Daghang mga organisasyon ug tiggamit (apil sa akong kaugalingon) nga adunay daghang mga host nga nanginahanglan usa ka server sa NTP mipili nga mag-set up sa ilang kaugalingon nga mga server sa oras aron usa ra ka lokal nga host ang maka-access sa stratum 2 o 3. Dayon ilang gi-configure ang nahabilin nga mga node sa network aron magamit ang lokal nga oras server. Sa kaso sa akong home network, kini usa ka layer 3 server.

Nagkalainlain nga pagpatuman sa NTP

Ang orihinal nga pagpatuman sa NTP mao ang ntpd. Giduyogan kini sa duha ka bag-o, chronyd ug systemd-timesyncd. Ang tanan nga tulo nag-synchronize sa lokal nga oras sa host sa usa ka server sa oras sa NTP. Ang systemd-timesyncd nga serbisyo dili ingon ka kasaligan sama sa chronyd, apan kini igo na alang sa kadaghanan nga mga katuyoan. Kon ang RTC wala sa sync, kini mahimong anam-anam nga mag-adjust sa oras sa sistema aron ma-synchronize sa NTP server kung ang oras sa lokal nga sistema gamay ra. Ang systemd-timesync nga serbisyo dili magamit isip time server.

Chrony usa ka pagpatuman sa NTP nga adunay duha ka programa: ang chronyd daemon ug usa ka command-line interface nga gitawag ug chronyc. Ang Chrony adunay pipila ka mga bahin nga kinahanglanon sa daghang mga kaso:

  • Ang Chrony mahimong mag-synchronize sa usa ka time server nga mas paspas kaysa sa daan nga serbisyo sa ntpd. Maayo kini alang sa mga laptop o desktop nga dili molihok kanunay.
  • Mahimong mabayran niini ang pag-usab-usab sa orasan, sama sa kung matulog ang host o mosulod sa mode sa pagkatulog, o kung magbag-o ang orasan tungod sa frequency hopping, nga nagpahinay sa mga orasan sa mubu nga mga karga.
  • Gisulbad niini ang mga problema sa oras nga may kalabotan sa dili lig-on nga koneksyon sa network o paghuot sa network.
  • Gikontrol niini ang mga paglangan sa network.
  • Pagkahuman sa una nga pag-sync sa oras, wala gyud gipahunong ni Chrony ang orasan. Naghatag kini og lig-on ug makanunayon nga mga timelot alang sa daghang mga serbisyo sa sistema ug aplikasyon.
  • Mahimong magtrabaho ang Chrony bisan kung wala’y koneksyon sa network. Sa kini nga kaso, ang lokal nga host o server mahimong ma-update nga mano-mano.
  • Ang Chrony mahimong molihok isip NTP server.

Sa makausa pa, ang NTP usa ka protocol nga mahimong ipatuman sa usa ka host sa Linux gamit ang Chrony o systemd-timesyncd.

Ang NTP, Chrony, ug systemd-timesyncd RPMs anaa sa standard nga mga repositoryo sa Fedora. Ang systemd-udev RPM usa ka kernel event manager nga gi-install nga default sa Fedora, apan opsyonal.

Mahimo nimong i-install ang tanan nga tulo ug ibalhin sa taliwala nila, apan maghimo kini usa ka dugang nga labad sa ulo. Busa mas maayo nga dili. Ang mga modernong pagpagawas sa Fedora, CentOS, ug RHEL mibalhin sa Chrony isip default nga pagpatuman, ug sila usab adunay systemd-timesyncd. Nakita nako nga maayo ang pagtrabaho sa Chrony, naghatag usa ka labi ka maayo nga interface kaysa sa serbisyo sa NTP, naghatag daghang daghang kasayuran ug kontrol, nga siguradong malipay ang mga tagdumala sa sistema.

Pag-disable sa mga Serbisyo sa NTP

Mahimong nagdagan na ang serbisyo sa NTP sa imong host. Kon mao, kinahanglan nimo nga i-disable kini sa dili pa mobalhin sa laing butang. Ako adunay chronyd nga nagdagan mao nga akong gigamit ang mosunod nga mga sugo sa paghunong ug pag-disable niini. Pagdalagan ang angay nga mga sugo alang sa bisan unsang NTP daemon nga imong gipadagan sa imong host:

[root@testvm1 ~]# systemctl disable chronyd ; systemctl stop chronyd
Removed /etc/systemd/system/multi-user.target.wants/chronyd.service.
[root@testvm1 ~]#

Susiha nga ang serbisyo gihunong ug gi-disable:

[root@testvm1 ~]# systemctl status chronyd
● chronyd.service - NTP client/server
     Loaded: loaded (/usr/lib/systemd/system/chronyd.service; disabled; vendor preset: enabled)
     Active: inactive (dead)
       Docs: man:chronyd(8)
             man:chrony.conf(5)
[root@testvm1 ~]#

Pagsusi sa kahimtang sa dili pa ilunsad

Ang kahimtang sa pag-synchronize sa orasan sa sistema nagtugot kanimo sa pagtino kung ang serbisyo sa NTP nagdagan. Tungod kay wala ka pa magsugod sa NTP, ang timesync-status nga sugo magpahibalo niini:

[root@testvm1 ~]# timedatectl timesync-status
Failed to query server: Could not activate remote peer.

Ang direktang hangyo sa status naghatag og importante nga impormasyon. Pananglitan, ang timedatectl nga sugo nga walay argumento o mga kapilian nagpatuman sa status subcommand pinaagi sa default:

[root@testvm1 ~]# timedatectl status
           Local time: Fri 2020-05-15 08:43:10 EDT  
           Universal time: Fri 2020-05-15 12:43:10 UTC  
                 RTC time: Fri 2020-05-15 08:43:08      
                Time zone: America/New_York (EDT, -0400)
System clock synchronized: no                          
              NTP service: inactive                    
          RTC in local TZ: yes                    

Warning: The system is configured to read the RTC time in the local time zone.
         This mode cannot be fully supported. It will create various problems
         with time zone changes and daylight saving time adjustments. The RTC
         time is never updated, it relies on external facilities to maintain it.
         If at all possible, use RTC in UTC by calling
         'timedatectl set-local-rtc 0'.
[root@testvm1 ~]#

Maghatag kini kanimo sa lokal nga oras alang sa imong host, oras sa UTC, ug oras sa RTC. Sa kini nga kaso, ang oras sa sistema gitakda sa time zone sa America / New_York (TZ), ang RTC gitakda sa oras sa lokal nga time zone, ug ang serbisyo sa NTP dili aktibo. Ang oras sa RTC nagsugod sa pagtipas gamay gikan sa oras sa sistema. Normal kini sa mga sistema kansang mga orasan wala ma-synchronize. Ang kantidad sa offset sa host nagdepende sa oras nga milabay sukad ang sistema katapusan nga gi-synchronize.

Nakadawat usab kami usa ka pasidaan bahin sa paggamit sa lokal nga oras para sa RTC - kini magamit sa mga pagbag-o sa time zone ug mga setting sa DST. Kung ang kompyuter gipalong kung kinahanglan ang mga pagbag-o, ang RTC dili mausab. Apan alang sa mga server o uban pang mga host nga nagdagan sa tibuok orasan, dili kini problema. Dugang pa, ang bisan unsang serbisyo nga naghatag ug oras sa NTP nga pag-synchronize mag-adjust sa oras sa host sa panahon sa inisyal nga yugto sa pagsugod, aron ang oras mahimong husto pag-usab pagkahuman makompleto ang pagsugod.

Pagbutang sa time zone

Kasagaran, imong gitino ang time zone sa panahon sa pamaagi sa pag-install ug wala ka’y tahas sa pagbag-o niini sa ulahi. Bisan pa, adunay mga higayon nga kinahanglan nimo usbon ang time zone. Adunay daghang mga himan nga makatabang. Gigamit sa Linux ang mga file sa timezone aron mahibal-an ang lokal nga timezone sa usa ka host. Kini nga mga file anaa sa direktoryo /usr/share/zoneinfo. Sa kasagaran, alang sa akong time zone, ang sistema nagreseta niini: /etc/localtime -> ../usr/share/zoneinfo/America/New_York. Apan dili nimo kinahanglan nga mahibal-an ang ingon nga mga subtlety aron mabag-o ang time zone.

Ang panguna nga butang mao ang pagkahibalo sa opisyal nga ngalan sa time zone alang sa imong lokasyon ug ang katugbang nga mando. Ingnon ta nga gusto nimong usbon ang time zone sa Los Angeles:


[root@testvm2 ~]# timedatectl list-timezones | column
<SNIP>
America/La_Paz                  Europe/Budapest
America/Lima                    Europe/Chisinau
America/Los_Angeles             Europe/Copenhagen
America/Maceio                  Europe/Dublin
America/Managua                 Europe/Gibraltar
America/Manaus                  Europe/Helsinki
<SNIP>

Karon mahimo nimong itakda ang timezone. Gigamit nako ang date command aron masusi ang mga pagbag-o, apan mahimo usab nimo gamiton ang timedatectl:

[root@testvm2 ~]# date
Tue 19 May 2020 04:47:49 PM EDT
[root@testvm2 ~]# timedatectl set-timezone America/Los_Angeles
[root@testvm2 ~]# date
Tue 19 May 2020 01:48:23 PM PDT
[root@testvm2 ~]#

Karon mahimo nimong usbon ang time zone sa imong host balik sa lokal nga oras.

systemd-timesyncd

Ang systemd timesync daemon naghatag usa ka pagpatuman sa NTP nga dali madumala sa konteksto sa systemd. Gi-install kini pinaagi sa default sa Fedora ug Ubuntu. Bisan pa, nagsugod ra kini pinaagi sa default sa Ubuntu. Dili ko sigurado bahin sa ubang mga distribusyon. Mahimo nimong susihon ang imong kaugalingon:

[root@testvm1 ~]# systemctl status systemd-timesyncd

Pag-configure sa systemd-timesyncd

Ang configuration file alang sa systemd-timesyncd mao ang /etc/systemd/timesyncd.conf. Kini usa ka yano nga file nga adunay gamay nga kapilian nga magamit kaysa sa daan nga NTP ug chronyd nga mga serbisyo. Ania ang mga sulud niini nga file (nga wala’y dugang nga mga pagbag-o) sa akong Fedora VM:

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See timesyncd.conf(5) for details.

[Time]
#NTP=
#FallbackNTP=0.fedora.pool.ntp.org 1.fedora.pool.ntp.org 2.fedora.pool.ntp.org 3.fedora.pool.ntp.org
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048

Ang bugtong seksiyon nga anaa niini, gawas sa mga komento, mao ang [Panahon]. Ang tanan nga ubang mga linya gikomentaryo. Kini ang mga default nga kantidad ug dili kinahanglan usbon (gawas kung adunay ka hinungdan). Kung wala kay NTP time server nga gihubit sa NTP= line, ang Fedora nag-default sa usa ka fallback Fedora time server. Kasagaran akong idugang ang akong time server:

NTP=myntpserver

Nagdagan ang timesync

Mahimo nimong sugdan ug himoong aktibo ang systemd-timesyncd sama niini:

[root@testvm2 ~]# systemctl enable systemd-timesyncd.service
Created symlink /etc/systemd/system/dbus-org.freedesktop.timesync1.service β†’ /usr/lib/systemd/system/systemd-timesyncd.service.
Created symlink /etc/systemd/system/sysinit.target.wants/systemd-timesyncd.service β†’ /usr/lib/systemd/system/systemd-timesyncd.service.
[root@testvm2 ~]# systemctl start systemd-timesyncd.service
[root@testvm2 ~]#

Pag-set sa orasan sa hardware

Ania kung unsa ang hitsura sa sitwasyon pagkahuman sa pagpadagan sa timesyncd:

[root@testvm2 systemd]# timedatectl
               Local time: Sat 2020-05-16 14:34:54 EDT  
           Universal time: Sat 2020-05-16 18:34:54 UTC  
                 RTC time: Sat 2020-05-16 14:34:53      
                Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes                          
              NTP service: active                      
          RTC in local TZ: no    

Sa sinugdan, ang kalainan tali sa RTC ug lokal nga oras (EDT) dili kaayo sa usa ka segundo, ug ang kalainan nagdugang sa laing duha ka segundo sa sunod nga mga adlaw. Tungod kay walay konsepto sa mga time zone sa RTC, ang timedatectl nga sugo kinahanglang maghimo ug pagtandi aron matino ang hustong time zone. Kung ang oras sa RTC dili eksakto nga katumbas sa lokal nga oras, nan dili usab kini motugma sa lokal nga time zone.

Nangita alang sa dugang nga kasayuran, akong gisusi ang kahimtang sa systemd-timesync ug nakit-an kini:

[root@testvm2 systemd]# systemctl status systemd-timesyncd.service
● systemd-timesyncd.service - Network Time Synchronization
     Loaded: loaded (/usr/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: disabled)
     Active: active (running) since Sat 2020-05-16 13:56:53 EDT; 18h ago
       Docs: man:systemd-timesyncd.service(8)
   Main PID: 822 (systemd-timesyn)
     Status: "Initial synchronization to time server 163.237.218.19:123 (2.fedora.pool.ntp.org)."
      Tasks: 2 (limit: 10365)
     Memory: 2.8M
        CPU: 476ms
     CGroup: /system.slice/systemd-timesyncd.service
             └─822 /usr/lib/systemd/systemd-timesyncd

May 16 09:57:24 testvm2.both.org systemd[1]: Starting Network Time Synchronization...
May 16 09:57:24 testvm2.both.org systemd-timesyncd[822]: System clock time unset or jumped backwards, restoring from recorded timestamp: Sat 2020-05-16 13:56:53 EDT
May 16 13:56:53 testvm2.both.org systemd[1]: Started Network Time Synchronization.
May 16 13:57:56 testvm2.both.org systemd-timesyncd[822]: Initial synchronization to time server 163.237.218.19:123 (2.fedora.pool.ntp.org).
[root@testvm2 systemd]#

Matikdi ang mensahe sa log nga nag-ingon nga ang oras sa sistema wala mabutang o gi-reset. Ang serbisyo sa Timesync nagtakda sa oras sa sistema base sa timestamp. Ang mga timestamp gipadayon sa timesync nga daemon ug gihimo sa matag malampuson nga pag-sync.

Ang timedatectl command walay paagi sa pagkuha sa bili sa hardware clock gikan sa system clock. Mahimo ra nga itakda ang oras ug petsa gikan sa kantidad nga gisulod sa linya sa mando. Mahimo nimong itakda ang RTC sa parehas nga kantidad sa oras sa sistema gamit ang hwclock nga mando:

[root@testvm2 ~]# /sbin/hwclock --systohc --localtime
[root@testvm2 ~]# timedatectl
               Local time: Mon 2020-05-18 13:56:46 EDT  
           Universal time: Mon 2020-05-18 17:56:46 UTC  
                 RTC time: Mon 2020-05-18 13:56:46      
                Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes                          
              NTP service: active                      
          RTC in local TZ: yes

Ang --localtime nga opsyon nagsulti sa hardware nga orasan aron ipakita ang lokal nga oras, dili UTC.

Ngano nga kinahanglan nimo ang RTC?

Ang bisan unsang pagpatuman sa NTP magbutang sa orasan sa sistema sa oras sa pagsugod. Ug nganong RTC man? Dili kini hingpit nga tinuod: kini mahitabo lamang kung ikaw adunay koneksyon sa network sa time server. Bisan pa, daghang mga sistema ang dili kanunay adunay access sa usa ka koneksyon sa network, mao nga ang orasan sa hardware mapuslanon alang sa Linux nga magamit aron itakda ang oras sa sistema. Mas maayo kini kay sa mano-mano nga pagtakda sa oras, bisan kung kini mahimong motipas gikan sa tinuod nga oras.

konklusyon

Kini nga artikulo nagrepaso sa pipila ka mga himan alang sa pagmaniobra sa petsa, oras, ug mga time zone. Ang systemd-timesyncd nga himan naghatag ug NTP client nga maka-synchronize sa oras sa lokal nga host gamit ang NTP server. Bisan pa, ang systemd-timesyncd wala maghatag serbisyo sa server, busa kung kinahanglan nimo ang usa ka server sa NTP sa imong network, kinahanglan nimo gamiton ang lain, sama sa Chrony, aron molihok ingon usa ka server.

Gipalabi nako nga adunay usa ka pagpatuman alang sa bisan unsang serbisyo sa akong network, mao nga gigamit nako ang Chrony. Kung dili nimo kinahanglan ang usa ka lokal nga server sa NTP, o kung wala nimo hunahunaa ang paggamit sa Chrony ingon server ug systemd-timesyncd ingon kliyente sa SNTP. Pagkahuman, dili kinahanglan nga gamiton ang dugang nga mga bahin sa Chrony ingon usa ka kliyente kung natagbaw ka sa pagpaandar sa systemd-timesyncd.

Laing nota: wala ka kinahanglana nga gamiton ang systemd nga mga himan aron ipatuman ang NTP. Mahimo nimong gamiton ang mas daan nga bersyon sa ntpd, Chrony, o uban pang pagpatuman sa NTP. Pagkahuman, ang systemd naglangkob sa daghang mga serbisyo; daghan niini mga opsyonal, mao nga mahimo nimo kining i-off ug gamiton ang laing butang. Dili kini usa ka dako nga monolithic monster. Mahimong dili nimo gusto ang systemd o mga bahin niini, apan kinahanglan ka maghimo usa ka nahibal-an nga desisyon.

Ganahan ko sa pagpatuman sa systemd sa NTP, apan mas gusto nako ang Chrony tungod kay mas haum kini sa akong mga panginahanglan. Linux kini, bata -)

Diha sa Mga Katungod sa Pagdukiduki

Nagtanyag ang VDSina mga server alang sa bisan unsang buluhaton, usa ka dako nga pagpili sa mga operating system alang sa awtomatikong pag-instalar, posible nga i-install ang bisan unsang OS gikan sa imong kaugalingon ISO, komportable control panel kaugalingon nga kalamboan ug adlaw-adlaw nga pagbayad. Kahinumduman nga naa tay mga eternal servers nga siguradong walay panahon πŸ˜‰

Linux Time Synchronization: NTP, Chrony ug systemd-timesyncd

Source: www.habr.com

Idugang sa usa ka comment