Synchronizácia času v Linuxe

linux_pas V pred­chá­dza­jú­cich dvoch čas­tiach sme si uká­za­li, že Li­nux a všeo­bec­ne open sour­ce sof­tvér sa ne­na­chá­dza iba v server­och a po­čí­ta­čo­vých sie­ťach, ale aj v iných za­ria­de­niach bež­nej do­má­cej pot­re­by a v ob­las­ti hob­by. Te­raz sa k Li­nuxu a li­nuxové­mu server­u vrá­ti­me otáz­kou jed­né­ho či­ta­te­ľa: „Ako je to v Li­nuxe s ča­som?“ Prá­ve to­mu sa ten­to­raz bu­de­me ve­no­vať.

Tri ča­sy
V pr­vom ra­de si mu­sí­me po­ve­dať, že sí­ce sa ho­vo­rí, že čas je iba je­den, ale nie je to úpl­ne prav­da. Z po­zí­cie in­for­ma­ti­kov poz­ná­me tri ča­sy:

- uni­ver­zál­ny čas
- har­dvé­ro­vý čas
- sys­té­mo­vý čas

Uni­ver­zál­ny čas (Uni­ver­sal Coor­di­na­ted Ti­me – bý­va čas­to ozna­čo­va­ný skrat­kou UTC, po­zor, nie UCT, ako by sa oča­ká­va­lo!) je v pod­sta­te tech­nic­ká ob­do­ba náš­ho kla­sic­ké­ho bež­né­ho ča­su, kto­rý všet­ci poz­ná­me pod ozna­če­ním GMT (Greenwich Main Ti­me). Tým­to ča­som sa ria­di ce­lý tech­nic­ký svet. 

Ale v mno­hých elek­tro­nic­kých za­ria­de­niach sa na­chá­dza­jú eš­te dva ča­sy, lep­šie po­ve­da­né, dva zdro­je ča­su, te­da dvo­je ho­dín. Pr­vé sú har­dvé­ro­vé ho­di­ny (hardware clock). Tie sa na­chá­dza­jú vo vhod­nom elek­tro­nic­kom ob­vo­de. V po­čí­ta­čoch mô­že­me tie­to ho­di­ny náj­sť na zá­klad­nej dos­ke a ob­čas sa im ho­vo­rí aj ho­di­ny BIOS ale­bo CMOS. Sú ne­zá­vis­lé od oko­li­té­ho sve­ta, na­pá­ja­né naj­čas­tej­šie ma­lou ba­té­riou s dl­hou ži­vot­nos­ťou. Pre­to idú aj vte­dy, keď je po­čí­tač (či iné elek­tro­nic­ké za­ria­de­nie) vy­pnu­tý. Po za­pnu­tí za­ria­de­nia sa ba­té­ria do­bi­je. Tie­to ho­di­ny sú ne­zá­vis­lé od aké­ho­koľ­vek sof­tvé­ru, ale vhod­ný prog­ram ich mô­že čí­tať ale­bo poz­me­ňo­vať s pres­nos­ťou jed­nej se­kun­dy. Tak­to zís­ka­né­mu úda­ju ho­vo­rí­me har­dvé­ro­vý čas.

Ope­rač­ný sys­tém (vo všeo­bec­nos­ti je te­raz jed­no, či to bu­de Li­nux ale­bo MS Win­dows, ale­bo nie­čo iné) pri svo­jom štar­te pre­čí­ta údaj z har­dvé­ro­vých ho­dín a nas­ta­ví svo­je vlas­tné vnú­tor­né (sys­té­mo­vé) ho­di­ny. O tie sa za­čne sta­rať sys­tém po­mo­cou pro­ce­so­ra po­čí­ta­ča a je­ho pre­ru­še­ní. Sys­té­mo­vé ho­di­ny bež­ia ne­zá­vis­le od har­dvé­ro­vých ho­dín a mô­že sa stať (a aj sa stá­va), že sa ich úda­je ča­som bu­dú lí­šiť. Tie­to ho­di­ny bež­ia iba vte­dy, ak je po­čí­tač spus­te­ný a beží aj ope­rač­ný sys­tém. Úda­ju sys­té­mo­vých ho­dín ho­vo­rie­va­me sys­té­mo­vý čas. 

Obid­va ča­sy – har­dvé­ro­vý aj sys­té­mo­vý – ma­jú zvlášt­ny tvar. Je to čís­lo udá­va­jú­ce po­čet ubeh­nu­tých se­kúnd od 1. ja­nuá­ra 1970. Do zro­zu­mi­teľ­nej­šej po­do­by ich pre­vá­dza­jú rôz­ne uti­li­ty.

Aby to bo­lo eš­te tro­chu zlo­ži­tej­šie, vstu­pu­jú do tých­to ča­sov nám dob­re zná­me ča­so­vé zó­ny. Za­tiaľ čo har­dvé­ro­vé ho­di­ny ča­so­vá zó­na ne­zau­jí­ma, v sys­té­mo­vých ho­di­nách ide o dô­le­ži­tú vec. Pre­to jad­ro ope­rač­né­ho sys­té­mu udr­žu­je in­for­má­ciu o nas­ta­ve­nom ča­se a je­ho po­su­ne vply­vom ča­so­vej zó­ny. Po­su­nu­tie sa udá­va nap­rík­lad v tva­re GMT+1, čo zna­čí, že čas v Bra­tis­la­ve (zdroj ča­su pre Slo­ven­sko) je o jed­nu ho­di­nu viac ako v Greenwichi.

A aby sme to ne­ma­li jed­no­du­ché, do ce­lé­ho pro­ce­su ča­su vstu­pu­je ume­lo vy­tvo­re­ný let­ný a zim­ný čas. Tak ako s ča­so­vý­mi zó­na­mi aj s pre­cho­dom na let­ný či zim­ný čas si po­ra­dí ope­rač­ný sys­tém.

Ča­so­vé od­chýl­ky
Pred­stav­me si si­tuáciu, že jed­né­ho rá­na nas­ta­ví­me v BIOS-e náš­ho server­a pres­ný har­dvé­ro­vý čas. Ten nas­ta­ví­me pod­ľa ató­mo­vých ho­dín. Hneď po nas­ta­ve­ní spus­tí­me po­čí­tač, kto­rý pri štar­te ope­rač­né­ho sys­té­mu zá­ro­veň nas­ta­ví sys­té­mo­vý čas. Mô­že­me si po­ve­dať, že v tom­to mo­men­te sú všet­ky tri ča­sy – UTC, har­dvé­ro­vý aj sys­té­mo­vý čas – úpl­ne rov­na­ké.

Na dru­hý deň skon­tro­lu­je­me všet­ky tri ča­sy a zis­tí­me, že sa nav­zá­jom od­chy­ľu­jú, te­da ne­se­dí údaj ató­mo­vých ho­dín s har­dvé­ro­vým ča­som a ne­se­dí ani údaj har­dvé­ro­vé­ho ča­su so sys­té­mo­vým. Tie­to od­chýl­ky mô­žu byť rôz­ne veľ­ké, a to aj nie­koľ­ko mi­nút (!) za deň. Ak si pred­sta­ví­me, že sys­té­mo­vý čas sa omeš­ká den­ne čo i len mi­nú­tu a náš server beží neus­tá­le (tak­že ne­syn­chro­ni­zu­je svoj sys­té­mo­vý čas s har­dvé­ro­vým ča­som), za štvrť ro­ka (zhru­ba 120 dní) vznik­ne dvoj­ho­di­no­vé meš­ka­nie. A to by už v mno­hých ap­li­ká­ciách, ako sú rôz­ne fi­nan­čné, da­ta­bá­zo­vé či do­chádz­ko­vé sys­té­my, uro­bi­lo riad­ny chaos. A pri­tom mu­sí­me za­po­čí­tať aj ďal­šiu od­chýl­ku har­dvé­ro­vé­ho ča­su v BIOS-e od sku­toč­né­ho ča­su UTC.

Pre­to je ne­vyh­nut­né tie­to ča­sy nav­zá­jom syn­chro­ni­zo­vať. Vý­hod­né v tej­to si­tuá­cii je, že spo­me­nu­tá od­chýl­ka je sta­bil­ná. Pre­to po­mo­cou vhod­ných prog­ra­mov do­ká­že­me sta­no­ve­nú od­chýl­ku zis­tiť a ko­ri­go­vať.
Naj­prv opí­še­me pos­tup syn­chro­ni­zá­cie har­dvé­ro­vých a sys­té­mo­vých ho­dín nav­zá­jom a po­tom uká­že­me, ako to ce­lé po­ne­chať na prog­ram, kto­rý to všet­ko uro­bí za nás. Aby sme mu však po­ro­zu­me­li, mu­sí­me za­čať ruč­ným nas­ta­vo­va­ním.

Nas­ta­ve­nie har­dvé­ro­vých ho­dín
Na nas­ta­ve­nie har­dvé­ro­vých ho­dín slú­ži prí­kaz hwclock. Tre­ba uviesť, že ten­to prí­kaz sa pou­ží­va hlav­ne pri tých po­čí­ta­čoch, kto­ré nie sú pri­po­je­né do inter­ne­tu. Má nie­koľ­ko veľ­mi uži­toč­ných pa­ra­met­rov. Ak­tuál­ny čas har­dvé­ro­vých ho­dín zis­tí­me pou­ži­tím pa­ra­met­ra show:

[root@server root]# hwclock --show

a dos­ta­ne­me vý­sle­dok

Pi 29. ap­ríl 2011, 12:35:54 CEST  -0.885691 se­conds

Uka­zu­je nas­ta­ve­ný lo­kál­ny dá­tum a čas. Pos­led­né čís­lo je tak­zva­ný drift (vy­svet­lí­me nes­kôr). Ak chce­me čas nas­ta­viť, pou­ži­je­me pa­ra­me­ter set a da­te:

 [root@server root]# hwclock --set --da­te=”04/29/2011 13:25:00”  

For­mát dá­tu­mu je ame­ric­ký, te­da me­siac-deň-rok a  čas v kla­sic­kom 24-ho­di­no­vom for­má­te. Keď už má­me har­dvé­ro­vé ho­di­ny nas­ta­ve­né, mô­že­me vy­ko­nať syn­chro­ni­zá­ciu sys­té­mo­vých ho­dín. Na to slú­ži pa­ra­me­ter hcto­sys (hardware clock to sys­tem ti­me).

[root@server root]# hwclock --hcto­sys  

Ten­to prí­kaz zjed­no­til sys­té­mo­vý čas pod­ľa har­dvé­ro­vé­ho ča­su. Ale ide to aj opač­ne po­mo­cou pa­ra­met­ra sys­tohc:

[root@server root]# hwclock --sys­tohc  

Ten­to prí­kaz zjed­no­tí (nas­ta­ví) har­dvé­ro­vý čas pod­ľa sys­té­mo­vé­ho. Sys­té­mo­vé ho­di­ny vždy rep­re­zen­tu­jú lo­kál­ny čas, ale har­dvé­ro­vé mô­žu byť nas­ta­ve­né aj tak, aby uka­zo­va­li uni­ver­zál­ny čas UTC. To v pod­sta­te zá­vi­sí len od na­šej voľ­by a pot­re­by. V ta­kom prí­pa­de to prí­kaz hwclock ne­vie zis­tiť, a tak mu to mu­sí­me ne­ja­ko ozná­miť. Na to slú­žia pa­ra­met­re  utc ale­bo lo­cal­ti­me.

[root@server root]# hwclock --utc  
[root@server root]# hwclock --lo­cal­ti­me  

Ten pr­vý zna­čí, že har­dvé­ro­vý čas uka­zu­je uni­ver­zál­ny čas, pri tom dru­hom lo­kál­ny čas. Ak žiad­ny z tých­to dvoch pa­ra­met­rov ne­bu­de za­da­ný, pou­ži­je sa ten, kto­rý bol za­da­ný na­pos­le­dy. In­for­má­cie o tom sú ulo­že­né v sú­bo­re /etc/ad­jti­me. Ak ta­ký­to sú­bor neexis­tu­je, pou­ži­tá bu­de voľ­ba lo­kál­ne­ho ča­su. Na­bu­dú­ce bu­de­me pok­ra­čo­vať.

Ďal­šie čas­ti >>

Zdroj: Infoware 6-7/2011



Ohodnoťte článok:
   
 

24 hodín

týždeň

mesiac

Najnovšie články

Li­nux prak­tic­ky ako server úvod
Linux ako server je pomerne zložitá technológia. Jej výhodou je určitá modularita, keď sa nemusí nastaviť celý server naraz, ale postupne. čítať »
 
Syn­chro­ni­zá­cia ča­su v Li­nuxe
V predchádzajúcich dvoch častiach sme si ukázali, že Linux a všeobecne open source softvér sa nenachádza iba v serveroch a počítačových sieťach, ale aj v iných zariadeniach bežnej domácej potreby a v oblasti hobby. čítať »
 
Za­ria­de­nia za­lo­že­né na Li­nuxe
V predchádzajúcej časti sme si spomenuli definície nie - ktorých pojmov z oblasti nášho záujmu, teda Linuxu. Vysvetlili sme si, čo je to Open Source, Public Domain, proprietárny softvér a GNU GPL. Tentoraz ukážeme, ako sa tieto pojmy využívajú v praxi. čítať »
 
Po­jmy z ob­las­ti
Tentoraz na chvíľu trochu odbočíme od bezpečnosti Linuxu a jeho siete. V tejto neštandardnej časti seriálu sa mu budeme venovať len okrajovo. čítať »
 
Bez­peč­nosť bez­drô­to­vých sie­tí II.
V predchádzajúcej časti sme sa začali zaoberať bezpečnosťou bezdrôtových sietí. Poukázali sme na rôzne faktory zneužitia siete, podstatu rizika a vysvetlili sme základné prvky bezpečnosti. čítať »
 
Bez­peč­nosť bez­drô­to­vých sie­tí I.
V predchádzajúcich častiach sme sa venovali bezpečnosti linuxového servera. Riešili sme firewall, bezpečnosť prístupu na internet, zaoberali sme sa demilitarizovanou zónou a podobne. čítať »
 
Údr­žba lo­gov – kon­fi­gu­rá­cia log­ro­ta­te
V predchádzajúcej časti sme sa venovali rotácii logov. Vysvetlili sme princíp ukladania logov, spôsob, ako sa rotujú, a uviedli sme niečo o tom, čo a ako treba nastaviť čítať »
 
Údr­žba lo­gov – ro­tá­cia
V predošlej časti sme sa zaoberali spôsobom logovania informácií na iný alebo vzdialený počítač a ukázali sme, ako riešiť problém s logovaním uzavretých procesov pomocou chroot. čítať »
 
 
 
  Zdieľaj cez Facebook Zdieľaj cez Google+ Zdieľaj cez Twitter Zdieľaj cez LinkedIn Správy z RSS Správy na smartfóne Správy cez newsletter