Sioncrónú Am Linux: NTP, Chrony agus systemd-timesyncd

Sioncrónú Am Linux: NTP, Chrony agus systemd-timesyncd
Coinníonn formhór na ndaoine súil ar an am. Éirímid in am lenár deasghnátha maidine a chríochnú agus dul ag obair, sos lóin a ghlacadh, spriocdhátaí tionscadail a chomhlíonadh, laethanta breithe agus laethanta saoire a cheiliúradh, dul ar bord eitleáin, agus mar sin de.

Thairis sin: tá cuid againn obsessed leis an am. Tá mo faire faoi thiomáint ag fuinneamh na gréine agus faigheann sé am cruinn ón Institiúid Náisiúnta um Chaighdeáin agus Teicneolaíocht (NIST) go Fort Collins, Colorado via raidió longwave WWVB. Déantar na comharthaí ama a shioncronú leis an gclog adamhach, atá lonnaithe ag Dún Uí Choileáin freisin. Tá mo Fitbit ag sioncronú le mo ghuthán atá ag sioncronú leis an bhfreastalaí NTP, a shioncrónaíonn sa deireadh leis an gclog adamhach.

Coinníonn gléasanna súil ar am freisin

Tá go leor cúiseanna ann go dteastaíonn am cruinn ar ár gcuid feistí agus ríomhairí. Mar shampla, i mbaincéireacht, i stocmhargaí agus i ngnólachtaí airgeadais eile, ní mór idirbhearta a dhéanamh san ord cuí, agus tá seichimh ama chruinne ríthábhachtach chuige sin.

Tá socruithe beachta ama agus dáta de dhíth ar ár bhfóin, táibléad, gluaisteáin, córais GPS agus ríomhairí. Teastaíonn uaim go dtaispeánfadh an clog ar dheasc mo ríomhaire an t-am ceart. Ba mhaith liom meabhrúcháin a bheith le feiceáil ar mo fhéilire áitiúil ag an am ceart. Cinntíonn an t-am ceart freisin go ritheann na jabanna cron agus córasacha ag an am ceart.

Tá dáta agus am tábhachtach freisin don logáil, mar sin tá sé beagán níos éasca logaí áirithe a aimsiú bunaithe ar dháta agus am. Mar shampla, d'oibrigh mé i DevOps uair amháin (níor tugadh é sin air ag an am) agus bhí mé ag bunú córas ríomhphoist i stát Carolina Thuaidh. Ba ghnách linn breis is 20 milliún ríomhphost a phróiseáil in aghaidh an lae. Is féidir i bhfad níos éasca r-phost a rianú trí shraith freastalaithe, nó seicheamh beacht na n-imeachtaí a chinneadh ag baint úsáide as comhaid logála ar óstaigh atá scaipthe go geografach má dhéantar na ríomhairí faoi seach a shioncronú in am.

Uair amháin - go leor uair an chloig

Ní mór d'óstach Linux a chur san áireamh go bhfuil am córais agus am RTC ann. Is ainm beagán aisteach agus nach bhfuil an-chruinn do chlog crua-earraí é RTC (Clog Fíor-Ama).

Ritheann an clog crua-earraí go leanúnach fiú nuair a bhíonn an ríomhaire casta as, ag baint úsáide as an gceallraí ar mháthairchlár an chórais. Is í príomhfheidhm an RTC ná am a stóráil nuair nach bhfuil nasc le freastalaí ama ar fáil. Sna laethanta nuair a bhí sé dodhéanta ceangal le freastalaí ama thar an Idirlíon, bhí clog inmheánach cruinn ag gach ríomhaire. Bhí ar chórais oibriúcháin rochtain a fháil ar an RTC ag am tosaithe agus bhí ar an úsáideoir am an chórais a shocrú de láimh ag baint úsáide as comhéadan cumraíochta crua-earraí BIOS chun a chinntiú go raibh sé ceart.

Ní thuigeann cloig crua-earraí coincheap na gcriosanna ama; Ní stórálann RTC ach an t-am, ní an crios ama nó an fhritháireamh ó UTC (Am Uilíoch Comhordaithe, ar a dtugtar GMT nó Greenwich Mean Time freisin). Is féidir leat RTC a shuiteáil ag baint úsáide as uirlis a chlúdóidh mé níos déanaí san Airteagal seo.

Is é an t-am córais an t-am a thaispeánann an OS ar an gclog GUI ar do dheasc, in aschur an ordaithe dáta, i stampaí ama na logaí. Baineann sé seo freisin le nuair a chruthaítear, a mhodhnaítear agus a osclaítear comhaid.

Ar an leathanach fear do rtc tá cur síos iomlán ar an RTC agus ar chlog an chórais.

Cad atá le NTP?

Úsáideann ríomhairí ar fud an domhain NTP (Network Time Protocol) chun a gcuid ama a shioncronú le cloig thagartha caighdeánacha ar an Idirlíon ag baint úsáide as ordlathas de fhreastalaithe NTP. Tá na príomhfhreastalaithe ama ag ciseal 1 agus tá siad ceangailte go díreach le seirbhísí náisiúnta éagsúla ama ag ciseal 0 trí shatailít, raidió nó fiú móideimí thar línte teileafóin. Is féidir le seirbhísí ama Sraith 0 a bheith ina gclog adamhach, ina nglacadóir raidió atá tiúnta le comharthaí arna dtarchur ag cloig adamhach, nó ina nglacadóir GPS a úsáideann comharthaí cloig an-chruinn arna dtarchur ag satailítí GPS.

Tá na mílte freastalaithe poiblí strataim 2 NTP oscailte don phobal ag formhór mór na bhfreastalaithe tagartha. Roghnaíonn go leor eagraíochtaí agus úsáideoirí (mé féin san áireamh) le go leor óstach a bhfuil freastalaí NTP de dhíth orthu a gcuid freastalaithe ama féin a bhunú ionas nach bhfaigheann ach óstach áitiúil amháin strataim 2 nó 3. Ansin cumraíonn siad na nóid atá fágtha ar an líonra chun an logánta a úsáid freastalaí ama. I gcás mo líonra baile, is freastalaí ciseal 3 é seo.

Cur i bhfeidhm éagsúla NTP

Is é ntpd cur i bhfeidhm bunaidh an NTP. Chuaigh dhá cheann níos nuaí isteach ansin, chronyd agus systemd-timesyncd. Déanann na trí cinn acu an t-am óstach áitiúil a shioncronú le freastalaí ama NTP. Níl an tseirbhís systemd-timesyncd chomh iontaofa le chronyd, ach tá sé maith go leor chun críocha an chuid is mó. Mura bhfuil an RTC as sioncronú, is féidir leis an t-am córais a choigeartú de réir a chéile chun sioncrónú leis an bhfreastalaí NTP nuair a bhíonn am an chórais áitiúil ag sileadh beagán. Ní féidir an tseirbhís systemd-timesync a úsáid mar fhreastalaí ama.

Cronaí is cur i bhfeidhm NTP é ina bhfuil dhá chlár: an deamhan crónaid agus comhéadan ordú-líne ar a dtugtar chronyc. Tá roinnt gnéithe ag Chrony atá fíor-riachtanach i go leor cásanna:

  • Is féidir le Chrony sioncronú le freastalaí ama i bhfad níos tapúla ná an seanseirbhís ntpd. Tá sé seo go maith do ríomhairí glúine nó deasc nach n-oibríonn an t-am ar fad.
  • Féadfaidh sé cúiteamh a dhéanamh ar luaineachtaí clog, mar shampla nuair a théann an t-óstach a chodladh nó nuair a théann sé isteach sa mhodh codlata, nó nuair a athraíonn an clog mar gheall ar hopping minicíochta, rud a mhoillíonn cloig ag ualaí íseal.
  • Réitíonn sé fadhbanna ama a bhaineann le nasc líonra éagobhsaí nó brú tráchta líonra.
  • Rialaíonn sé moilleanna líonra.
  • Tar éis an tsioncronaithe tosaigh, ní stopann Chrony an clog riamh. Soláthraíonn sé seo amanna cobhsaí agus comhsheasmhacha do go leor seirbhísí agus feidhmchlár córais.
  • Is féidir le Chrony oibriú fiú gan nasc líonra. Sa chás seo, is féidir an t-óstach áitiúil nó an freastalaí a nuashonrú de láimh.
  • Is féidir le Chrony gníomhú mar fhreastalaí NTP.

Arís eile, is prótacal é NTP is féidir a chur i bhfeidhm ar óstach Linux ag baint úsáide as Chrony nó systemd-timesyncd.

Tá na RPManna NTP, Chrony, agus systemd-timesyncd ar fáil i stórtha caighdeánacha Fedora. Is bainisteoir imeacht eithne é an systemd-udev RPM atá suiteáilte de réir réamhshocraithe ar Fedora, ach tá sé roghnach.

Is féidir leat na trí cinn a shuiteáil agus aistriú eatarthu, ach cruthóidh sé seo tinneas cinn breise. Mar sin tá sé níos fearr gan. Tá eisiúintí nua-aimseartha Fedora, CentOS, agus RHEL tar éis bogadh go Chrony mar an cur i bhfeidhm réamhshocraithe, agus tá systemd-timesyncd acu freisin. Cinnim go n-oibríonn Chrony go maith, go gcuireann sé comhéadan níos fearr ar fáil ná an tseirbhís NTP, go gcuireann sé i bhfad níos mó faisnéise agus rialaithe ar fáil, rud a mbainfidh riarthóirí córais taitneamh as go cinnte.

Seirbhísí NTP a dhíchumasú

Seans go bhfuil an tseirbhís NTP ag rith ar d’óstach cheana féin. Más amhlaidh, ní mór duit é a dhíchumasú roimh athrú chuig rud éigin eile. Bhí rith chronyd agam mar sin d'úsáid mé na horduithe seo a leanas chun é a stopadh agus a dhíchumasú. Rith na horduithe cuí le haghaidh aon deamhan NTP atá á rith agat ar d’óstach:

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

Seiceáil go bhfuil an tseirbhís stoptha agus díchumasaithe:

[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 ~]#

Seiceáil stádais roimh sheoladh

Ligeann stádas sioncrónaithe clog an chórais duit a chinneadh an bhfuil an tseirbhís NTP ag rith. Ós rud é nach bhfuil NTP tosaithe agat go fóill, cuirfidh an t-ordú stádais timesync leid faoi seo:

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

Soláthraíonn iarratas stádas díreach faisnéis thábhachtach. Mar shampla, cuireann an t-ordú timedatectl gan argóint nó roghanna an fo-ordú stádais i gcrích de réir réamhshocraithe:

[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 ~]#

Tabharfaidh sé seo an t-am áitiúil do d'óstach, am UTC, agus am RTC duit. Sa chás seo, socraítear am an chórais chuig crios ama Mheiriceá / New_York (TZ), socraítear an RTC go dtí an t-am sa chrios ama áitiúil, agus níl an tseirbhís NTP gníomhach. Tá an t-am RTC tosaithe ag imeacht beagán ó am an chórais. Is gnách é seo do chórais nach bhfuil a gcuid cloig sioncronaithe. Braitheann méid an fhritháirimh ar an óstach ar an am atá caite ó rinneadh an córas a shioncronú go deireanach.

Fuaireamar rabhadh freisin maidir le húsáid am áitiúil le haghaidh RTC - baineann sé seo le hathruithe crios ama agus socruithe DST. Má tá an ríomhaire múchta nuair is gá athruithe a dhéanamh, ní athróidh an RTC. Ach maidir le freastalaithe nó óstaigh eile a ritheann timpeall an chloig, ní fadhb é seo ar chor ar bith. Ina theannta sin, déanfaidh aon seirbhís a sholáthraíonn sioncrónú ama NTP am an óstaigh a choigeartú le linn na céime tosaithe tosaigh, agus mar sin beidh an t-am ceart arís tar éis an tosaithe a bheith críochnaithe.

Socrú an crios ama

De ghnáth, sonraíonn tú an crios ama le linn an nós imeachta suiteála agus ní gá duit é a athrú níos déanaí. Mar sin féin, tá amanna ann nuair is gá duit an crios ama a athrú. Tá roinnt uirlisí ann a chabhróidh leat. Úsáideann Linux comhaid crios ama chun crios ama áitiúil ósta a chinneadh. Tá na comhaid seo san eolaire /usr/share/zoneinfo. De réir réamhshocraithe, do mo chrios ama, forordaíonn an córas seo: /etc/localtime -> ../usr/share/zoneinfo/America/New_York. Ach ní gá duit fios a bheith agat ar subtleties den sórt sin chun an crios ama a athrú.

Is é an rud is mó ná an t-ainm crios ama oifigiúil do do shuíomh agus an t-ordú comhfhreagrach a fhios. Ligean le rá gur mhaith leat an crios ama a athrú go 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>

Anois is féidir leat an crios ama a shocrú. D'úsáid mé an t-ordú dáta chun athruithe a sheiceáil, ach is féidir leat timedatectl a úsáid freisin:

[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 ~]#

Anois is féidir leat crios ama d’óstach a athrú ar ais go ham áitiúil.

córasd-timesyncd

Soláthraíonn an deamhan timesync systemd cur i bhfeidhm NTP atá éasca le bainistiú sa chomhthéacs siste. Tá sé suiteáilte de réir réamhshocraithe ar Fedora agus Ubuntu. Mar sin féin, ní thosaíonn sé ach de réir réamhshocraithe ar Ubuntu. Níl mé cinnte faoi dáiltí eile. Is féidir leat seiceáil duit féin:

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

Córasd-timesyncd á chumrú

Is é an comhad cumraíochta le haghaidh systemd-timesyncd /etc/systemd/timesyncd.conf. Is comhad simplí é seo le níos lú roghanna cumasaithe ná na seansheirbhísí NTP agus chronyd. Seo é a bhfuil sa chomhad seo (gan tuilleadh modhnuithe) ar mo 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

Is é [Am] an t-aon chuid atá ann, seachas tráchtanna. Déantar trácht ar gach líne eile. Is iad seo na luachanna réamhshocraithe agus níor cheart iad a athrú (mura bhfuil cúis agat). Mura bhfuil freastalaí ama NTP agat atá sainmhínithe sa líne NTP=, mainneachtainí Fedora chuig freastalaí ama Fedora aisfhillte. De ghnáth cuirim mo fhreastalaí ama leis:

NTP=myntpserver

Sioncronú ama á rith

Is féidir leat systemd-timesyncd a thosú agus a dhéanamh gníomhach mar seo:

[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 ~]#

Socrú an clog crua-earraí

Seo mar a bheidh an scéal tar éis rith 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    

Ar dtús, tá an difríocht idir RTC agus am áitiúil (EDT) níos lú ná soicind, agus méadaíonn an neamhréiteach cúpla soicind eile sna laethanta amach romhainn. Ós rud é nach bhfuil aon choincheap criosanna ama i RTC, ní mór don ordú timedatectl comparáid a dhéanamh chun an crios ama ceart a chinneadh. Mura dtagann an t-am RTC go díreach leis an am áitiúil, ní mheaitseálann sé leis an gcrios ama áitiúil ach an oiread.

Ag lorg tuilleadh faisnéise, rinne mé seiceáil ar stádas systemd-timesync agus fuair mé é seo:

[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]#

Tabhair faoi deara an teachtaireacht logála a deir nach bhfuil am an chórais socraithe nó athshocrú. Socraíonn an tseirbhís Timesync am an chórais bunaithe ar an stampa ama. Coinníonn an deamhan timesync na stampaí ama agus cruthaítear iad ar gach sioncronú rathúil.

Níl aon bhealach ag an ordú timedatectl luach an chlog crua-earraí a bhaint as clog an chórais. Ní féidir leis ach an t-am agus an dáta a shocrú ón luach a iontráladh ar an líne ordaithe. Is féidir leat an RTC a shocrú ar an luach céanna le ham an chórais ag baint úsáide as an ordú hwclock:

[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

Insíonn an rogha --localtime don chlog crua-earraí am áitiúil a thaispeáint, ní UTC.

Cén fáth a bhfuil RTC ag teastáil uait ar chor ar bith?

Socróidh aon chur i bhfeidhm NTP clog an chórais ag am tosaithe. Agus cén fáth ansin RTC? Níl sé seo fíor go hiomlán: ní tharlóidh sé seo ach amháin má tá nasc líonra agat leis an bhfreastalaí ama. Mar sin féin, ní bhíonn rochtain ag go leor córas ar nasc líonra i gcónaí, mar sin tá clog crua-earraí úsáideach do Linux a úsáid chun am an chórais a shocrú. Is fearr é seo ná an t-am a shocrú de láimh, cé go bhféadfadh sé imeacht ón bhfíor-am.

Conclúid

Rinne an t-alt seo athbhreithniú ar roinnt uirlisí chun dáta, am agus criosanna ama a ionramháil. Soláthraíonn an uirlis systemd-timesyncd cliant NTP ar féidir leis an t-am ar an ósta áitiúil a shioncronú le freastalaí NTP. Mar sin féin, ní sholáthraíonn systemd-timesyncd seirbhís freastalaí, mar sin má tá freastalaí NTP uait ar do líonra, ní mór duit rud éigin eile a úsáid, mar shampla Chrony, chun gníomhú mar fhreastalaí.

Is fearr liom feidhmchlár amháin a bheith agam d’aon seirbhís ar mo líonra, mar sin úsáidim Chrony. Mura bhfuil freastalaí áitiúil NTP uait, nó mura miste leat Chrony a úsáid mar fhreastalaí agus systemd-timesyncd mar an cliant SNTP. Tar éis an tsaoil, ní gá gnéithe breise Chrony a úsáid mar chliant má tá tú sásta le feidhmiúlacht systemd-timesyncd.

Nóta eile: ní gá duit na huirlisí córasacha a úsáid chun NTP a chur i bhfeidhm. Is féidir leat leagan níos sine de ntpd, Chrony, nó feidhmiú NTP eile a úsáid. Tar éis an tsaoil, is éard atá i systemd ná líon mór seirbhísí; tá go leor acu roghnach, ionas gur féidir leat iad a mhúchadh agus rud éigin eile a úsáid ina ionad. Ní ollphéist ollmhór monolithic é seo. B’fhéidir nach dtaitníonn córais nó codanna de leat, ach ba cheart duit cinneadh eolasach a dhéanamh.

Is maith liom feidhmiú systemd ar NTP, ach is fearr liom Chrony mar go n-oireann sé níos fearr do mo chuid riachtanas. Linux atá ann, babaí -)

Ar Chearta Fógraíocht

Cuireann VDSina freastalaithe le haghaidh aon tasc, rogha ollmhór de chórais oibriúcháin le haghaidh suiteáil uathoibríoch, is féidir aon OS a shuiteáil ó do chuid féin ISO, compordach painéal rialaithe forbairt féin agus íocaíocht laethúil. Tabhair chun cuimhne go bhfuil freastalaithe síoraí againn atá cinnte gan am 😉

Sioncrónú Am Linux: NTP, Chrony agus systemd-timesyncd

Foinse: will.com

Add a comment