
Enamik inimesi jälgib aega. Me tõuseme õigel ajal, et täita meie hommikusi rituaale, minna tööle, teha lõunapausi, jääda projektide tähtaegadesse, tähistada sünnipäevi ja pühi, minna lennukisse jne.
Veelgi enam: mõned meist on ajast sõltuvuses. Minu kell töötab päikeseenergial ja saab täpset aega Rahvuslikult Standardite ja Tehnoloogiate Instituudist () Fort Collinsis (Colorado osariik) pika laine raadiosaatja kaudu . Ajasignaalid sünkroniseeritakse aatomikelladega, mis asuvad samuti Fort Collinsis. Minu Fitbit sünkroniseerub minu telefoniga, mis sünkroniseerub serveriga , mis lõpuks sünkroniseerub aatomikelladega.
Ka seadmed jälgivad aega
On palju põhjuseid, miks meie seadmetele ja arvutitele on vajalik täpne aeg. Näiteks panganduses, aktsiaturgudel ja muudes finantsorganisatsioonides peavad tehingud toimuma õiges järjekorras ning selleks on kriitilise tähtsusega täpsed ajajärjekorrad.
Meie telefonid, tahvelarvutid, autot, GPS-süsteemid ja arvutid vajavad täpset kuupäeva ja kellaaega. Ma soovin, et minu arvuti töölaual olev kell näitaks õiget aega. Ma tahan, et minu kohalik kalendris meenutused ilmuksid õigeaegselt. Õige aeg tagab ka, et cron ja systemd ülesanded käivituvad õigel ajal.
Kuupäev ja kellaaeg on samuti olulised logimise jaoks, mistõttu on lihtsam leida teatud logisid kuupäeva ja kellaaja järgi. Näiteks töötasin kunagi DevOpsis (toona ei kutsutud seda nii) ja seadistasin e-posti süsteemi Põhja-Carolinas. Varem töötasime üle 20 miljoni kirja päevas. E-posti jälgimine serverite seerias või sündmuste täpse järjestuse määramine geograafiliselt hajutatud hostide logifailide abil võib olla palju lihtsam, kui vastavad arvutid on ajaliselt sünkroniseeritud.
Aeg on üks — tunde on palju
Linuxi hostides tuleb arvestada, et olemas on süsteemi aeg ja RTC. RTC (reaalaegne kell) on veidi imelik ja mitte eriti täpne nimetus riistvarakellade kohta.
Riistvarakellad töötavad pidevalt, isegi kui arvuti on välja lülitatud, kasutades emaplaadi akusid. RTC peamine funktsioon on hoida aega, kui ajaserveriga ühendus pole saadaval. Aegadel, mil interneti kaudu ajaserveriga ühenduda ei saanud, pidi igal arvutil olema täpsed sisemised kellad. Operatsioonisüsteemid pidid laadimise ajal pöörduma RTC poole, ja kasutaja pidi käsitsi seadma süsteemi aja BIOSi seadistuse riistvaraliidese kaudu, et tagada selle õigsus.
Riistvarakellad ei mõista ajavööndite kontseptsiooni; RTC-s hoitakse ainult aega, mitte ajavööndit või nihket UTC-st (Ühendatud Aeg, mida tuntakse ka kui GMT või Greenwichi keskaeg). RTC seadmiseks võite kasutada tööriista, millest ma räägin hiljem selles artiklis.
Süsteemi aeg on aeg, mida operatsioonisüsteem kuvab GUI kelladel teie laual, date käskluse väljundis ja logide ajamärkides. See kehtib ka failide loomise, muutmise ja avamise aja kohta.
Lehe peal on täielik kirjeldus RTC ja süsteemi kelladest.
Kuidas on lood NTP-ga?
Arvutid üle kogu maailma kasutavad NTP (võrguaegade protokoll) oma aja sünkroniseerimiseks standardsete etalon kelladega interneti kaudu, kasutades NTP serverite hierarhiat. Peamised aja serverid on 1. tasemel ja on otse ühendatud erinevate rahvuslike aega teenindavate teenustega 0. tasemel satelliitide, raadio või isegi modemite kaudu telefoniliinide kaudu. 0. taseme aja teenused võivad olla aatomkellad, raadiovastuvõtja, mis on häälestatud aatomkellade edastatud signaalidele, või GPS-vastuvõtja, mis kasutab kõrge täpsusega kellade signaale, mida edastavad GPS-satelliidid.
Enamikus etalonserveritest on avatud mitu tuhat avalikku NTP stratum 2 serverit, mida saavad kasutada kõik. Paljud organisatsioonid ja kasutajad (sealhulgas mina) suurte hostide arvuga, kellele on vajalik NTP-server, eelistavad seadistada oma ajaservereid, nii et ainult üks lokaalne host pöördub stratum 2 või 3 poole. Seejärel seadistatakse ülejäänud võrgu sõlmed kasutama lokaalset ajaserverit. Minu koduvõrgus on see stratum 3 server.
Erinevad NTP teostused
Algne NTP teostus on ntpd. Seejärel liitusid kaks uuemat, chronyd ja systemd-timesyncd. Kõik kolm sünkroniseerivad lokaalse hosti aega NTP ajaserveriga. Systemd-timesyncd teenus pole nii usaldusväärne kui chronyd, kuid enamikuks otstarveteks on see piisav. Kui RTC ei ole sünkroniseeritud, võib see aeglaselt korrigeerida süsteemi aega, et sünkroniseeruda NTP serveriga, kui lokaalne süsteemi aeg on veidi nihkunud. Systemd-timesync teenust ei saa kasutada ajaserverina.
— see tähistab NTP teostust, kus on kaks programmi: daemon chronyd ja käsurealiides nimega chronyc. Chronyl on mõned funktsioonid, mis on paljudes olukordades lihtsalt asendamatud:
- Chrony suudab sünkroonida ajaserveriga palju kiiremini kui vana teenus ntpd. See on hea sülearvutite või lauaarvutite jaoks, mis ei tööta pidevalt.
- See suudab kompenseerida kiirusetõkkeid, näiteks kui host lülitub unerežiimi või kui taktsagedus muutub järsult, mis aeglustab taktsagedusi madalate koormuste korral.
- See lahendab ajaga seotud probleeme, mis on tingitud ebastabiilsest võrguühendusest või võrgukoormusest.
- See reguleerib võrgu viivitusi.
- Pärast esialgset ajasünkroniseerimist Chrony kunagi kellasid ei peata. See tagab stabiilsed ja järjepidevad ajavahemikud paljude süsteemiteenuste ja rakenduste jaoks.
- Chrony saab töötada isegi ilma võrguühenduseta. Sellisel juhul saab kohalikku hosti või serverit käsitsi uuendada.
- Chrony suudab toimida NTP-serverina.
Veel kord: NTP on protokoll, mida saab rakendada Linuxi hostis kasutades Chronyt või systemd-timesyncd-d.
NTP, Chrony ja systemd-timesyncd RPM-paketid on saadaval Fedora standardsetes repositooriumites. RPM systemd-udev on tuumamooduli sündmuste haldur, mis on Fedora vaikimisi installitud, kuid ei ole kohustuslik.
Saate installida kõik kolm ja nende vahel vahetada, kuid see tekitab lisamuret. Seega parem mitte. Uuemad Fedora, CentOS ja RHEL versioonid on läinud Chrony kasutusele vaikimisi rakenduseks ning neil on ka systemd-timesyncd. Arvan, et Chrony töötab hästi, pakub paremat liidest kui NTP teenus, annab palju rohkem teavet ja suurendab kontrolli, mis tõenäoliselt meeldib süsteemiadministraatoritele.
NTP teenuste väljalülitamine
Võib juhtuda, et teie hostis on juba NTP teenus käimas. Kui see nii on, peate selle enne millegi muu registreerimist välja lülitama. Mul oli käimas chronyd, seega kasutasin selle peatamiseks ja väljalülitamiseks järgmisi käske. Käitage sobivaid käske igale NTP deemonile, mida oma hostis kasutate:
[root@testvm1 ~]# systemctl disable chronyd ; systemctl stop chronyd
Removed /etc/systemd/system/multi-user.target.wants/chronyd.service.
[root@testvm1 ~]#Kontrollige, et teenus on peatatud ja keelatud:
[root@testvm1 ~]# systemctl status chronyd
● chronyd.service - NTP klient/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 ~]#Kontrollige staatust enne käivitamist
Süsteemi kellade sünkroniseerimise staatuse kontrollimine näitab, kas NTP teenus on käimas. Kuna te pole NTP-d veel käivitanud, annab käsk timesync-status sellele vihje:
[root@testvm1 ~]# timedatectl timesync-status
Failed to query server: Could not activate remote peer.Otsene staatuse päring annab olulist teavet. Näiteks käsk timedatectl ilma argumentide või parameetriteta täidab vaikimisi subkäsku status:
[root@testvm1 ~]# timedatectl status
Kohalik aeg: Reede 2020-05-15 08:43:10 EDT
Ülevaatusaeg: Reede 2020-05-15 12:43:10 UTC
RTC aeg: Reede 2020-05-15 08:43:08
Aja tsoon: America/New_York (EDT, -0400)
Süsteemi kell on sünkroonimata: ei
NTP teenus: mitteaktiivne
RTC kohaliku TZ-s: jah
Hoiatus: Süsteem on konfigureeritud RTC aega lugema kohaliku ajavööndi järgi.
See režiim ei ole täielikult toetatav. See tekitab erinevaid probleeme
ajavööndi muudatuste ja suveaja kohandustega. RTC
aega ei uuendata kunagi, see toetub välistele vahenditele, et seda säilitada.
Kui üldse võimalik, kasutage RTC-d UTC-s, helistades
'timedatectl set-local-rtc 0'.
[root@testvm1 ~]#Nii saate oma hosti jaoks kohaliku aja, UTC aja ja RTC aja. Antud juhul on süsteemi aeg seadistatud ajavööndisse America/New_York (TZ), RTC on seadistatud kohaliku ajavööndi ajale ja NTP teenus ei ole aktiivne. RTC aeg hakkab veidi kõrvale kalduma süsteemi ajast. See on normaalne süsteemide jaoks, mille tunnid ei ole sünkroonitud. Kaldumise suurus hostis sõltub ajast, mis on möödunud alates viimast süsteemi sünkroniseerimist.
Oleme saanud ka hoiatuse RTC kohaliku aja kasutamise kohta – see puudutab ajavööndite muudatusi ja suveaja seadistusi. Kui arvuti on välja lülitatud hetkel, mil muudatused tuleks teha, ei muutu RTC aeg. Kuid serverite või teiste hostide puhul, mis töötavad pidevalt, ei ole see probleem. Lisaks, iga teenus, mis tagab NTP aja sünkroonimise, reguleerib hosti aega juba algse käivitamise etapis, nii et pärast käivitamise lõpetamist saab aeg uuesti õigeks.
Ajavööndi seadmine
Tavaliselt määrate ajavööndi installimisprotseduuri käigus ja te ei pea seda hiljem muutma. Siiski on olukordi, kus ajavööndi muutmine on vajalik. On mitmeid tööriistu, mis saavad aidata. Kohaliku ajavööndi määramiseks kasutab Linux ajavööndi faile. Need failid asuvad kataloogis /usr/share/zoneinfo. Minu ajavööndi süsteem registreerib selle vaikimisi: /etc/ localtime -> ../usr/share/zoneinfo/America/New_York. Kuid selliste detailide teadmine ei ole vajalik ajavööndi muutmiseks.
Peamine on teada oma asukoha ametlikku ajavööndi nime ja vastavat käsku. Näiteks, kui soovite muuta ajavööndit 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. Kontrollisin muudatusi käsuga date, 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 taas muuta oma hosti ajavööndi kohaliku aja järgi.
systemd-timesyncd
Systemd timesync deemon pakub NTP teostust, mida on lihtne hallata systemd kontekstis. See on vaikimisi installitud Fedora ja Ubuntu süsteemidesse. Siiski käivitub see vaikimisi ainult Ubuntu süsteemis. Ma ei ole kindel, kuidas teiste jaotustega on. Saate ise kontrollida:
[root@testvm1 ~]# systemctl status systemd-timesyncdSystemd-timesyncd konfiguratsioon
Systemd-timesyncd konfiguratsioonifail on see /etc/systemd/timesyncd.conf. See on lihtne fail, kus on vähem 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 osa, mis sisaldab lisaks kommentaaridele, on [Time]. Kõik teised read on kommentaarides. Need on vaikeväärtused, neid ei pea muutma (kui teil ei ole selleks põhjuseid). Kui teil ei ole NTP ajaserverit, kasutatakse Fedora vaikevariandina Fedora ajaserverit. Ma tavaliselt lisan oma ajaserveri:
NTP=myntpserverAja sünkroonimine
Systemd-timesyncd käivitamiseks ja aktiveerimiseks saate teha järgmist:
[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 ~]#Riistvarakellade seadistamine
Nii näeb olukord välja pärast timesyncd käivitamist:
[root@testvm2 systemd]# timedatectl
Kohalik aeg: Laup 2020-05-16 14:34:54 EDT
Üldine aeg: Laup 2020-05-16 18:34:54 UTC
RTC aeg: Laup 2020-05-16 14:34:53
Aeg tsoon: America/New_York (EDT, -0400)
Süsteemi kell sünkroniseeritud: jah
NTP teenus: aktiivne
RTC kohalikus TZ: ei Alguses ei ületa RTC ja kohaliku aja (EDT) vahe sekundit ning erinevus suureneb veel paari sekundi võrra järgnevate päevade jooksul. Kuna RTC-l ei ole ajavööndite mõistet, peab käsk timedatectl tegema võrdluse, et määrata vajalik ajavöönd. Kui RTC aeg ei vasta täpselt kohaliku ajale, siis tähendab see, et see ei vasta ka kohalikele ajavöönditele.
Otsides lisainfot, kontrollisin systemd-timesynci olekut ja leidsin järgmise:
[root@testvm2 systemd]# systemctl status systemd-timesyncd.service
● systemd-timesyncd.service - Võrguaegade 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 ajaserveriga 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 Võrguaegade sünkroniseerimine...
May 16 09:57:24 testvm2.both.org systemd-timesyncd[822]: Süsteemi kella aeg ei ole seatud või on tagurpidi hüppanud, taastamine salvestatud ajatempli põhjal: Sat 2020-05-16 13:56:53 EDT
May 16 13:56:53 testvm2.both.org systemd[1]: Alustatud Võrguaegade sünkroniseerimine.
May 16 13:57:56 testvm2.both.org systemd-timesyncd[822]: Esialgne sünkroniseerimine ajaserveriga 163.237.218.19:123 (2.fedora.pool.ntp.org).
[root@testvm2 systemd]#Pöörake tähelepanu päevikute teadetele, milles öeldakse, et süsteemi aeg ei ole seatud või on tagasi hüppanud. Timesync teenus seab süsteemi aja põhjal ajatempli. Ajatemplid toetab timesync demon ja need luuakse iga eduka sünkroniseerimise korral.
Käsk timedatectl ei saa lugeda riistvaralisi kellaaegu süsteemikelladelt. See suudab seada aega ja kuupäeva vaid sisestatud väärtuse põhjal käsurealt. Saate RTC seadistada samale väärtusele, mis on süsteemi aeg, kasutades käsku hwclock:
[root@testvm2 ~]# /sbin/hwclock --systohc --localtime
[root@testvm2 ~]# timedatectl
Kohalik aeg: R 2020-05-18 13:56:46 EDT
Ülevaatusaeg: R 2020-05-18 17:56:46 UTC
RTC aeg: R 2020-05-18 13:56:46
Aeg tsoon: America/New_York (EDT, -0400)
Süsteemi kell tõlgendatud: jah
NTP teenus: aktiivne
RTC kohalikus TZ: jahValik —localtime näitab, et riistvarakell näitab kohalikku aega, mitte UTC-d.
Miks on teil üldse RTC vajalik?
Iga NTP rakendus seab süsteemi kella käivitamisel. Ja miks siis RTC? See ei ole täiesti tõsi: see juhtub ainult siis, kui teil on võrguühendus ajaserveriga. Kuid paljusid süsteeme ei ole pidevat juurdepääsu võrguühendusele, seetõttu on riistvarakellad kasulikud, et Linux saaks nende põhjal süsteemi aega seada. See on parem kui aja käsitsi seadmine, isegi kui see võib reaalajast erineda.
Kokkuvõte
Selles artiklis käsitletakse mõningaid tööriistu kuupäeva, aja ja ajavööndite haldamiseks. Tööriist systemd-timesyncd pakub NTP-kliendi, mis suudab sünkroniseerida kohaliku hosti aega NTP-serveriga. Kuid systemd-timesyncd ei paku serveri teenust, seega, kui vajate NTP-serverit oma võrku, peate kasutama midagi muud - näiteks Chrony, et töötada serverina.
Eelistaksin, et minu võrgus oleks igal teenusel üksainus teostus, seega kasutan Chronyt. Kui teil ei ole vaja kohalikku NTP-serverit või kui te ei pahanda kasutada Chronyt serverina ja systemd-timesyncd-d SNTP-kliendina. Lõppude lõpuks pole vaja kasutada lisafunktsioone Chrony kliendina, kui te olete rahul systemd-timesyncd pakkumisega.
Veel oluline märkus: te ei pea kasutama systemd tööriistu NTP rakendamiseks. Saate kasutada vana versiooni ntpd, Chronyt või muid NTP rakendusi. Systemd koosneb paljusid teenuseid; paljusid neist on võimalik keelata ja kasutada midagi muud nende asemel. See pole suur monoliitne koletis. Võib-olla ei meeldi teile systemd või selle osad, kuid peate tegema põhjendatudotsuse.
Mulle meeldib NTP rakendus systemdis, kuid eelistan Chronyt, kuna see vastab paremini minu vajadustele. See on Linux, beebi -)
Reklaami õigustes
VDSina pakub , suur valik operatsioonisüsteeme automaatseks paigaldamiseks, on võimalik paigaldada igasugune OS oma , mugav enda arendatud ja päevapõhine tasu. Meenutame, et meil on igavesed serverid, mis on tõeliselt ajavabad 😉
Allikas: habr.com
