
A legtöbb ember figyelemmel kíséri az időt. Időben kelünk, hogy végrehajtsuk reggeli rituálénkat, munkába álljunk, ebédszünetet tartsunk, betartsuk a projekthatáridőket, ünnepeljük a születésnapokat és az ünnepeket, repülőre üljünk, és így tovább.
Sőt, némelyikünk a időhöz való viszonyulásával megszállottá válik. Az órám napenergiával működik, és a pontos időt a Nemzeti Szabványügyi és Technológiai Intézettől () Fort Collinsból (Colorado állam) kapja egy hosszúhullámú rádióállomáson keresztül. Az időjelek atomórákhoz szinkronizálódnak, amelyek szintén Fort Collinsban találhatóak. A Fitbit-em szinkronizálódik a telefonommal, amely szintén szinkronizálódik a szerverrel , amely végül az atomórákkal szinkronizálódik.
Az eszközök is figyelemmel kísérik az időt.
Számos ok van arra, hogy az eszközeinknek és számítógépjeinknek pontos időre van szükségük. Például a banki szektorban, a tőzsdéken és más pénzügyi vállalkozásoknál a tranzakciókat megfelelő sorrendben kell végrehajtani, és ehhez kritikus fontosságú a pontos időbeli sorrend.
A telefonjainknak, tableteinknek, autóknak, GPS rendszereknek és számítógépeinknek is pontos idő és dátum beállításra van szüksége. Szeretném, ha a számítógépem asztalán lévő óra a helyes időt mutatná. Szeretném, ha a helyi naptáramban a feljegyzések a megfelelő időben jelenhetnének meg. A pontos idő biztosítja azt is, hogy a cron feladatok és a systemd a megfelelő időben induljanak el.
A dátum és az idő a naplózás szempontjából is fontos, így egyszerűbb megtalálni az egyes naplókat a dátum és idő alapján. Például egyszer DevOps-ban dolgoztam (akkoriban még nem így neveztük), és egy levélkezelő rendszert állítottam be Észak-Karolinában. Akkoriban napi több mint 20 millió levelet kezeltünk. Az elektronikus levelek nyomon követése több szerver segítségével vagy az események pontos sorrendjének meghatározása naplófájlok alapján földrajzilag elosztott hosztokon sokkal egyszerűbb lehet, ha az adott számítógépek időben szinkronizálva vannak.
Az idő egy, de az órák sokfélék.
A Linux hosztoknak figyelembe kell venniük, hogy létezik rendszeridő és RTC idő. Az RTC (Real Time Clock — valós idejű óra) egy kissé furcsa és nem túl pontos elnevezése a hardveróráknak.
A hardverórák folyamatosan működnek, még akkor is, ha a számítógép ki van kapcsolva, használva az alaplapon található akkumulátort. Az RTC fő funkciója az idő tárolása, amikor a pontos időhálózathoz való csatlakozás nem elérhető. Abban az időszakban, amikor nem volt lehetőség csatlakozni az időszolgáltató szerverhez az interneten, minden számítógépnek pontos belső órákkal kellett rendelkeznie. Az operációs rendszereknek az indítás során kellett hivatkozniuk az RTC-re, és a felhasználónak manuálisan kellett beállítania a rendszeridőt a BIOS konfigurációs hardveres interfésze segítségével, hogy biztos legyen abban, hogy helyes.
A hardverórák nem értik a időzónák fogalmát; az RTC csak az időt tárolja, nem az időzónát vagy az UTC-től (Koordinált Világszintű Idő, amely szintén ismert GMT-ként vagy GMT mint Greenwich-i Idő) való eltérést. Az RTC-t egy eszközzel állíthatja be, amelyről később fogok beszélni ebben a cikkben.
A rendszer idő az az idő, amelyet az operációs rendszer megjelenít a GUI óráján az asztalon, a date parancs kimenetében, a naplóbejegyzések időbélyegeiben. Ez vonatkozik a fájlok létrehozásának, módosításának és megnyitásának idejére is.
Az alkalmazott adatokkal — teljes leírás található az RTC-ről és a rendszerről.
Mi van az NTP-vel?
A számítógépek világszerte az NTP-t (Network Time Protocol - hálózati időprotokoll) használják az idő szinkronizálására a standard referenciaórákkal az interneten keresztül NTP szerverek hierarchiája segítségével. Az első szintű időszolgáltatók közvetlenül csatlakoznak a különböző nemzeti időszolgáltatókhoz a nulladik szinten, amelyet műholdas, rádiós vagy akár telefonvonalakon keresztül használnak. A nulladik szintű időszolgáltatók lehetnek atomórák, rádióvevők, amelyek atomórák által sugallt jelekre hangolódnak, vagy GPS-vevők, amelyek pontos időjelek továbbítására használnak GPS műholdakat.
A legtöbb referencia szerveren több ezer nyilvános NTP stratum 2 szerver érhető el, amelyek mindenki számára hozzáférhetők. Sok szervezet és felhasználó (beleértve engem is), akiknek sok hosztjuk van, amely NTP-szerverre van szüksége, inkább saját időszolgáltatót telepít, így csak egy helyi hoszt hivatkozik a stratum 2 vagy 3-ra. Ezután a hálózat többi csomópontját a helyi időszolgáltató használatára állítják be. Az otthoni hálózatom esetében ez egy 3. szintű szerver.
Különböző NTP megvalósítások
Az eredeti NTP megvalósítás az ntpd. Ezt két újabb, a chronyd és a systemd-timesyncd követte. Mindhárom a helyi hoszt idejét szinkronizálja az NTP időszolgáltatóval. A systemd-timesyncd szolgáltatás nem olyan megbízható, mint a chronyd, de a legtöbb célra elegendő. Ha a RTC nincs szinkronizálva, fokozatosan képes korrigálni a rendszeridőt, hogy szinkronizálódjon az NTP szerverrel, amikor a helyi rendszeridő kissé eltér. A systemd-timesync nem használható időszolgáltatóként.
— ez egy NTP megvalósítás, amely két programot tartalmaz: a chronyd démon és egy parancssori felület, amelyet chronyc-nek hívnak. A Chrony rendelkezik néhány olyan funkcióval, amelyek sok esetben egyszerűen pótolhatatlanok:
- A Chrony sokkal gyorsabban képes szinkronizálódni az időszolgáltatóval, mint a régi ntpd szolgáltatás. Ez jónak számít laptopok vagy asztali számítógépek esetében, amelyek nem működnek folyamatosan.
- Képes kompenzálni az óra frekvenciáinak ingadozását, például akkor, amikor a hoszt alvó üzemmódba vált, vagy amikor a frekvencia változása miatt lényegesen változik a frekvencia alacsony terhelés mellett.
- Megoldja az idővel kapcsolatos problémákat, amelyek a nem stabil hálózati kapcsolattal vagy a hálózat túlterhelésével vannak összefüggésben.
- Szabályozza a hálózati késleltetéseket.
- A kezdeti időszinkronizálás után a Chrony soha nem állítja le az órát. Ez stabil és egységes időintervallumokat biztosít számos rendszer szolgáltatás és alkalmazás számára.
- A Chrony offline is működhet. Ebben az esetben a helyi hoszt vagy szerver manuálisan frissíthető.
- A Chrony NTP szerverként is működhet.
Ismét: Az NTP egy protokoll, amely Linux hoston valósítható meg a Chrony vagy a systemd-timesyncd segítségével.
Az NTP, a Chrony és a systemd-timesyncd RPM csomagjai elérhetőek a Fedora alapértelmezett tárolóiban. Az RPM systemd-udev egy kernel eseménykezelő, amely a Fedora alapértelmezés szerint telepítve van, de nem kötelező a használata.
Mindhárom telepíthető, és közöttük válthat, de ez felesleges fejfájást okoz. Ezért jobban tesszük, ha nem így járunk el. A modern Fedora, CentOS és RHEL kiadások a Chronyt választották standard megoldásként, és emellett rendelkeznek systemd-timesyncd-vel is. Úgy vélem, a Chrony jól működik, jobb felületet biztosít, mint az NTP szolgáltatás, sokkal több információt ad, és nagyobb ellenőrzést nyújt, ami minden bizonnyal tetszeni fog a rendszergazdáknak.
NTP szolgáltatások leállítása
Lehet, hogy a hostján már fut egy NTP szolgáltatás. Ha igen, azt ki kell kapcsolnia, mielőtt másra váltana. Nálam a chronyd futott, ezért a következő parancsokat használtam a leállításához és letiltásához. Futtassa a megfelelő parancsokat bármilyen NTP démonhoz, amelyet a hostján használ:
[root@testvm1 ~]# systemctl disable chronyd ; systemctl stop chronyd
Eltávolítva: /etc/systemd/system/multi-user.target.wants/chronyd.service.
[root@testvm1 ~]#Ellenőrizze, hogy a szolgáltatás le van állítva és le van tiltva:
[root@testvm1 ~]# systemctl status chronyd
● chronyd.service - NTP kliens/szerver
Betöltve: betöltve (/usr/lib/systemd/system/chronyd.service; letiltva; gyártói preset: engedélyezve)
Aktív: inaktív (halt)
Dokum: man:chronyd(8)
man:chrony.conf(5)
[root@testvm1 ~]#Állapot ellenőrzés indítás előtt
A rendszeridő-szincronizáció állapota megmutatja, hogy fut-e az NTP szolgáltatás. Mivel még nem indította el az NTP-t, a timesync-status parancs erre utalni fog:
[root@testvm1 ~]# timedatectl timesync-status
Szerver lekérdezése nem sikerült: Nem lehetett aktiválni a távoli felet.A közvetlen állapotlekérdezés fontos információkat ad. Például a timedatectl parancs argumentumok vagy paraméterek nélkül a status alsóparancsot hajtja végre alapértelmezés szerint:
[root@testvm1 ~]# timedatectl status
Helyi idő: 2020-05-15 08:43:10 EDT
Egyetemes idő: 2020-05-15 12:43:10 UTC
RTC idő: 2020-05-15 08:43:08
Időzóna: America/New_York (EDT, -0400)
Rendszeróra szinkronizálva: nem
NTP szolgáltatás: inaktív
RTC helyi időzónában: igen
Figyelmeztetés: A rendszer úgy van konfigurálva, hogy a RTC időt a helyi időzónában olvassa.
Ez a mód nem támogatható teljes mértékben. Különböző problémákat okozhat
az időzóna változásaival és a nyári időszámítással kapcsolatos kiigazításokkal. A RTC
idő soha nem frissül, külső eszközökre támaszkodik a fenntartásához.
Ha egyáltalán lehetséges, használjon UTC RTC-t a
'timedatectl set-local-rtc 0' parancs kiadásával.
[root@testvm1 ~]#Ezáltal megkapja a gazdagépének helyi idejét, az UTC időt és az RTC időt. Ebben az esetben a rendszeridő az America / New_York (TZ) időzónára van állítva, az RTC a helyi időzónában van beállítva, és az NTP szolgáltatás nincs aktiválva. Az RTC idő fokozatosan eltér a rendszeridőtől. Ez normális a nem szinkronizált rendszerek esetében. Az eltérés mértéke a gazdagépen a rendszer utolsó szinkronizálása óta eltelt időtől függ.
Arra is figyelmeztetést kaptunk, hogy a RTC használja a helyi időt — ez a különböző időzónák változásaira és a nyári időszámítással kapcsolatos beállításokra vonatkozik. Ha a számítógép ki van kapcsolva abban a pillanatban, amikor módosításokat kell végrehajtani, a RTC idő nem változik. De a folyamatosan működő szerverek vagy más gazdagépek esetében ez egyáltalán nem probléma. Ezen kívül bármely NTP időszinkronizáló szolgáltatás a rendszer beindulásakor is korrigálhatja a gazdagép idejét, így a rendszerindítás befejezését követően az idő újra pontos lesz.
Időzóna beállítása
Általában a telepítési eljárás során adja meg az időzónát, és nincs szüksége annak későbbi módosítására. Azonban előfordulhat, hogy módosítania kell az időzónát. Számos eszköz segíthet ebben. A helyi időzóna meghatározására a Linux olyan időzóna fájlokat használ, amelyek a /usr/share/zoneinfokönyvtárban találhatók. Alapértelmezés szerint a rendszer az alábbiakat állítja be az én időzónámra: /etc/ localtime -> ../usr/share/zoneinfo/America/New_York. De az időzóna megváltoztatásához nem szükséges tudnia az ilyen részleteket.
A legfontosabb — ismernie kell az időzóna hivatalos nevét a tartózkodási helyének megfelelően és a hozzá tartozó parancsot. Mondjuk, szeretné megváltoztatni az időzónát Los Angelesre:
[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/HelsinkiMost már beállíthatja az időzónát. Az időpontok ellenőrzésére használtam a date parancsot, de használhatja a timedatectl parancsot is:
[root@testvm2 ~]# date
Ked 2020. máj. 19. 16:47:49 EDT
[root@testvm2 ~]# timedatectl set-timezone America/Los_Angeles
[root@testvm2 ~]# date
Ked 2020. máj. 19. 13:48:23 PDT
[root@testvm2 ~]#Most ismét megváltoztathatja a gazda időzónáját a helyi időre.
systemd-timesyncd
A systemd timesync démon NTP implementációt biztosít, amelyet könnyen kezelhet a systemd kontextusában. Alapértelmezés szerint telepítve van a Fedora és az Ubuntu rendszerekben. Azonban alapértelmezés szerint csak az Ubuntu alatt indul. A többi disztribúcióval kapcsolatban nem vagyok biztos. Ellenőrizheti saját rendszerén:
[root@testvm1 ~]# systemctl status systemd-timesyncdA systemd-timesyncd konfigurálása
A systemd-timesyncd konfigurációs fájlja a következő: /etc/systemd/timesyncd.conf. Ez egy egyszerű fájl, amely kevesebb választási lehetőséget tartalmaz, mint a régi NTP és chronyd szolgáltatások. Íme ennek a fájlnak a tartalma (további módosítások nélkül) a Fedora virtuális gépemen:
# 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=2048Az egyetlen szakasz, amit tartalmaz a megjegyzéseken kívül, a [Time]. Az összes többi sor meg van jegyzett. Ezek alapértelmezett értékek, amelyeket nem szükséges megváltoztatni (ha nincs rá ok). Ha nincs NTP idő szerver megadva az NTP = sorban, akkor a Fedora alapértelmezés szerint a Fedora tartalék idő szerverét használja. Általában hozzáadom a saját idő szerveremet:
NTP=myntpserverA timesync futtatása
A systemd-timesyncd elindításához és aktiválásához a következőket kell tenni:
[root@testvm2 ~]# systemctl enable systemd-timesyncd.service
Létrehozva a symlinket: /etc/systemd/system/dbus-org.freedesktop.timesync1.service → /usr/lib/systemd/system/systemd-timesyncd.service.
Létrehozva a symlinket: /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 ~]#A hardveróra beállítása
Íme, hogyan néz ki a helyzet a timesyncd indítása után:
[root@testvm2 systemd]# timedatectl
Helyi idő: 2020. máj. 16. 14:34:54 EDT
Egyetemes idő: 2020. máj. 16. 18:34:54 UTC
RTC idő: 2020. máj. 16. 14:34:53
Időzóna: America/New_York (EDT, -0400)
Rendszeróra szinkronizálva: igen
NTP szolgáltatás: aktív
RTC helyi időzónában: nem Kezdetben a RTC és a helyi idő (EDT) közötti eltérés nem haladja meg az egy másodpercet, és az eltérés a következő néhány napban még pár másodpercre nő. Mivel a RTC-nek nincs időzónákról fogalma, a timedatectl parancsnak összehasonlítást kell végeznie, hogy meghatározza a megfelelő időzónát. Ha a RTC ideje pontosan nem felel meg a helyi időnek, akkor az azt jelenti, hogy a helyi időzónának sem felel meg.
További információk keresése közben ellenőriztem a systemd-timesync állapotát, és a következőket találtam:
[root@testvm2 systemd]# systemctl status systemd-timesyncd.service
● systemd-timesyncd.service - Hálózati időszinkronizáció
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: "Kezdeti szinkronizáció az időszolgáltatóhoz 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]: Hálózati időszinkronizáció indítása...
May 16 09:57:24 testvm2.both.org systemd-timesyncd[822]: A rendszerórát nem állították be, vagy hátra ugrik, helyreállítva a rögzített időbélyeg alapján: Sat 2020-05-16 13:56:53 EDT
May 16 13:56:53 testvm2.both.org systemd[1]: A hálózati időszinkronizáció elindult.
May 16 13:57:56 testvm2.both.org systemd-timesyncd[822]: Kezdeti szinkronizáció az időszolgáltatóhoz 163.237.218.19:123 (2.fedora.pool.ntp.org).
[root@testvm2 systemd]#Figyeljen az eseménynapló üzenetére, amely arról szól, hogy a rendszeridő nincs beállítva vagy hátra ugrott. A Timesync szolgáltatás a időbélyeg alapján állítja be a rendszeridőt. Az időbélyegeket a timesync démon támogatja, és minden sikeres szinkronizáláskor létrejönnek.
A timedatectl parancsnak nincs lehetősége a hardveróra értékét a rendszeróra értékéből venni. Csak a parancssorban megadott érték alapján tudja beállítani az időt és a dátumot. A RTC-t a rendszeridő ugyanarra az értékre állíthatja be a hwclock paranccsal:
[root@testvm2 ~]# /sbin/hwclock --systohc --localtime
[root@testvm2 ~]# timedatectl
Helyi idő: Mon 2020-05-18 13:56:46 EDT
Egyetemleges idő: Mon 2020-05-18 17:56:46 UTC
RTC idő: Mon 2020-05-18 13:56:46
Időzóna: America/New_York (EDT, -0400)
A rendszeróra szinkronizálva: igen
NTP szolgáltatás: aktív
RTC a helyi időzónában: igenA —localtime opció azt jelzi, hogy a hardveróra helyi időt mutat, nem UTC-t.
Miért van szüksége egyáltalán RTC-re?
Bármely NTP-implementáció beállítja a rendszerórát az indítás során. Akkor minek a RTC? Ez nem teljesen így van: ez csak abban az esetben történik, ha van internetkapcsolata az időszolgáltatóval. Azonban sok rendszernek nincs folyamatos internetkapcsolata, így a hardveres órák hasznosak ahhoz, hogy a Linux a későbbiekben a rendszeridőt ezek alapján állítsa be. Ez jobb, mint manuálisan beállítani az időt, még ha az eltér is a valós időtől.
Zárás
Ebben a cikkben néhány eszközt vizsgálunk meg az idő, dátum és időzónák kezelésére. A systemd-timesyncd eszköz egy NTP-klienst biztosít, amely szinkronizálhatja az időt a helyi gépen egy NTP-szerverrel. Azonban a systemd-timesyncd nem biztosít szerverszolgáltatást, tehát ha NTP-szerverre van szükség a hálózatában, akkor valami mást kell használnia — például a Chronyt, hogy szerverként üzemeljen.
Én inkább egyetlen implementációt szeretnék bármely szolgáltatás számára a hálózatomon, ezért a Chronyt használom. Ha nincs szüksége helyi NTP-szerverre, vagy ha nem bánja, hogy a Chronyt használja szerverként, és a systemd-timesyncd-t SNTP-ként. Végül is nincs szükség a Chrony további képességeinek kihasználására klienseként, ha elégedett a systemd-timesyncd funkcióival.
Még egy megjegyzés: nem kötelező a systemd eszközöket használni az NTP implementálásához. Használhat régi verziót, az ntpd-t, a Chronyt, vagy más NTP-implementációt. A systemd sok szolgáltatásból áll; ezek közül sok nem kötelező, ezért kikapcsolhatók, és valami mást is használhatunk helyettük. Ez nem egy hatalmas monolitikus szörnyeteg. Nem muszáj szeretni a systemd-t vagy annak darabjait, de ésszerű döntést kell hoznia.
Tetszik az NTP implementáció a systemd-ben, de a Chronyt részesítem előnyben, mert jobban megfelel az igényeimnek. Ez Linux, baby -)
Hirdetés
A VDSina ajánlja , hatalmas választék operációs rendszerek automatikus telepítésére, lehetőség van bármilyen OS telepítésére a saját , kényelmes fejlesztésünknek megfelelően, és napi díjjal. Ne feledjük, hogy vannak örök érinthetetlen szervereink 😉
Forrás: habr.com
