Watu wengi hufuatilia muda. Tunaamka kwa wakati ili kukamilisha mila zetu za asubuhi na kwenda kazini, kuchukua mapumziko ya mchana, kufikia tarehe za mwisho za mradi, kusherehekea siku za kuzaliwa na likizo, kupanda ndege, na kadhalika.
Zaidi ya hayo: baadhi yetu tunazingatia wakati. Saa yangu inaendeshwa na nishati ya jua na inapata muda sahihi kutoka Taasisi ya Kitaifa ya Viwango na Teknolojia (
Vifaa hufuatilia wakati pia
Kuna sababu nyingi kwa nini vifaa na kompyuta zetu zinahitaji wakati sahihi. Kwa mfano, katika benki, soko la hisa, na biashara nyingine za kifedha, shughuli lazima zifanyike kwa utaratibu unaofaa, na mlolongo sahihi wa wakati ni muhimu kwa hili.
Simu zetu, kompyuta kibao, magari, mifumo ya GPS na kompyuta zote zinahitaji mipangilio sahihi ya wakati na tarehe. Ninataka saa iliyo kwenye eneo-kazi la kompyuta yangu ionyeshe wakati sahihi. Ninataka vikumbusho vionekane kwenye kalenda yangu ya karibu kwa wakati ufaao. Wakati sahihi pia huhakikisha kuwa kazi za cron na systemd zinafanya kazi kwa wakati sahihi.
Tarehe na wakati pia ni muhimu kwa ukataji miti, kwa hivyo ni rahisi kidogo kupata kumbukumbu fulani kulingana na tarehe na wakati. Kwa mfano, mara moja nilifanya kazi katika DevOps (haikuitwa hivyo wakati huo) na nilikuwa nikiweka mfumo wa barua pepe katika jimbo la North Carolina. Tulikuwa tukichakata zaidi ya barua pepe milioni 20 kwa siku. Kufuatilia barua pepe kupitia mfululizo wa seva, au kubainisha mfuatano kamili wa matukio kwa kutumia faili za kumbukumbu kwenye wapangishi waliotawanywa kijiografia, kunaweza kuwa rahisi zaidi ikiwa kompyuta husika zitasawazishwa kwa wakati.
Wakati mmoja - masaa mengi
Wapangishi wa Linux lazima wazingatie kwamba kuna wakati wa mfumo na wakati wa RTC. RTC (Saa ya Wakati Halisi) ni jina la kushangaza kidogo na sio sahihi sana kwa saa ya vifaa.
Saa ya vifaa huendesha kwa kuendelea hata wakati kompyuta imezimwa, kwa kutumia betri kwenye ubao wa mama wa mfumo. Kazi kuu ya RTC ni kuhifadhi wakati wakati muunganisho kwenye seva ya muda haupatikani. Katika siku ambazo haikuwezekana kuunganisha kwenye seva ya muda kwenye mtandao, kila kompyuta ilipaswa kuwa na saa sahihi ya ndani. Mifumo ya uendeshaji ilibidi kufikia RTC wakati wa kuwasha na mtumiaji alilazimika kuweka mwenyewe wakati wa mfumo kwa kutumia kiolesura cha usanidi wa maunzi ya BIOS ili kuhakikisha kuwa ni sahihi.
Saa za vifaa hazielewi dhana ya maeneo ya saa; RTC huhifadhi tu saa, si saa za eneo au kurekebisha kutoka kwa UTC (Coordinated Universal Time, pia inajulikana kama GMT au Greenwich Mean Time). Unaweza kusakinisha RTC kwa kutumia zana ambayo nitashughulikia baadaye katika makala hii.
Muda wa mfumo ni wakati ambao OS huonyesha kwenye saa ya GUI kwenye eneo-kazi lako, katika matokeo ya amri ya tarehe, katika alama za nyakati za kumbukumbu. Hii inatumika pia wakati faili zinaundwa, kurekebishwa na kufunguliwa.
Kwenye ukurasa
NTP ina nini?
Kompyuta ulimwenguni pote hutumia NTP (Itifaki ya Muda wa Mtandao) ili kusawazisha muda wao na saa za kawaida za marejeleo kwenye Mtandao kwa kutumia safu ya seva za NTP. Seva za muda kuu ziko kwenye safu ya 1 na zimeunganishwa moja kwa moja na huduma mbalimbali za wakati za kitaifa kwenye safu ya 0 kupitia setilaiti, redio au hata modemu kupitia laini za simu. Huduma za saa za safu 0 zinaweza kuwa saa ya atomiki, kipokezi cha redio ambacho kimeelekezwa kwa mawimbi yanayopitishwa na saa za atomiki, au kipokezi cha GPS kinachotumia mawimbi sahihi zaidi ya saa yanayotumwa na satelaiti za GPS.
Idadi kubwa ya seva za marejeleo zina seva elfu kadhaa za umma za NTP 2 zilizofunguliwa kwa umma. Mashirika na watumiaji wengi (mimi mwenyewe nikiwemo) walio na wapangishi wengi wanaohitaji seva ya NTP huchagua kusanidi seva zao za wakati ili seva pangishi moja tu ya ndani inafikia tabaka la 2 au 3. Kisha wanasanidi nodi zilizosalia kwenye mtandao ili kutumia za ndani. seva ya wakati. Kwa upande wa mtandao wangu wa nyumbani, hii ni safu ya 3 ya seva.
Utekelezaji mbalimbali wa NTP
Utekelezaji wa awali wa NTP ni ntpd. Kisha iliunganishwa na mbili mpya zaidi, chronyd na systemd-timesyncd. Zote tatu zinasawazisha muda wa mwenyeji wa ndani na seva ya saa ya NTP. Huduma ya systemd-timesyncd si ya kuaminika kama chronyd, lakini ni nzuri ya kutosha kwa madhumuni mengi. Ikiwa RTC haijasawazishwa, inaweza kurekebisha muda wa mfumo hatua kwa hatua ili kusawazisha na seva ya NTP wakati muda wa mfumo wa ndani unasogea kidogo. Huduma ya mfumo wa kusawazisha haiwezi kutumika kama seva ya saa.
- Chrony inaweza kusawazisha na seva ya muda haraka zaidi kuliko huduma ya zamani ya ntpd. Hii ni nzuri kwa kompyuta za mkononi au kompyuta za mezani ambazo hazifanyi kazi kila wakati.
- Inaweza kufidia mabadiliko ya saa, kama vile seva pangishi inapolala au inapoingia katika hali ya usingizi, au saa inapobadilika kutokana na kurukaruka mara kwa mara, ambayo hupunguza kasi ya saa kwenye mizigo ya chini.
- Hutatua matatizo ya muda yanayohusiana na muunganisho wa mtandao usio imara au msongamano wa mtandao.
- Inadhibiti ucheleweshaji wa mtandao.
- Baada ya usawazishaji wa muda wa kwanza, Chrony haachi kamwe saa. Hii hutoa muda thabiti na thabiti kwa huduma na programu nyingi za mfumo.
- Chrony inaweza kufanya kazi hata bila muunganisho wa mtandao. Katika kesi hii, mwenyeji au seva ya ndani inaweza kusasishwa kwa mikono.
- Chrony inaweza kufanya kama seva ya NTP.
Kwa mara nyingine tena, NTP ni itifaki inayoweza kutekelezwa kwenye seva pangishi ya Linux kwa kutumia Chrony au systemd-timesyncd.
NTP, Chrony, na systemd-timesyncd RPMs zinapatikana katika hazina za kawaida za Fedora. Systemd-udev RPM ni meneja wa hafla ya kernel ambayo imewekwa kwa chaguo-msingi kwenye Fedora, lakini ni ya hiari.
Unaweza kufunga zote tatu na kubadili kati yao, lakini hii itaunda maumivu ya kichwa ya ziada. Kwa hivyo ni bora sio. Matoleo ya kisasa ya Fedora, CentOS, na RHEL yamehamia Chrony kama utekelezaji chaguo-msingi, na pia yana systemd-timesyncd. Ninaona Chrony kufanya kazi vizuri, kutoa kiolesura bora kuliko huduma ya NTP, kutoa habari zaidi na udhibiti, ambayo wasimamizi wa mfumo watafurahiya.
Inalemaza Huduma za NTP
Huduma ya NTP inaweza kuwa tayari inaendeshwa kwa mwenyeji wako. Ikiwa ndivyo, unahitaji kuizima kabla ya kubadili kitu kingine. Nilikuwa na chronyd inayoendesha kwa hivyo nilitumia amri zifuatazo kuisimamisha na kuizima. Tekeleza amri zinazofaa kwa daemoni yoyote ya NTP unayoendesha kwenye mwenyeji wako:
[root@testvm1 ~]# systemctl disable chronyd ; systemctl stop chronyd
Removed /etc/systemd/system/multi-user.target.wants/chronyd.service.
[root@testvm1 ~]#
Angalia ikiwa huduma imesimamishwa na imezimwa:
[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 ~]#
Angalia hali kabla ya uzinduzi
Hali ya ulandanishi wa saa ya mfumo hukuruhusu kubainisha kama huduma ya NTP inafanya kazi. Kwa kuwa bado haujaanza NTP, amri ya hali ya timesync itadokeza hivi:
[root@testvm1 ~]# timedatectl timesync-status
Failed to query server: Could not activate remote peer.
Ombi la hali ya moja kwa moja hutoa habari muhimu. Kwa mfano, timedatectl amri bila hoja au chaguzi hutekeleza amri ndogo ya hali kwa chaguo-msingi:
[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 ~]#
Hii itakupa muda wa ndani wa mwenyeji wako, saa ya UTC na saa ya RTC. Katika hali hii, muda wa mfumo umewekwa kwa saa za eneo la Amerika / New_York (TZ), RTC imewekwa kwa saa katika eneo la saa za ndani, na huduma ya NTP haitumiki. Muda wa RTC umeanza kupotoka kidogo kutoka kwa wakati wa mfumo. Hii ni kawaida kwa mifumo ambayo saa zake hazijasawazishwa. Kiasi cha urekebishaji kwenye seva pangishi inategemea muda ambao umepita tangu mfumo ulisawazishwe mara ya mwisho.
Pia tulipokea onyo kuhusu kutumia saa za ndani kwa RTC - hii inatumika kwa mabadiliko ya saa za eneo na mipangilio ya DST. Ikiwa kompyuta imezimwa wakati mabadiliko yanahitajika kufanywa, RTC haitabadilika. Lakini kwa seva au wahudumu wengine wanaoendesha saa nzima, hii sio shida hata kidogo. Kwa kuongeza, huduma yoyote inayotoa usawazishaji wa muda wa NTP itarekebisha muda wa seva pangishi wakati wa awamu ya kwanza ya uanzishaji, kwa hivyo muda utakuwa sahihi tena baada ya uanzishaji kukamilika.
Kuweka eneo la saa
Kawaida, unataja eneo la wakati wakati wa utaratibu wa ufungaji na huna kazi ya kuibadilisha baadaye. Hata hivyo, kuna wakati unahitaji kubadilisha eneo la saa. Kuna zana kadhaa ambazo zinaweza kusaidia. Linux hutumia faili za saa za eneo ili kubaini saa za eneo la mwenyeji. Faili hizi ziko kwenye saraka /usr/share/zoneinfo. Kwa chaguo-msingi, kwa eneo langu la wakati, mfumo unaagiza hivi: /etc/localtime -> ../usr/share/zoneinfo/America/New_York. Lakini hauitaji kujua hila kama hizo ili kubadilisha eneo la saa.
Jambo kuu ni kujua jina rasmi la eneo la eneo lako na amri inayolingana. Hebu tuseme unataka kubadilisha saa za eneo kuwa Los Angeles:
[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>
Sasa unaweza kuweka saa za eneo. Nilitumia amri ya tarehe kuangalia mabadiliko, lakini pia unaweza kutumia 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 ~]#
Sasa unaweza kubadilisha saa za eneo la mwenyeji wako kurudi kwenye saa za ndani.
systemd-timesyncd
Daemon ya systemd timesync hutoa utekelezaji wa NTP ambao ni rahisi kudhibiti katika muktadha wa mfumo. Imewekwa kwa chaguo-msingi kwenye Fedora na Ubuntu. Walakini, huanza tu kwa chaguo-msingi kwenye Ubuntu. Sina hakika kuhusu usambazaji mwingine. Unaweza kujiangalia mwenyewe:
[root@testvm1 ~]# systemctl status systemd-timesyncd
Inasanidi systemd-timesyncd
Faili ya usanidi ya systemd-timesyncd ni /etc/systemd/timesyncd.conf. Hii ni faili rahisi iliyo na chaguo chache kuwezeshwa kuliko NTP ya zamani na huduma za chronyd. Hapa kuna yaliyomo kwenye faili hii (bila marekebisho zaidi) kwenye Fedora VM yangu:
# 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
Sehemu pekee iliyomo, kando na maoni, ni [Muda]. Mistari mingine yote imetolewa maoni. Hizi ndizo maadili chaguo-msingi na hazipaswi kubadilishwa (isipokuwa una sababu ya). Iwapo huna seva ya saa ya NTP iliyofafanuliwa katika mstari wa NTP=, Fedora inabadilika kuwa seva mbadala ya wakati wa Fedora. Kawaida mimi huongeza seva yangu ya wakati:
NTP=myntpserver
Inaendesha usawazishaji wa saa
Unaweza kuanza na kufanya systemd-timesyncd kufanya kazi kama hii:
[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 ~]#
Kuweka saa ya vifaa
Hivi ndivyo hali inavyoonekana baada ya kutumia timesyncd:
[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
Hapo awali, tofauti kati ya RTC na saa ya ndani (EDT) ni chini ya sekunde moja, na tofauti hiyo huongezeka kwa sekunde kadhaa katika siku chache zijazo. Kwa kuwa hakuna dhana ya saa za eneo katika RTC, amri ya timedatectl lazima ilinganishe ili kubainisha saa za eneo sahihi. Ikiwa saa ya RTC hailingani kabisa na saa ya ndani, basi hailingani na saa za eneo pia.
Kutafuta habari zaidi, niliangalia hali ya systemd-timesync na nikapata hii:
[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]#
Angalia ujumbe wa kumbukumbu unaosema kwamba muda wa mfumo haujawekwa au umewekwa upya. Huduma ya Timesync huweka muda wa mfumo kulingana na muhuri wa muda. Mihuri ya muda hudumishwa na daemon ya saa na huundwa kwa kila usawazishaji uliofaulu.
Amri ya timedatectl haina njia ya kuchukua thamani ya saa ya vifaa kutoka kwa saa ya mfumo. Inaweza tu kuweka wakati na tarehe kutoka kwa thamani iliyoingia kwenye mstari wa amri. Unaweza kuweka RTC kwa thamani sawa na wakati wa mfumo kwa kutumia amri ya 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
Chaguo --localtime huambia saa ya maunzi ionyeshe saa za ndani, si UTC.
Kwa nini unahitaji RTC kabisa?
Utekelezaji wowote wa NTP utaweka saa ya mfumo wakati wa kuanza. Na kwa nini basi RTC? Hii sio kweli kabisa: hii itatokea tu ikiwa una muunganisho wa mtandao kwenye seva ya wakati. Hata hivyo, mifumo mingi huwa haina ufikiaji wa muunganisho wa mtandao kila wakati, kwa hivyo saa ya maunzi ni muhimu kwa Linux kutumia kuweka muda wa mfumo. Hii ni bora kuliko kuweka wakati mwenyewe, ingawa inaweza kupotoka kutoka kwa wakati halisi.
Hitimisho
Makala haya yamekagua baadhi ya zana za kuchezea tarehe, saa na saa za maeneo. Zana ya systemd-timesyncd hutoa kiteja cha NTP ambacho kinaweza kusawazisha saa kwenye seva pangishi ya ndani na seva ya NTP. Hata hivyo, systemd-timesyncd haitoi huduma ya seva, kwa hivyo ikiwa unahitaji seva ya NTP kwenye mtandao wako, lazima utumie kitu kingine, kama vile Chrony, ili kufanya kazi kama seva.
Ninapendelea kuwa na utekelezaji mmoja wa huduma yoyote kwenye mtandao wangu, kwa hivyo mimi hutumia Chrony. Ikiwa hauitaji seva ya ndani ya NTP, au ikiwa haujali kutumia Chrony kama seva na systemd-timesyncd kama mteja wa SNTP. Baada ya yote, hakuna haja ya kutumia vipengele vya ziada vya Chrony kama mteja ikiwa umeridhika na utendakazi wa systemd-timesyncd.
Ujumbe mwingine: hauhitajiki kutumia zana za mfumo kutekeleza NTP. Unaweza kutumia toleo la zamani la ntpd, Chrony, au utekelezaji mwingine wa NTP. Baada ya yote, systemd ina idadi kubwa ya huduma; nyingi ni za hiari, kwa hivyo unaweza kuzima na kutumia kitu kingine badala yake. Hii sio monster kubwa ya monolithic. Huenda usipende systemd au sehemu zake, lakini unapaswa kufanya uamuzi sahihi.
Ninapenda utekelezaji wa systemd wa NTP, lakini napendelea Chrony kwa sababu inafaa mahitaji yangu bora. Ni Linux, mtoto -)
Haki za Matangazo
VDSina inatoa
Chanzo: mapenzi.com