
De fleste mennesker fÞlger med tiden. Vi stÄr opp i tide for Ä gjennomfÞre vÄre morgenritualer og dra pÄ jobb, ta en lunsjpause, overholde prosjektfrister, feire bursdager og hÞytider, gÄ ombord i et fly, og sÄ videre.
Videre: noen av oss er besatt av tid. Klokkene mine drives av solenergi og fÄr nÞyaktig tid fra National Institute of Standards and Technology () i Fort Collins, Colorado, via en langbÞlge radiostasjon . Tidsignalene synkroniseres med atomklokker, som ogsÄ ligger i Fort Collins. Min Fitbit synkroniserer med telefonen min, som synkroniseres med serveren , som til slutt synkroniseres med atomklokkene.
Enheter fÞlger ogsÄ med tiden.
Det er mange grunner til at enheter og datamaskiner vÄre trenger nÞyaktig tid. For eksempel, i banksektoren, pÄ aksjemarkedene og i andre finansielle virksomheter mÄ transaksjoner utfÞres i riktig rekkefÞlge, og nÞyaktige tidsrekkefÞlger er kritisk viktig.
Telefonene vÄre, nettbrettene, bilene, GPS-systemene og datamaskinene krever riktig innstilling av tid og dato. Jeg vil at klokken pÄ skrivebordet mitt skal vise riktig tid. Jeg vil at pÄminnelser i min lokale kalender skal dukke opp til rett tid. Riktig tid sikrer ogsÄ at cron-jobber og systemd oppgaver kjÞres til riktig tid.
Dato og tid er ogsÄ viktige for logging, slik at det er litt enklere Ä finne forskjellige logger i henhold til dato og tid. For eksempel, en gang jobbet jeg i DevOps (den gangen ble det ikke kalt dette) og konfigurerte et e-postsystem i North Carolina. Vi hÄndterte tidligere mer enn 20 millioner e-poster om dagen. à spore e-post gjennom en serie servere eller bestemme den nÞyaktige rekkefÞlgen av hendelser ved hjelp av loggfiler pÄ geografisk separerte verter kan vÊre mye enklere hvis de aktuelle datamaskinene er synkronisert i tid.
Tiden er Ă©n â klokkene er mange.
Linux-verter mĂ„ vĂŠre klar over at det finnes systemtid og RTC-tid. RTC (Real Time Clock â realtidsklokke) er et litt merkelig og ikke sĂŠrlig nĂžyaktig navn for maskinvareklokker.
Maskinurene jobber kontinuerlig, selv nÄr datamaskinen er slÄtt av, ved Ä bruke batteriet pÄ hovedkortet. Hovedfunksjonen til RTC er Ä holde styr pÄ tiden nÄr forbindelsen til tidsserveren ikke er tilgjengelig. I tider da det ikke var mulig Ä koble til en tidsserver over internett, mÄtte hver datamaskin ha nÞyaktige interne klokker. Operativsystemer mÄtte hente informasjon fra RTC under oppstart, og brukeren mÄtte manuelt sette systemtiden ved hjelp av BIOS-konfigurasjonsgrensesnittet for Ä sikre at den var korrekt.
Maskinurene forstÄr ikke konseptet med tidssoner; RTC lagrer bare tiden, ikke tidssonen eller forskyvningen fra UTC (Koordinert universaltid, som ogsÄ er kjent som GMT eller Greenwich Mean Time). Du kan sette RTC med et verktÞy som jeg vil forklare senere i denne artikkelen.
Systemtiden er tiden som operativsystemet viser pÄ GUI-klokker pÄ skrivebordet, i utdataene fra date-kommandoen, i loggposter. Dette refererer ogsÄ til tidspunktet for opprettelse, endring og Äpning av filer.
PĂ„ siden det er en fullstendig beskrivelse av RTC og systemklokker.
Hva med NTP?
Datamaskiner over hele verden bruker NTP (Network Time Protocol) for Ä synkronisere sin tid med standardreferanseklocker over internett ved hjelp av en hierarkisk struktur av NTP-servere. PrimÊre tidsservere er pÄ nivÄ 1, og de er direkte koblet til ulike nasjonale tids tjenester pÄ nivÄ 0 via satellitt, radio, eller til og med modem over telefonlinjer. Tjenestene pÄ nivÄ 0 kan vÊre atomklokker, en radiomottaker som er innstilt pÄ signaler sendt av atomklokker, eller en GPS-mottaker som bruker hÞypresisjons tids-signaler sendt av GPS-satellitter.
PÄ de fleste referanseserverne er det Äpnet flere tusen offentlige NTP-servere i stratum 2, som er tilgjengelige for alle. Mange organisasjoner og brukere (inkludert meg selv) med et stort antall verter som trenger en NTP-server, foretrekker Ä sette opp sine egne tidsservere, slik at bare én lokal vert kobler seg til stratum 2 eller 3. Deretter konfigurerer de de Þvrige nodene i nettverket til Ä bruke den lokale tidsserveren. I tilfellet med mitt hjemmenettverk er dette en server i nivÄ 3.
Ulike implementasjoner av NTP
Den opprinnelige implementeringen av NTP er ntpd. Deretter kom to nyere, chronyd og systemd-timesyncd. Alle tre synkroniserer tiden pÄ den lokale verten med en NTP-tidsserver. Tjenesten systemd-timesyncd er ikke sÄ pÄlitelig som chronyd, men den er tilstrekkelig for de fleste formÄl. Hvis RTC ikke er synkronisert, kan den gradvis justere systemtiden for Ä synkronisere med NTP-serveren nÄr den lokale systemtiden avviker noe. Tjenesten systemd-timesync kan ikke brukes som en tidsserver.
â det er en NTP-implementering som inneholder to programmer: daemon chronyd og et kommandolinjegrensesnitt kalt chronyc. Chrony har noen funksjoner som i mange tilfeller er helt uunnvĂŠrlige:
- Chrony kan synkronisere med en tidsserver mye raskere enn den gamle tjenesten ntpd. Dette er gunstig for bÊrbare PC-er eller stasjonÊre datamaskiner som ikke er pÄ hele tiden.
- Den kan kompensere for frekvensvibrasjoner, for eksempel nÄr verten gÄr i dvale eller nÄr taktfrekvensen endres pÄ grunn av plutselige endringer i frekvens, som bremser taktfrekvensene ved lave belastninger.
- Den lĂžser tidsproblemer knyttet til ustabile nettverksforbindelser eller nettverksbelastning.
- Den justerer nettverksforsinkelser.
- Etter den innledende tids-synkroniseringen stopper ikke Chrony klokkene. Dette sikrer stabile og konsistente tidsintervaller for mange systemtjenester og applikasjoner.
- Chrony kan fungere selv uten nettverkstilkobling. I sÄ fall kan den lokale verten eller serveren oppdateres manuelt.
- Chrony kan fungere som en NTP-server.
Igjen: NTP er en protokoll som kan implementeres pÄ en Linux-vert ved hjelp av Chrony eller systemd-timesyncd.
RPM-pakker for NTP, Chrony og systemd-timesyncd er tilgjengelige i standardarkivene til Fedora. RPM systemd-udev er en kjernedisponeringseventshÄndterer som er forhÄndsinstallert i Fedora, men som ikke er obligatorisk Ä bruke.
Du kan installere alle tre og bytte mellom dem, men det vil skape unÞdvendige problemer. SÄ det er bedre Ä unngÄ det. Moderne utgivelser av Fedora, CentOS og RHEL har gÄtt over til Chrony som standardimplementering, og i tillegg har de systemd-timesyncd. Jeg synes Chrony fungerer bra, gir et bedre grensesnitt enn NTP-tjenesten, gir mye mer informasjon og Þker kontrollen, noe som definitivt vil glede systemadministratorer.
Deaktivere NTP-tjenester
Det kan vÊre at NTP-tjenesten allerede kjÞrer pÄ verten din. Hvis det er tilfelle, mÄ du deaktivere den fÞr du bytter til noe annet. Jeg hadde chronyd kjÞrende, sÄ jeg brukte fÞlgende kommandoer for Ä stoppe og deaktivere det. KjÞr tilsvarende kommandoer for hvilken som helst NTP-demon du bruker pÄ verten din:
[root@testvm1 ~]# systemctl disable chronyd ; systemctl stop chronyd
Fjernet /etc/systemd/system/multi-user.target.wants/chronyd.service.
[root@testvm1 ~]#Kontroller at tjenesten er stoppet og deaktivert:
[root@testvm1 ~]# systemctl status chronyd
â chronyd.service - NTP-klient/server
Lest inn: lastet (/usr/lib/systemd/system/chronyd.service; deaktivert; leverandĂžrforvalg: aktivert)
Aktiv: inaktiv (dĂžd)
Dokumenter: man:chronyd(8)
man:chrony.conf(5)
[root@testvm1 ~]#Sjekke status fĂžr oppstart
Status for systemklokkesynkronisering forteller deg om NTP-tjenesten kjÞrer. Siden du ennÄ ikke har startet NTP, vil kommandoen timesync-status antyde dette:
[root@testvm1 ~]# timedatectl timesync-status
Kunne ikke spĂžrre server: Kunne ikke aktivere ekstern likemann.En direkte statusforespĂžrsel gir viktig informasjon. For eksempel utfĂžrer kommandoen timedatectl uten argumenter eller parametere standard underkommandoen status:
[root@testvm1 ~]# timedatectl status
Lokal tid: Fri 2020-05-15 08:43:10 EDT
Universell tid: Fri 2020-05-15 12:43:10 UTC
RTC tid: Fri 2020-05-15 08:43:08
Tidsone: America/New_York (EDT, -0400)
Systemklokke synkronisert: nei
NTP-tjeneste: inaktiv
RTC i lokal TZ: ja
Advarsel: Systemet er konfigurert til Ă„ lese RTC-tid i lokal tidssone.
Denne modusen kan ikke fullt ut stĂžttes. Den vil skape ulike problemer
med tidssoneendringer og justeringer for sommertid. RTC
tiden blir aldri oppdatert, den er avhengig av eksterne tjenester for Ă„ opprettholde den.
Hvis det er mulig, bruk RTC i UTC ved Ă„ kalle
'timedatectl set-local-rtc 0'.
[root@testvm1 ~]#Slik fÄr du lokal tid for verten din, UTC-tid og RTC-tid. I dette tilfellet er systemtiden satt til tidssonen America/New_York (TZ), RTC er satt til tiden i lokal tidssone, og NTP-tjenesten er ikke aktiv. RTC-tiden begynner Ä avvike litt fra systemtiden. Dette er normalt for systemer der klokken ikke har vÊrt synkronisert. Omfanget av avviket pÄ verten avhenger av tiden som har gÄtt siden den siste systemsynkroniseringen.
Vi fikk ogsĂ„ en advarsel om bruk av lokal tid for RTC â dette gjelder endringer i tidssone og innstillinger for sommertid. Hvis datamaskinen er slĂ„tt av nĂ„r endringer mĂ„ gjĂžres, vil RTC-tiden ikke endres. Men for servere eller andre verter som kjĂžrer dĂžgnet rundt, er dette overhodet ikke et problem. I tillegg vil enhver tjeneste som gir NTP-tidsynkronisering justere vertens tid ogsĂ„ tidlig i oppstartprosessen, sĂ„ etter at oppstarten er fullfĂžrt, vil tiden igjen vĂŠre korrekt.
Innstilling av tidssone
Vanligvis angir du tidssonen under installasjonsprosedyren, og du har ikke behov for Ă„ endre den senere. Det kan imidlertid vĂŠre tilfeller der det er nĂždvendig Ă„ endre tidssonen. Det finnes flere verktĂžy som kan hjelpe. For Ă„ bestemme den lokale tidssonen bruker Linux vertsfilene for tidssoner. Disse filene finnes i katalogen /usr/share/zoneinfo. Som standard angir systemet for min tidssone dette: /etc/ localtime -> ../usr/share/zoneinfo/America/New_York. Men du trenger ikke Ă„ kjenne til slike detaljer for Ă„ endre tidssonen.
Det viktigste er Ä vite det offisielle navnet pÄ tidssonen for ditt sted og den tilsvarende kommandoen. La oss si at du Þnsker Ä endre tidssonen til Los Angeles:
[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Ä kan du sette tidssonen. Jeg brukte kommandoen date for Ä sjekke endringene, men du kan ogsÄ bruke 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 ~]#Du kan nÄ endre tidssonen pÄ verten din til lokal tid.
systemd-timesyncd
Systemd timesync demon gir en NTP-implementering som er enkel Ä administrere i systemd-konteksten. Den er forhÄndsinstallert pÄ Fedora og Ubuntu. Men den kjÞres bare som standard pÄ Ubuntu. Jeg er ikke sikker pÄ andre distribusjoner. Du kan sjekke selv:
[root@testvm1 ~]# systemctl status systemd-timesyncdKonfigurering av systemd-timesyncd
Konfigurasjonsfilen for systemd-timesyncd er /etc/systemd/timesyncd.conf. Det er en enkel fil med fÊrre alternativer enn det som finnes i de eldre NTP- og chronyd-tjenestene. Her er innholdet i denne filen (uten endringer) pÄ min virtuelle maskin med Fedora:
# 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=2048Den eneste seksjonen den inneholder, bortsett fra kommentarer, er [Time]. Alle andre linjer er kommentert. Dette er standardverdier og trenger ikke Ă„ endres (med mindre du har spesifikke grunner). Hvis du ikke har en NTP-tidsserver definert i NTP=-linjen, brukes en bestemt Linux-tidsserver som standard i Fedora. Jeg pleier Ă„ legge til min tidsserver:
NTP=myntpserverStart timesync
Du kan starte og aktivere systemd-timesyncd slik:
[root@testvm2 ~]# systemctl enable systemd-timesyncd.service
Opprettet symlink /etc/systemd/system/dbus-org.freedesktop.timesync1.service â /usr/lib/systemd/system/systemd-timesyncd.service.
Opprettet 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 ~]#Innstilling av maskinens klokke
Slik ser situasjonen ut etter at timesyncd har blitt kjĂžrt:
[root@testvm2 systemd]# timedatectl
Lokal tid: Sat 2020-05-16 14:34:54 EDT
Universell tid: Sat 2020-05-16 18:34:54 UTC
RTC-tid: Sat 2020-05-16 14:34:53
Tidssone: America/New_York (EDT, -0400)
Systemklokke synkronisert: ja
NTP-tjeneste: aktiv
RTC i lokal TZ: nei Opprinnelig er forskjellen mellom RTC og lokal tid (EDT) ikke mer enn ett sekund, og avviket Þker med et par sekunder de neste dagene. Siden RTC ikke har noe begrep om tidssoner, mÄ timedatectl utfÞre en sammenligning for Ä bestemme hvilken tidssone som er nÞdvendig. Hvis RTC-tiden ikke nÞyaktig samsvarer med lokal tid, betyr det at den heller ikke stemmer overens med lokal tidssone.
I jakten pÄ mer informasjon sjekket jeg statusen til systemd-timesync og fant fÞlgende:
[root@testvm2 systemd]# systemctl status systemd-timesyncd.service
â systemd-timesyncd.service - Nettverkstidsynkronisering
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]#Legg merke til loggmeldingen som indikerer at systemtiden ikke er satt eller har blitt tilbakefÞrt. Timesync-tjenesten setter systemtiden basert pÄ tidsstempler. Tidsstemplene opprettholdes av timesync-daemonen og opprettes ved hver vellykket synkronisering.
Timdatectl-kommandoen har ikke mulighet til Ă„ hente verdien av maskinvareklokken fra systemklokken. Den kan bare sette tid og dato fra verdien som er skrevet inn i kommandolinjen. Du kan sette RTC til den samme verdien som systemtiden ved Ă„ bruke hwclock-kommandoen:
[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: yesAlternativet --localtime betyr at maskinvareklokken viser lokal tid, og ikke UTC.
Hvorfor har du egentlig RTC?
Enhver implementasjon av NTP vil sette systemklokken ved oppstart. SÄ hvorfor er RTC nÞdvendig? Slik er det ikke helt: dette skjer bare hvis du har en nettverksforbindelse til en tidserver. Mange systemer har imidlertid ikke konstant tilgang til en nettverksforbindelse, sÄ maskinvareklokker er nyttige for at Linux skal kunne sette systemtiden basert pÄ dem. Det er bedre enn Ä sette tiden manuelt, selv om den kan avvike fra virkelig tid.
Konklusjon
I denne artikkelen ser vi pÄ noen verktÞy for Ä hÄndtere dato, tid og tidssoner. VerktÞyet systemd-timesyncd gir en NTP-klient som kan synkronisere tiden pÄ lokal vert med en NTP-server. Imidlertid gir ikke systemd-timesyncd en servertjeneste, sÄ hvis du trenger en NTP-server i nettverket ditt, mÄ du bruke noe annet - som Chrony, for Ä fungere som server.
Jeg foretrekker Ä ha en enkelt implementasjon for alle tjenester i nettverket mitt, sÄ jeg bruker Chrony. Hvis du ikke trenger en lokal NTP-server, eller hvis du ikke har noe imot Ä bruke Chrony som server og systemd-timesyncd som SNTP-klient. Det er ikke nÞdvendig Ä bruke de ekstra funksjonene til Chrony som klient hvis du er fornÞyd med funksjonaliteten til systemd-timesyncd.
Et annet poeng: du er ikke pÄlagt Ä bruke systemd-verktÞy for Ä implementere NTP. Du kan bruke den gamle versjonen ntpd, Chrony eller en annen NTP-implementasjon. Systemd bestÄr av mange tjenester; mange av dem er valgfrie, sÄ de kan deaktiveres og erstattes med noe annet. Det er ikke et stort monolittisk monster. Du trenger ikke Ä like systemd eller dens deler, men du mÄ ta en informert beslutning.
Jeg liker NTP-implementeringen i systemd, men jeg foretrekker Chrony fordi det bedre mĂžter mine behov. Det er Linux, kjĂŠre -)
Advertising
VDSina tilbyr , et stort utvalg av operativsystemer for automatisk installasjon, det er mulig Ă„ installere hvilket som helst OS fra egen , praktisk eget utvikling og daglig betaling. La oss minne om at vi har evige servere som definitivt er tidlĂžse đ
Kilde: habr.com
