
Enamik inimesi jälgib aega. Tõuseme õigeaegselt, et täita oma hommikurutiinid ja minna tööle, teha lõunapausi, täita projekti tähtaegu, tähistada sünnipäevi ja pühi, lennata jne.
Lisaks on mõned meist ajast täielikult sõltuvad. Minu kell töötab päikeseenergiaga ja saadab täpset aega Ameerika Ühendriikide Rahvuslike Standardite ja Tehnoloogia Instituudist () Fort Collinsis (Colorado osariik) pika laine raadiosignaali kaudu. Ajasedelid sünkroonitakse aatomikelladega, mis asuvad samuti Fort Collinsis. Minu Fitbit sünkroonitakse minu telefoniga, mis omakorda sünkroonitakse serveriga, mis lõpuks sünkroonitakse aatomikelladega.
Seadmed jälgivad samuti aega.
On palju põhjuseid, miks meie seadmed ja arvutid vajavad täpset aega. Näiteks panganduses, aktsiaturgudel ja teistes finantsettevõtetes peavad tehingud toimuma õiges järjekorras ja selle jaoks on kriitilise tähtsusega täpsed ajajärjestused.
Meie telefonid, tahvelarvutid, autod, GPS-süsteemid ja arvutid vajavad täpseid aega ja kuupäeva seadistusi. Ma tahan, et minu arvuti töölaua kell näitaks õiget aega. Ma tahan, et minu kohalikus kalendris tuletatakse mulle meelde asju õigeaegselt. Õige aeg garanteerib ka, et cron- ja systemd-ülesanded käivitatud õigel ajal.
Kuupäev ja aeg on olulised ka logimise jaoks, mistõttu on lihtsam leida teatud logisid, vaadates kuupäeva ja aega. Näiteks töötasin kunagi DevOps'is (toona ei kutsutud seda nii) ja seadistasin e-posti süsteemi Põhja-Carolinas. Tol ajal töötasime me üle 20 miljoni e-kirja päevas. E-kirjade jälgimine läbi mitmete serverite või täpsete sündmuste järjekorra määramine logifailide abil geograafiliselt hajutatud hostides võib olla palju lihtsam, kui vastavad arvutid on aja poolest sünkroniseeritud.
Aeg on üks, kuid kelli on palju.
Linuxi hostid peavad arvestama, et on süsteemiaeg ja RTC aeg. RTC (Reaalaja Kell) on pisut kummaline ja mitte eriti täpne nimetus riistvarakellade jaoks.
Riistakellad töötavad pidevalt, isegi kui arvuti on välja lülitatud, kasutades emaplaadi akut. RTC peamine ülesanne on hoida aega, kui ajaserveriga ühendus pole saadaval. Aegadel, mil interneti kaudu ajaserveriga ühendada ei saanud, pidi igal arvutil olema täpsed sisemised kellad. Operatsioonisüsteemid pidid RTC-le ligi pääsema käivitamise ajal ja kasutaja pidi käsitsi süsteemiaega seadma BIOSi konfiguratsiooniliidese abil, et veenduda, et see on õige.
Riistakellad ei mõista ajavööndite mõistet; RTC-s hoitakse ainult aega, mitte ajavööndit või UTC-st (Ühendatud Aeg, mida tuntakse ka kui GMT või Greenwichi keskmine aeg) kõrvalekallet. Saate RTC-d seadistada tööriista abil, millest ma räägin hiljem selles artiklis.
Süsteemiaeg on aeg, mida operatsioonisüsteem kuvab teie töölaual GUI kellades, kuupäeva käsu väljundis ja logide ajatemplites. See viitab ka failide loomise, muutmise ja avamise ajale.
Leheküljel on RTC ja süsteemikellade täielik kirjeldus.
Mis on NTP juures?
Arvutid üle kogu maailma kasutavad NTP (võrguaegade protokoll) oma aja sünkroonimiseks standardsete etalon kelladega veebis, kasutades NTP serverite hierarhiat. Peamised ajaserverid asuvad tasemel 1 ja need on otse ühendatud erinevate riiklike ajateenustega tasemel 0 läbi satelliidi, raadio või isegi modemite abil telefoniliinide kaudu. Taseme 0 ajateenused võivad olla aatomkellad, raadiovastuvõtja, mis on seadistatud aatomkellade edastatud signaalide vastuvõtmiseks, või GPS vastuvõtja, mis kasutab satelliitide GPS edastatavaid täpsete kellasignaalide signaale.
Enamikus standardserverites on avatud mitu tuhat avaliku NTP stratum 2 serverit, mis on kõigi jaoks kergesti ligipääsetavad. Paljud organisatsioonid ja kasutajad (ka mina) suurte hostide arvuga, kellele on vajalik NTP-server, eelistavad seadistada omaenda ajaseervereid, nii et vaid üks kohalik host pöördub stratum 2 või 3 poole. Seejärel seadistavad nad ülejäänud võrgus olevad sõlmed kasutama kohalikku ajaserverit. Minu koduvõrgu puhul on see kolmanda taseme server.
Erinevad NTP teostused
Algne NTP teostus on ntpd. Seejärel liitusid sellega kaks uuemat, chronyd ja systemd-timesyncd. Kõik kolm sünkroniseerivad kohaliku hosti aega NTP ajaserveriga. Systemd-timesyncd teenus ei ole nii usaldusväärne kui chronyd, kuid piisab enamiku eesmärkide saavutamiseks. Kui RTC ei ole sünkroniseeritud, võib see aeglaselt kohandada süsteemi aega, et sünkroniseerida NTP serveriga, kui kohaline süsteemi aeg veidi nihkub. Systemd-timesync teenust ei saa kasutada ajaserverina.
on NTP teostus, mis sisaldab kahte programmi: chronyd demon ja käsurea liides nimega chronyc. Chronyl on mõned funktsioonid, mis on paljude olukordade korral lihtsalt vältimatud:
- Chrony suudab sünkroniseerida ajaga palju kiiremini kui vana teenus ntpd. See on hea sülearvutitele või lauaarvutitele, mis ei tööta pidevalt.
- See suudab kompenseerida taktsageduse kõikumisi, näiteks siis, kui host vahetab unerežiim või kui taktsagedus muutub järsku, põhjustades taktsageduste aeglustumist madalate koormuste ajal.
- See lahendab ajaga seotud probleemid, mis on seotud ebastabiilse võrguühenduse või võrgu ülekoormusega.
- See reguleerib võrgu viivitusi.
- Pärast esmast aja sünkroniseerimist ei seisa Chrony kunagi kella. See tagab stabiilsed ja järjepidevad ajavahemikud paljude süsteemiteenuste ja rakenduste jaoks.
- Chrony võib töötada isegi ilma internetiühenduseta. Sellisel juhul saab kohalikku hosti või serverit käsitsi värskendada.
- Chrony võib toimida NTP-serverina.
Veel kordi: NTP on protokoll, mida saab rakendada Linuxi hostis kasutades Chrony või systemd-timesyncd.
NTP, Chrony ja systemd-timesyncd RPM-pakettide standardne varud on saadaval Fedora tavarepositorites. RPM systemd-udev on tuuma sündmuste haldur, mis on vaikimisi Fedora-s installitud, kuid ei ole kasutamiseks kohustuslik.
Sa saad installida kõik kolm ja nende vahel vahetada, aga see toob endaga kaasa üleliigse peavalu. Seega on parem seda mitte teha. Moodsa Fedora, CentOS ja RHEL väljaanded on läinud üle Chrony-le kui standardsele rakendusele ning lisaks on neil systemd-timesyncd. Ma arvan, et Chrony töötab hästi, pakub paremat liidest kui NTP teenus, annab palju rohkem teavet ja suurendab kontrolli, mis kindlasti meeldib süsteemiadministraatoritele.
NTP teenuste väljalülitamine
Võib-olla on sinu hostis juba NTP teenus käimas. Kui jah, siis pead selle enne millegi teise kasutusele võtmist väljalülitama. Mul oli käimas chronyd, seega kasutasin järgmisi käske selle peatamiseks ja väljalülitamiseks. Käivita vastavad käsud igasuguse NTP deemonile, mida oma hostis kasutad:
[root@testvm1 ~]# systemctl disable chronyd ; systemctl stop chronyd
Eemaldatud /etc/systemd/system/multi-user.target.wants/chronyd.service.
[root@testvm1 ~]#Kontrolli, et teenus on peatatud ja välja lülitatud:
[root@testvm1 ~]# systemctl status chronyd
● chronyd.service - NTP klient/serveer
Laaditud: laaditud (/usr/lib/systemd/system/chronyd.service; välja lülitatud; tootja vaikevalik: lubatud)
Aktiivne: mitteaktiivne (surnud)
Dokumendid: man:chronyd(8)
man:chrony.conf(5)
[root@testvm1 ~]#Oleku kontrollimine enne käivitamist
Süsteemi kellade sünkroniseerimise olek võimaldab määrata, kas NTP teenus on käimas. Kuna sa pole veel NTP-d käivitanud, vihjab käsu timesync-status sellele:
[root@testvm1 ~]# timedatectl timesync-status
Serveri päring ebaõnnestus: Ei saanud aktiveerida kaugpartnerit.Otsene oleku päring annab olulist teavet. Näiteks käsk timedatectl ilma argumentide või parameetriteta täidab vaikimisi alamkäsku status:
[root@testvm1 ~]# timedatectl status
Kohalik aeg: Reede 2020-05-15 08:43:10 EDT
Üldine aeg: Reede 2020-05-15 12:43:10 UTC
RTC aeg: Reede 2020-05-15 08:43:08
Aeg kandi: America/New_York (EDT, -0400)
Süsteemi kell on sünkroonimata: ei
NTP teenus: mitteaktiivne
RTC kohaliku TZ-s: jah
Hoiatus: Süsteem on seadistatud lugema RTC aega kohaliku ajavööndi järgi.
See režiim ei ole täielikult toetatud. See tekitab mitmeid probleeme
ajavööndi muutuste ja suveaja seadistustega. RTC
aeg ei uuene kunagi, see toetub välistele seadmetele selle säilitamiseks.
Kui see üldse võimalik on, kasutage RTC-d UTC-s, kutsudes esile
'timedatectl set-local-rtc 0'.
[root@testvm1 ~]#Nii saate kohaliku aja, UTC aja ja RTC aja oma hostile. Antud juhul on süsteemi aeg seadistatud ajavööndi America/New_York (TZ) järgi, RTC on seadistatud kohaliku ajavööndi järgi ja NTP teenus ei ole aktiivne. RTC aeg hakkab süsteemi ajast veidi kõrvale kalduma. See on normaalne süsteemide puhul, mille kelli ei ole sünkroonitud. Kaldumise suurus hostis sõltub ajast, mis on möödunud viimase süsteemi sünkroonimise hetkest.
Saime ka hoiatusi kohaliku aja kasutamise kohta RTC jaoks — see puudutab ajavööndi ja suveaja seadistusi. Kui arvuti on välja lülitatud siis, kui tuleb teha muudatusi, ei muutu RTC aeg. Kuid serverite või muude hostide puhul, mis töötavad ööpäevaringselt, ei ole see probleem. Lisaks parandab iga teenus, mis tagab NTP aja sünkroonimise, hosti aega juba käivitamise alguses, seega pärast käivitamise lõpetamist on aeg jälle õige.
Ajavööndi seadmine
Tavaliselt määrate ajavööndi installi käigus ja teil ei ole seda hiljem muuta. Siiski on juhtumeid, kus tuleb ajavööndit muuta. On mitmeid tööriistu, mis võivad aidata. Linux määrab kohaliku ajavööndi ajavööndi failide põhjal. Need failid asuvad kataloogis /usr/share/zoneinfo. Vaikimisi määrab süsteem minu ajavööndi jaoks järgmise: /etc/ localtime -> ../usr/share/zoneinfo/America/New_York. Kuid teile ei ole vajalikud sellised detailid, et ajavööndit muuta.
Peamine on teada kohaliku asukoha ametlikku ajavööndi nime ja vastavat käsku. Ütleme, et soovite muuta ajavööndi Los Angeleseks:
[root@testvm2 ~]# timedatectl list-timezones | column
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/HelsinkiNüüd saate ajavööndi seadistada. Muudatuste kontrollimiseks kasutasin ma date käsku, kuid võite kasutada ka 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 ~]#Nüüd saate oma hosti ajavööndi kohalikule ajale tagasi muuta.
systemd-timesyncd
Systemd timesync daemon pakub NTP teostust, mida on lihtne hallata systemd kontekstis. See on vaikimisi installitud Fedora ja Ubuntu süsteemidesse. Kuid vaikimisi käivitub see ainult Ubuntu süsteemides. Ma ei ole kindel teiste distributsioonide osas. Saate ise kontrollida:
[root@testvm1 ~]# systemctl status systemd-timesyncdSystemd-timesyncd seadistamine
Systemd-timesyncd konfiguratsioonifail on /etc/systemd/timesyncd.conf. See on lihtne fail, millel on vähem lubatud valikuid kui vanematel NTP ja chronyd teenustel. Siin on selle faili sisu (ilma täiendavate muudatusteta) minu Fedora virtuaalmasinas:
# 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=2048Ainus jaotis, mis sisaldub lisaks kommentaaridele, on [Time]. Kõik muud read on kommentaaritud. Need on vaikeseaded, neid ei ole vaja muuta (kui teil pole selleks põhjust). Kui teil pole ajaserverit NTP, määrab Fedora vaikimisi ajaserveri. Ma lisan üldiselt oma ajaserveri:
NTP=myntpserverTimesynci käivitamine
Systemd-timesyncd saab käivitada ja aktiivseks muuta järgmiselt:
[root@testvm2 ~]# systemctl enable systemd-timesyncd.service
Loodud sümboolne link /etc/systemd/system/dbus-org.freedesktop.timesync1.service → /usr/lib/systemd/system/systemd-timesyncd.service.
Loodud sümboolne link /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 ~]#Riistvarakellade seadistamine
Nii näeb olukord välja pärast timesyncd käivitamist:
[root@testvm2 systemd]# timedatectl
Kohalik aeg: Sat 2020-05-16 14:34:54 EDT
Üksik aeg: Sat 2020-05-16 18:34:54 UTC
RTC aeg: Sat 2020-05-16 14:34:53
Ajavahemik: America/New_York (EDT, -0400)
Süsteemi kell sünkroniseeritud: jah
NTP teenus: aktiivne
RTC kohalikus TZ: ei Alguses on RTC ja kohalik aja (EDT) vahe vaid sekundit ja see erinevus suureneb järgmiste päevade jooksul veel paar sekundit. Kuna RTC-l ei ole ajavööndite mõistet, peab käsu timedatectl sooritama võrdluse, et määrata vajaliku ajavööndi. Kui RTC aeg ei ühti täpselt kohaliku ajaga, siis tähendab see, et see ei ühti ka kohaliku ajavööndiga.
Otsides täiendavat teavet, kontrollisin systemd-timesync olekut ja leidsin järgmise:
[root@testvm2 systemd]# systemctl status systemd-timesyncd.service
● systemd-timesyncd.service - Võrgu Aja Sünkroniseerimine
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: "Esialgne sünkroniseerimine aja serveriga 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]: Süsteemi kella aeg on määramata või tagurpidi hüpanud, taastamine salvestatud ajatempli põhjal: 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]: Esialgne sünkroniseerimine aega serveriga 163.237.218.19:123 (2.fedora.pool.ntp.org).
[root@testvm2 systemd]#Pange tähele logisõnumit, milles öeldakse, et süsteemi aeg ei ole seadistatud või on tagasi hüpanud. Timesync teenus seab süsteemi aja põhinedes ajatempli. Ajatempleid toetab timesync daemon ja need luuakse iga eduka sünkroniseerimise ajal.
Käsk timedatectl ei saa võtta seadme kellast väärtust süsteemi kellast. See suudab seadistada aega ja kuupäeva ainult käsurealt sisestatud väärtuse alusel. Saate seadme RTC sama väärtusega, mis süsteemi aeg, kasutades käsku hwclock:
[root@testvm2 ~]# /sbin/hwclock --systohc --localtime
[root@testvm2 ~]# timedatectl
Kohalik aeg: Mon 2020-05-18 13:56:46 EDT
Üksnes aeg: Mon 2020-05-18 17:56:46 UTC
RTC aeg: Mon 2020-05-18 13:56:46
Aja tsoon: America/New_York (EDT, -0400)
Süsteemi kell sünkroniseeritud: jah
NTP teenus: aktiivne
RTC kohaliku TZ-s: jahValik —localtime näitab, et seadme kell näitab kohaliku aega, mitte UTC-d.
Miks sul üldse RTC on?
Kõik NTP rakendused seadistavad süsteemi kella käivitamisel. Aga miks siis RTC? See pole päris nii: see juhtub ainult siis, kui sul on võrguühendus ajaserveriga. Kuid paljud süsteemid ei oma pidevat juurdepääsu võrguühendusele, seega on riistvarakellad kasulikud, et Linux saaks nende alusel seadistada süsteemi aja. See on parem, kui seada aeg käsitsi, isegi kui see võib erineda tegelikust ajast.
Kokkuvõte
Selles artiklis käsitletakse mõningaid tööriistu kuupäeva, aja ja ajavööndite haldamiseks. Tööriist systemd-timesyncd pakub NTP-klienti, mis saab sünkroonida aega kohaliku hostiga NTP-serveriga. Kuid systemd-timesyncd ei paku serveriteenust, seega kui sul on vajalik NTP-server oma võrgus, pead kasutama midagi muud — näiteks Chronyt, et toimida serverina.
Ma eelistan, et minu võrgus oleks rakendatud ainult üks teenus, seega kasutan Chronyt. Kui sul pole vajalik kohaliku NTP-serveri, või kui sa ei pahanda kasutada Chronyt serverina ja systemd-timesyncd SNTP-klientina. Lõppude lõpuks pole põhjust kasutada Chrony täiendavaid võimalusi kliendina, kui sind rahuldab systemd-timesyncd funktsionaalsus.
Veel üks tõdemus: sa ei ole sunnitud kasutama systemd tööriistu NTP rakendamiseks. Sa saad kasutada vana versiooni ntpd, Chronyt või mõnda muud NTP rakendust. Lõppude lõpuks koosneb systemd paljusid teenustest; paljusid neist võib välja lülitada ja kasutada selle asemel midagi muud. See ei ole tohutu monoliitne monstrum. Sa võid mitte armastada systemd-d või selle osi, aga pead tegema teadliku otsuse.
Mulle meeldib systemd NTP rakendus, kuid eelistan Chronyt, kuna see vastab paremini minu vajadustele. See on Linux, beebi -)
Reklaami õigustes
VDSina pakub , tohutu valik operatsioonisüsteeme automaatseks installiks, on võimalus installida ükskõik milline OS oma mugav enda arendust ja päevane tasu. Tuletame meelde, et meil on igavesed serverid, mis ei allu ajale 😉
Allikas: habr.com
