LielÄkÄ daļa cilvÄku seko lÄ«dzi laikam. MÄs ceļamies laicÄ«gi, lai pabeigtu rÄ«ta rituÄlus un dotos uz darbu, ieturÄtu pusdienu pauzi, ievÄrotu projektu termiÅus, svinÄtu dzimÅ”anas dienas un svÄtkus, iekÄptu lidmaŔīnÄ utt.
TurklÄt daži no mums ir apsÄsti ar laiku. Manu pulksteni darbina saules enerÄ£ija, un tas saÅem precÄ«zu laiku no NacionÄlÄ standartu un tehnoloÄ£iju institÅ«ta (
Ierīces arī seko laikam
Ir daudz iemeslu, kÄpÄc mÅ«su ierÄ«cÄm un datoriem ir nepiecieÅ”ams precÄ«zs laiks. PiemÄram, banku, akciju tirgos un citos finanÅ”u uzÅÄmumos darÄ«jumi ir jÄveic pareizÄ secÄ«bÄ, un precÄ«za laika secÄ«ba ir ļoti svarÄ«ga.
MÅ«su tÄlruÅiem, planÅ”etdatoriem, automaŔīnÄm, GPS sistÄmÄm un datoriem ir nepiecieÅ”ami precÄ«zi laika un datuma iestatÄ«jumi. Es vÄlos, lai pulkstenis uz mana datora darbvirsmas rÄda pareizo laiku. Es vÄlos, lai atgÄdinÄjumi tiktu parÄdÄ«ti manÄ vietÄjÄ kalendÄrÄ Ä«stajÄ laikÄ. Pareizs laiks nodroÅ”ina arÄ« cron un systemd uzdevumu izpildi pareizajÄ laikÄ.
Datums un laiks ir svarÄ«gi arÄ« reÄ£istrÄÅ”anai, tÄpÄc ir nedaudz vieglÄk atrast noteiktus žurnÄlus, pamatojoties uz datumu un laiku. PiemÄram, es kÄdreiz strÄdÄju DevOps (tolaik to tÄ nesauca) un izveidoju e-pasta sistÄmu ZiemeļkarolÄ«nas Å”tatÄ. MÄs katru dienu apstrÄdÄjÄm vairÄk nekÄ 20 miljonus e-pasta ziÅojumu. E-pasta izsekoÅ”ana, izmantojot virkni serveru, vai precÄ«zas notikumu secÄ«bas noteikÅ”ana, izmantojot žurnÄlfailus Ä£eogrÄfiski izkliedÄtos resursdatoros, var bÅ«t daudz vienkÄrÅ”Äk, ja attiecÄ«gie datori ir savlaicÄ«gi sinhronizÄti.
Vienu reizi - daudzas stundas
Linux saimniekiem ir jÄÅem vÄrÄ, ka ir sistÄmas laiks un RTC laiks. RTC (Real Time Clock) ir nedaudz dÄ«vains un ne pÄrÄk precÄ«zs aparatÅ«ras pulksteÅa nosaukums.
AparatÅ«ras pulkstenis darbojas nepÄrtraukti, pat ja dators ir izslÄgts, izmantojot sistÄmas mÄtesplatÄ esoÅ”o akumulatoru. RTC galvenÄ funkcija ir saglabÄt laiku, kad savienojums ar laika serveri nav pieejams. Tajos laikos, kad internetÄ nevarÄja izveidot savienojumu ar laika serveri, katram datoram bija jÄbÅ«t precÄ«zam iekÅ”Äjam pulkstenim. OperÄtÄjsistÄmÄm bija jÄpiekļūst RTC sÄknÄÅ”anas laikÄ, un lietotÄjam bija manuÄli jÄiestata sistÄmas laiks, izmantojot BIOS aparatÅ«ras konfigurÄcijas saskarni, lai pÄrliecinÄtos, ka tas ir pareizs.
AparatÅ«ras pulksteÅi nesaprot laika joslu jÄdzienu; RTC saglabÄ tikai laiku, nevis laika joslu vai nobÄ«di no UTC (koordinÄtais universÄlais laiks, kas pazÄ«stams arÄ« kÄ GMT vai GriniÄas laiks). Varat instalÄt RTC, izmantojot rÄ«ku, kuru es apskatÄ«Å”u vÄlÄk Å”ajÄ rakstÄ.
SistÄmas laiks ir laiks, ko OS parÄda jÅ«su darbvirsmas GUI pulkstenÄ«, datuma komandas izvadÄ un žurnÄlu laikspiedolos. Tas attiecas arÄ« uz failu izveidi, modificÄÅ”anu un atvÄrÅ”anu.
LapÄ
Kas notiek ar NTP?
Datori visÄ pasaulÄ izmanto NTP (Network Time Protocol), lai sinhronizÄtu savu laiku ar standarta atsauces pulksteÅiem internetÄ, izmantojot NTP serveru hierarhiju. Galvenie laika serveri atrodas 1. slÄnÄ«, un tie ir tieÅ”i savienoti ar dažÄdiem valsts laika pakalpojumiem 0. slÄnÄ«, izmantojot satelÄ«tu, radio vai pat modemus, izmantojot tÄlruÅa lÄ«nijas. 0. slÄÅa laika pakalpojumi var bÅ«t atompulkstenis, radio uztvÄrÄjs, kas ir noregulÄts uz signÄliem, ko pÄrraida atompulksteÅi, vai GPS uztvÄrÄjs, kas izmanto ļoti precÄ«zus GPS satelÄ«tu pÄrraidÄ«tos pulksteÅa signÄlus.
LielÄkajai daļai atsauces serveru ir vairÄki tÅ«kstoÅ”i publisko NTP stratum 2 serveru, kas ir atvÄrti sabiedrÄ«bai. Daudzas organizÄcijas un lietotÄji (ieskaitot mani) ar daudziem resursdatoriem, kuriem nepiecieÅ”ams NTP serveris, izvÄlas iestatÄ«t savus laika serverus, lai tikai viens vietÄjais resursdators piekļūtu 2. vai 3. slÄnim. PÄc tam viÅi konfigurÄ atlikuÅ”os tÄ«kla mezglus, lai izmantotu vietÄjo. laika serveris. Mana mÄjas tÄ«kla gadÄ«jumÄ tas ir 3. slÄÅa serveris.
DažÄdas NTP implementÄcijas
SÄkotnÄjÄ NTP ievieÅ”ana ir ntpd. PÄc tam tai pievienojÄs divi jaunÄki, chronyd un systemd-timesyncd. Visi trÄ«s sinhronizÄ vietÄjo resursdatora laiku ar NTP laika serveri. Pakalpojums systemd-timesyncd nav tik uzticams kÄ chronyd, taÄu tas ir pietiekami labs lielÄkajai daļai mÄrÄ·u. Ja RTC nav sinhronizÄts, tas var pakÄpeniski pielÄgot sistÄmas laiku, lai sinhronizÄtos ar NTP serveri, kad vietÄjÄs sistÄmas laiks nedaudz mainÄs. Pakalpojumu systemd-timesync nevar izmantot kÄ laika serveri.
- Chrony var sinhronizÄt ar laika serveri daudz ÄtrÄk nekÄ vecais ntpd pakalpojums. Tas ir piemÄrots klÄpjdatoriem vai galddatoriem, kas nedarbojas visu laiku.
- Tas var kompensÄt pulksteÅa svÄrstÄ«bas, piemÄram, kad saimniekdators pÄriet miega režīmÄ vai pÄriet miega režīmÄ, vai kad mainÄs pulkstenis frekvences lÄciena dÄļ, kas palÄnina pulksteÅus pie zemas slodzes.
- Tas atrisina laika problÄmas, kas saistÄ«tas ar nestabilu tÄ«kla savienojumu vai tÄ«kla pÄrslodzi.
- Tas regulÄ tÄ«kla aizkaves.
- PÄc sÄkotnÄjÄs laika sinhronizÄcijas Chrony nekad neaptur pulksteni. Tas nodroÅ”ina stabilus un konsekventus laika posmus daudziem sistÄmas pakalpojumiem un lietojumprogrammÄm.
- Chrony var darboties pat bez tÄ«kla savienojuma. Å ajÄ gadÄ«jumÄ vietÄjo resursdatoru vai serveri var atjauninÄt manuÄli.
- Chrony var darboties kÄ NTP serveris.
Atkal, NTP ir protokols, ko var ieviest Linux resursdatorÄ, izmantojot Chrony vai systemd-timesyncd.
NTP, Chrony un systemd-timesyncd RPM ir pieejami standarta Fedora krÄtuvÄs. Systemd-udev RPM ir kodola notikumu pÄrvaldnieks, kas Fedora ir instalÄts pÄc noklusÄjuma, bet nav obligÄts.
JÅ«s varat instalÄt visus trÄ«s un pÄrslÄgties starp tiem, taÄu tas radÄ«s papildu galvassÄpes. TÄpÄc labÄk to nedarÄ«t. MÅ«sdienu Fedora, CentOS un RHEL laidieni ir pÄrvietoti uz Chrony kÄ noklusÄjuma ievieÅ”anu, un tiem ir arÄ« systemd-timesyncd. Es uzskatu, ka Chrony darbojas labi, nodroÅ”ina labÄku saskarni nekÄ NTP pakalpojums, sniedz daudz vairÄk informÄcijas un kontroles, kas noteikti patiks sistÄmas administratoriem.
NTP pakalpojumu atspÄjoÅ”ana
IespÄjams, ka jÅ«su resursdatorÄ jau darbojas NTP pakalpojums. Ja tÄ, pirms pÄrslÄgÅ”anÄs uz kaut ko citu, tas ir jÄatspÄjo. Man darbojÄs Chronyd, tÄpÄc es izmantoju Å”Ädas komandas, lai to apturÄtu un atspÄjotu. Palaidiet atbilstoÅ”Äs komandas jebkuram NTP dÄmonam, kuru izmantojat savÄ resursdatorÄ:
[root@testvm1 ~]# systemctl disable chronyd ; systemctl stop chronyd
Removed /etc/systemd/system/multi-user.target.wants/chronyd.service.
[root@testvm1 ~]#
PÄrbaudiet, vai pakalpojums ir apturÄts un atspÄjots:
[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 ~]#
Statusa pÄrbaude pirms palaiÅ”anas
SistÄmas pulksteÅa sinhronizÄcijas statuss ļauj noteikt, vai NTP pakalpojums darbojas. TÄ kÄ jÅ«s vÄl neesat sÄcis NTP, komanda timesync-status norÄda uz Å”o:
[root@testvm1 ~]# timedatectl timesync-status
Failed to query server: Could not activate remote peer.
TieÅ”ais statusa pieprasÄ«jums sniedz svarÄ«gu informÄciju. PiemÄram, komanda timedatectl bez argumentiem vai opcijÄm pÄc noklusÄjuma izpilda statusa apakÅ”komandu:
[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 ~]#
Tas iegÅ«s jÅ«su saimniekdatora vietÄjo laiku, UTC laiku un RTC laiku. Å ajÄ gadÄ«jumÄ sistÄmas laiks ir iestatÄ«ts uz Amerikas/Å ujorkas (TZ) laika joslu, RTC ir iestatÄ«ts uz laiku vietÄjÄ laika joslÄ, un NTP pakalpojums nav aktÄ«vs. RTC laiks ir sÄcis nedaudz atŔķirties no sistÄmas laika. Tas ir normÄli sistÄmÄm, kuru pulksteÅi nav sinhronizÄti. NobÄ«des apjoms resursdatorÄ ir atkarÄ«gs no laika, kas pagÄjis kopÅ” sistÄmas pÄdÄjÄs sinhronizÄcijas.
SaÅÄmÄm arÄ« brÄ«dinÄjumu par vietÄjÄ laika izmantoÅ”anu RTC ā tas attiecas uz laika joslu izmaiÅÄm un DST iestatÄ«jumiem. Ja dators tiek izslÄgts, kad jÄveic izmaiÅas, RTC nemainÄ«sies. Bet serveriem vai citiem resursdatoriem, kas darbojas visu diennakti, tÄ nav problÄma. TurklÄt jebkurÅ” pakalpojums, kas nodroÅ”ina NTP laika sinhronizÄciju, pielÄgos resursdatora laiku sÄkotnÄjÄs palaiÅ”anas fÄzÄ, tÄpÄc laiks atkal bÅ«s pareizs pÄc palaiÅ”anas pabeigÅ”anas.
Laika joslas iestatīŔana
Parasti jÅ«s norÄdÄt laika joslu instalÄÅ”anas procedÅ«ras laikÄ, un jums nav uzdevums to vÄlÄk mainÄ«t. TomÄr ir gadÄ«jumi, kad ir jÄmaina laika josla. Ir vairÄki rÄ«ki, kas var palÄ«dzÄt. Linux izmanto laika joslu failus, lai noteiktu resursdatora vietÄjo laika joslu. Å ie faili atrodas direktorijÄ /usr/share/zoneinfo. PÄc noklusÄjuma manai laika joslai sistÄma nosaka Å”o: /etc/localtime -> ../usr/share/zoneinfo/America/New_York. Bet, lai mainÄ«tu laika joslu, jums nav jÄzina Å”Ädas smalkumus.
Galvenais ir zinÄt savas atraÅ”anÄs vietas oficiÄlo laika joslas nosaukumu un atbilstoÅ”o komandu. PieÅemsim, ka vÄlaties mainÄ«t laika joslu uz Losandželosu:
[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>
Tagad jÅ«s varat iestatÄ«t laika joslu. Es izmantoju komandu date, lai pÄrbaudÄ«tu izmaiÅas, taÄu varat arÄ« izmantot 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 ~]#
Tagad varat mainÄ«t saimniekdatora laika joslu atpakaļ uz vietÄjo laiku.
systemd-timesyncd
Systemd timeync dÄmons nodroÅ”ina NTP ievieÅ”anu, ko ir viegli pÄrvaldÄ«t systemd kontekstÄ. Tas pÄc noklusÄjuma ir instalÄts Fedora un Ubuntu. TomÄr tas sÄkas tikai pÄc noklusÄjuma Ubuntu. Es neesmu pÄrliecinÄts par citiem izplatÄ«jumiem. JÅ«s varat pÄrbaudÄ«t pats:
[root@testvm1 ~]# systemctl status systemd-timesyncd
Systemd-timesyncd konfigurÄÅ”ana
Systemd-timesyncd konfigurÄcijas fails ir /etc/systemd/timesyncd.conf. Å is ir vienkÄrÅ”s fails ar iespÄjotu mazÄk opciju nekÄ vecajos NTP un chronyd pakalpojumos. Å eit ir Ŕī faila saturs (bez turpmÄkÄm izmaiÅÄm) manÄ 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
VienÄ«gÄ sadaļa, kas tajÄ ir, bez komentÄriem, ir [Laiks]. Visas pÄrÄjÄs rindas tiek komentÄtas. Å Ä«s ir noklusÄjuma vÄrtÄ«bas, un tÄs nevajadzÄtu mainÄ«t (ja vien jums nav iemesla to darÄ«t). Ja rindÄ NTP= nav definÄts NTP laika serveris, Fedora pÄc noklusÄjuma izmanto rezerves Fedora laika serveri. Es parasti pievienoju savu laika serveri:
NTP=myntpserver
Notiek laika sinhronizÄcija
Varat startÄt un aktivizÄt systemd-timesyncd Å”Ädi:
[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 ~]#
AparatÅ«ras pulksteÅa iestatÄ«Å”ana
LÅ«k, kÄda situÄcija izskatÄs pÄc timesyncd palaiÅ”anas:
[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
SÄkotnÄji starpÄ«ba starp RTC un vietÄjo laiku (EDT) ir mazÄka par sekundi, un nÄkamo dienu laikÄ neatbilstÄ«ba palielinÄs vÄl par pÄris sekundÄm. TÄ kÄ RTC nav laika joslu koncepcijas, komandai timedatectl ir jÄveic salÄ«dzinÄjums, lai noteiktu pareizo laika joslu. Ja RTC laiks precÄ«zi neatbilst vietÄjam laikam, tad tas neatbilst arÄ« vietÄjai laika joslai.
MeklÄjot vairÄk informÄcijas, es pÄrbaudÄ«ju systemd-timesync statusu un atradu Å”o:
[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]#
IevÄrojiet žurnÄla ziÅojumu, kurÄ teikts, ka sistÄmas laiks nav iestatÄ«ts vai ir atiestatÄ«ts. Timesync pakalpojums iestata sistÄmas laiku, pamatojoties uz laikspiedolu. Laikspiedolus uztur laika sinhronizÄcijas dÄmons, un tie tiek izveidoti katrÄ veiksmÄ«gÄ sinhronizÄcijÄ.
Komanda timedatectl nevar Åemt aparatÅ«ras pulksteÅa vÄrtÄ«bu no sistÄmas pulksteÅa. Tas var iestatÄ«t laiku un datumu tikai no komandrindÄ ievadÄ«tÄs vÄrtÄ«bas. Varat iestatÄ«t RTC uz tÄdu paÅ”u vÄrtÄ«bu kÄ sistÄmas laiks, izmantojot komandu 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
Opcija --localtime norÄda, ka aparatÅ«ras pulkstenis rÄda vietÄjo laiku, nevis UTC laiku.
KÄpÄc vispÄr ir vajadzÄ«gs RTC?
Jebkura NTP ievieÅ”ana iestatÄ«s sistÄmas pulksteni startÄÅ”anas laikÄ. Un kÄpÄc tad RTC? TÄ nav pilnÄ«gi taisnÄ«ba: tas notiks tikai tad, ja jums ir tÄ«kla savienojums ar laika serveri. TomÄr daudzÄm sistÄmÄm ne vienmÄr ir piekļuve tÄ«kla savienojumam, tÄpÄc Linux ir noderÄ«gs aparatÅ«ras pulkstenis, ko izmantot sistÄmas laika iestatÄ«Å”anai. Tas ir labÄk nekÄ manuÄli iestatÄ«t laiku, lai gan tas var atŔķirties no reÄllaika.
SecinÄjums
Å ajÄ rakstÄ ir apskatÄ«ti daži rÄ«ki datuma, laika un laika joslu manipulÄÅ”anai. Systemd-timesyncd rÄ«ks nodroÅ”ina NTP klientu, kas var sinhronizÄt laiku vietÄjÄ resursdatorÄ ar NTP serveri. TomÄr systemd-timesyncd nenodroÅ”ina servera pakalpojumu, tÄpÄc, ja jÅ«su tÄ«klÄ ir nepiecieÅ”ams NTP serveris, jums ir jÄizmanto kaut kas cits, piemÄram, Chrony, lai darbotos kÄ serveris.
Es dodu priekÅ”roku vienam pakalpojumam savÄ tÄ«klÄ, tÄpÄc izmantoju Chrony. Ja jums nav nepiecieÅ”ams vietÄjais NTP serveris vai jÅ«s neiebilstat par Chrony izmantoÅ”anu kÄ serveri un systemd-timesyncd kÄ SNTP klientu. Galu galÄ nav nepiecieÅ”ams izmantot Chrony papildu funkcijas kÄ klientam, ja esat apmierinÄts ar systemd-timesyncd funkcionalitÄti.
VÄl viena piezÄ«me: lai ieviestu NTP, jums nav jÄizmanto sistÄmas rÄ«ki. Varat izmantot vecÄku ntpd, Chrony vai citu NTP versiju. Galu galÄ systemd sastÄv no daudziem pakalpojumiem; daudzi no tiem nav obligÄti, tÄpÄc varat tos izslÄgt un tÄ vietÄ izmantot kaut ko citu. Tas nav milzÄ«gs monolÄ«ts briesmonis. Jums var nepatikt sistÄma vai tÄs daļas, taÄu jums vajadzÄtu pieÅemt apzinÄtu lÄmumu.
Man patÄ«k systemd NTP ievieÅ”ana, bet es dodu priekÅ”roku Chrony, jo tÄ labÄk atbilst manÄm vajadzÄ«bÄm. Tas ir Linux, mazulÄ«t -)
Par reklÄmas tiesÄ«bÄm
VDSina piedÄvÄ
Avots: www.habr.com