Erinevus lehekülje "Arvuti kellaaeg" redaktsioonide vahel

Allikas: Kuutõrvaja
P (Tühistati kasutaja Jj (arutelu) tehtud muudatused ning pöörduti tagasi viimasele muudatusele, mille tegi Triinu)
1. rida: 1. rida:
 +
 
===Arvuti ja aeg===
 
===Arvuti ja aeg===
  
5. rida: 6. rida:
 
Lisaks failidega tegelemisele, on kellaaeg oluline näiteks e-posti, veebiteenuste, autentimise ja logide tekitamise puhul.
 
Lisaks failidega tegelemisele, on kellaaeg oluline näiteks e-posti, veebiteenuste, autentimise ja logide tekitamise puhul.
  
Tänapäeval on maailmas levinud ajaskaalaks UTC (Coordinated Universal Time, lühend tuleb Prantsuskeelest Temps Universel Coordonné), mis põhineb Maa pöörlemisel ümber oma telje, ja Gregoriaani kalender, mis põhineb Maa tiirlemisel ümber päikese. UTC aega levitatakse paljudel erinevatel viisidel, näiteks raadio ja satelliitide, kaasaskantavate kellade abil. Enamuse arvutikasutajate kellaaeg, nn kohalik ehk vööndiaeg, ei lange täpselt kokku etalonajaks peetava UTC ajaga, vaid on sellest täisarvu tundide võrra erinev. Kohalikku aega kasutatakse seepärast, et kell kaksteist oleks päike enamvähem oma kaare haripunktis. Eestis kasutatakse, suveaega ja seega on meie aeg talvel kaks ning suvel kolm tundi UTCst taga. Näiteks kui Inglismaal on kell alles 7 hommikul, on meil kell juba 9 samal hommikul.  
+
Enamuse arvutikasutajate kellaaeg, nn kohalik ehk vööndiaeg, ei lange täpselt kokku etalonajaks peetava UTC (Universal Time Correctable) ajaga, vaid on sellest täisarvu tundide võrra erinev. Kohalikku aega kasutatakse seepärast, et kell kaksteist oleks päike enamvähem oma kaare haripunktis. Eestis kasutatakse suveaega ja seega on meie aeg talvel kaks ning suvel kolm tundi UTCst taga. Näiteks kui Inglismaal on kell alles 7 hommikul, on meil kell juba 9 samal hommikul (Inglismaal kasutatakse ka suveaega). Linuxi ajatsooni seadmiseks kasutage progammi timeconfig või soovides ise ajatsoonifaile kompilleerida, programmi zic.
  
UTC ajaarvestus lähtub tseesiumi-133 aatomi lõhustumisest ning on praktiliseks kasutamiseks ideaalselt täpne ega sõltu Päikesesüsteemist. Klassikaliselt on pikka aega kasutatud ning tõenäoliselt kasutatakse veel kaua GMT (Greenwinch Mean Time) aega. GMT on keskmine päikeseaeg ja sõltub Maakera pöörlemisest. Kuna Maakera pöörlemine pole ühtlane ja varem või hiljem lähevad UTC ja GMT kellad üksteisest lahku, on kombeks korrigeerida UTC aega vastavaks GMT ajaga siis, kui erinevus ületab üht sekundit. Kui seda mitte teha, siis liiguksid UTC kellad päikeseajast märgatavalt eemale ning see oleks ebamugav.
+
Linuxi puhul saab lihtsasti kontrollida, millisesse ajatsooni on arvuti seadistatud lingi /etc/localtime abil
 +
 
 +
bash# ls -l /etc/localtime
 +
lrwxrwxrwx  1 root    root          36 Mar 25 21:41 /etc/localtime -> /usr/share/zoneinfo/Europe/Tallinn
 +
 
 +
Vajadusel võib lingi /etc/localtime suunata ümber mõnele teisele asukohale.
 +
 
 +
Käesolev kirjatükk selgitab, kuidas seada arvuti tööle selliselt, et tema kellaaeg kalduks võimalikult vähe kõrvale etalonajaks valitud ajast. Seoses UTCga tuleb märkida, et see aeg on seotud tseesiumi-133 aatomiga ning on praktiliseks kasutamiseks ideaalselt täpne ning ei sõltu Päikesesüsteemist. Klassikaliselt on pikka aega kasutatud ning tõenäoliselt kasutatakse veel kaua GMT (Greenwinch Mean Time) aega. GMT on keskmine päikeseaeg ja sõltub Maakera pöörlemisest. Kuna Maakera pöörlemine pole ühtlane ja varem või hiljem lähevad UTC ja GMT kellad üksteisest lahku, on kombeks korrigeerida UTC aega vastavaks GMT ajaga, siis kui erinevus ületab üht sekundit. Kui seda mitte teha, siis liiguksid UTC kellad päikeseajast märgatavalt eemale ning see oleks ebamugav.
  
 
Maakera pöörlemise ebaühtlus tuleneb tõusu ja mõõnaga seotud hõõrdumistest. Samuti sellest, et kevadel, mil puud lehte lähevad, kerkib märgatav mass maapinnast eemale, ja sügisel, kui lehed langevad, vastupidi. Sellega kaasneb Maa inertsimomendi muutus.
 
Maakera pöörlemise ebaühtlus tuleneb tõusu ja mõõnaga seotud hõõrdumistest. Samuti sellest, et kevadel, mil puud lehte lähevad, kerkib märgatav mass maapinnast eemale, ja sügisel, kui lehed langevad, vastupidi. Sellega kaasneb Maa inertsimomendi muutus.
17. rida: 25. rida:
 
Personaalarvuti juures kõneldakse kahest kellast:
 
Personaalarvuti juures kõneldakse kahest kellast:
  
# BIOSi kell ehk nn raua kell (ingl. k. hardware clock)  
+
    * BIOSi kell ehk nn raua kell (ingl. k. hardware clock) - seda aega liigutab patarei, mis töötab aastaid ja tagab, et kell käiks ka siis, kui arvuti
 +
      pole voolu all. BIOSi kellaaega saab näha andes käsu
  
Enamikku tänapäeva arvutitesse on sisse ehitatud kvartsgeneraator ja riistvaraline loendur, mis katkestab protsessori töö millisekundites mõõdetavate ajaperioodide järel. Igal katkestusel suurendatakse arvuti sisemist kellaaega ühe ühiku ehk "tiksu" võrra (tick). Seda kellaaega saavad soovi korral kasutada programmid; neil on võimalus seda ka muuta. Osa operatsioonisüsteeme (enamik unixilaadseid) oskavad selle "tiksu" pikkust tarkvaraliselt suurendada või vähendada, et kompenseerida kvartsgeneraatori ebatäpsust. Biosi aega liigutab patarei, mis töötab aastaid ja tagab, et kell käiks ka siis, kui arvuti pole voolu all. BIOSi kellaaega saab näha käsuga
+
      bash~$ hwclock --show
  
$ hwclock --show
+
      Võimalik, et te peate käivitamisel näitama programmi nime koos teega, so /sbin/hwclock.
Thu 29 Oct 2009 05:17:24 PM EET  -0.662560 seconds
+
    * operatsioonisüsteemi kell - see kell põhineb raua kellal, kuid ei pruugi sellega kokku langeda. Tarkvaraliselt saab süsteemi aega ka automaatselt
 +
      korrigeerida kui näiteks raua kellal on omadus maha jääda. Enamus programme kasutab operatsioonisüsteemi aega.
  
Võimalik, et te peate selle käsu käivitamisel näitama programmi nime koos teega, näiteks /sbin/hwclock.
+
      bash~$ date
  
# operatsioonisüsteemi kell - see kell põhineb raua kellal, kuid ei pruugi sellega kokku langeda. Tarkvaraliselt saab süsteemi aega ka automaatselt korrigeerida kui näiteks raua kellal on omadus maha jääda. Enamus programme kasutab operatsioonisüsteemi aega.
+
Neid kahte kella saab seada juurkasutaja järgmiselt:
  
$ date
+
Operatsioonisüsteemi kell
  
Arvuti kella ebatäpsus tekib arvuti enda riistvara ja tarkvara viivitustest ja sisemise generaatori käigu ebaühtlusest mille täpsus sõltub emaplaadil oleva kellakristalli täpsusest/kvaliteedist, mis omakorda sõltub tootjast ja tema kvaliteedikontrollist. On mitmeid tänapäevaseid arvuteid, millel kell üsna täpne püsib ja samas leidub vanu masinaid, millel kipub üsna valeks minema.
+
bash# date --set="12/31/1999 16:18:30"
Samas ei pruugi kella valeks minemise probleem olla üldse arvuti riistvaralises kellas, vaid valeks läheb ainult operatsioonisüsteemi kell. Nende erinevust saab lihtsasti võrrelda käsuga hwclock. Põhjuste siin kirjapanek läheb pikaks, arvuti erinevate taimerite ja operatsioonisüsteemide kellamajanduse kohta saab hea ülevaate dokumendist: http://www.vmware.com/pdf/vmware_timekeeping.pdf
 
  
Seetõttu tekivad erinevate arvutite kellaaegade vahel tahes-tahtmata erinevused. Mõnda erinevust põhjustavat komponenti saab ennustada, mõni on aga juhuslik suurus ja pole ennustatav - näiteks sisemise generaatori käigu kõikumine.
+
BIOSi kell
  
Neid kahte kella saab seada juurkasutaja järgmiselt:
+
bash# hwclock --systohc
 +
bash# hwclock --set --date="12/31/1999 16:18:30"
 +
bash# hwclock --hctosys
  
Operatsioonisüsteemi kell Linuxi's
+
    * --systohc tähendab, et raua kell seatakse süsteemi kella järgi
 +
    * --set --date="12/31/1999 16:18:30" tähendab, et kella seatakse nagu real näidatud
 +
    * --hctosys tähendab, et süsteemi kell seatakse raua kella järgi
  
# date 1105170209
+
Neid käske kasutades ja näiteks raadiost kellaega kuulates saab ilmselt arvuti kellaaega paljude praktiliste vajaduste rahuldamiseks piisavalt täpselt paika seada.
Thu Nov  5 17:02:00 EET 2009
 
 
 
Operatsioonisüsteemi kell FreeBSD's
 
 
 
# date 0911051702
 
Thu Nov  5 17:02:00 EET 2009
 
  
BIOSi kell
+
Kui teile ei meeldi aga nii kombineerida, siis järgmine, suuremat mugavust ja täpsust võimaldav variant, on kasutada aja serveritena töötavaid interneti arvuteid ning programmi netdate, näiteks madli.ut.ee
  
  # hwclock --systohc
+
  bash# netdate timehost.ut.ee
# hwclock --set --date="12/31/1999 16:18:30"
 
# hwclock --hctosys
 
  
* --systohc tähendab, et raua kell seatakse süsteemi kella järgi
+
Sellise käsu andmiseks peate te tegutsema administraatori õigustes ning tulmusena seatakse teie arvuti süteemi aeg. Programm tuleb kaasa Slackware distributsiooniga.
* --set --date="12/31/1999 16:18:30" tähendab, et kella seatakse nagu real näidatud
 
* --hctosys tähendab, et süsteemi kell seatakse raua kella järgi
 
  
Neid käske kasutades ja näiteks raadiost kellaega kuulates saab ilmselt arvuti kellaaega paljude praktiliste vajaduste rahuldamiseks piisavalt täpselt paika seada.
+
Sarnaselt toimib programm rdate
  
===Arvuti aja seadmine NTPga===
+
bash# rdate -s timehost.ut.ee
  
Selleks, et arvuti kell püsiks pika aja vältel õige, näiteks nädal, tuleb teda regulaarselt võrrelda etalonkellaga ning vajadusel korrigeerida.
+
Kui võtme -s asemel kasutada võtit -p, siis kella ei seata, vaid ainult näidatakse, mis kauge masin ütleb kella olevat. Programm tuleb kaasa RedHati distributsiooniga.
Täpse ajanäidu tagamine arvutis on oma olemuselt keerukas ja pikaajaline protsess, nõudes järjepidevaid mõõtmisi ja erinevatest allikatest saadud mõõtmistulemuste võrdlemist.  
 
  
Tehnilistel põhjustel on võimatu varustada iga täpset aega vajavat seadet näiteks GPS (Global Positioning System) vastuvõtjaga. Küll aga on mõistlik sättida mõned arvutid Internetis tööle kesksete ajaserveritena. Nendelt saavad õiget aega küsida juba suurem hulk sekundaarseid ajaservereid. Reeglina ei küsi "tavalised" arvutid õiget aega otse kesksetelt ehk "primaarsetelt" serveritelt, vaid on klientideks ajaserverite hierarhias ja saavad õiget aega täpsustada sekundaarsete serverite poole pöördudes.
+
===Automaatne aja seadmine NTPga===
  
Õige aja levitamiseks arvutite seas on välja töötatud spetsiaalne protokoll, NTP (Network Time Protocol).  
+
Selleks, et arvuti kell püsiks pika aja vältel õige, näiteks nädal, tuleb teda regulaarselt võrrelda etalonkellaga ning vajadusel korrigeerida.
  
Kõik levinud kellade sünkroniseerimise protokollid kasutavad oma töös sarnast mudelit. Võtnud vastu päringu, saadab ajaserver küsijale oma täpse kellaaja. Päringule vastuse saanud klient salvestab enda kella näidu vastuse saabumise hetkel. Kuid teatavasti liigub info Internetis muutuva kiirusega ja see kiirus ei võrdu enamasti valguse kiirusega ega ole ka lihtsalt arvutatav. Paketi liikumise täpse kiiruse saaks arvutada ainult siis, kui oleks teada (vähemalt) kellade erinevused - kuid seda alles püütakse kindlaks teha. Parim, mis teha annab, on mõõta kogu kulunud aeg päringu väljasaatmisest vastuse saabumiseni ja loota, et pakettide liikumise kiirus on mõlemas suunas enam-vähem sama suur.  
+
Eelmises punktis kirjeldatud programme leidlikult kasutades, näiteks crontabist, on võimalik arvuti kella automaatselt mingi eeskujuks valitud ajaserveriga kooskõlastada. Kui olude sunnil tuleb teil masinat tihti käivitada, siis võib ka kirjeldatud käsud kirjutada arvuti alglaadimiskriptidesse.
  
NTP oluliseks iseloomujooneks on, et arvutid ei püüa oma kellasid vastastikku sünkroniseerida, vaid püüavad saavutada oma kellaaja võimalikult väikest erinevust UTC ajast. Mingi grupi NTP serverite ajad on üksteisele enamasti küllalt lähedal. See ei ole tingitud vastastikusest sünkroniseerimisest, vaid kõikide serverite püüdest saavutada võimalikult täpne UTC aeg.
+
Aja seadmisel on loomulik seda teha sujuvalt, see tähendab mitte järsku liigutada, näiteks kahe sekundi võrra, vaid pigem teha seda viiskümmend korda viie minuti jooksul kuue sekundi tagant, korraga 40 millisekundit.
Seega ei sobi NTP mingi isoleeritud grupi arvutite kellade sünkroniserimiseks, vaid eeldatakse, et kuskil leidub server, mis saab oma aja mingist välisest allikast, näiteks GPS-st.  
 
  
Õiget aega levitatakse läbi ajaserverite hierarhia, kus iga server asub mingis kihis (stratum). Kihi number näitab, kui kaugel asub antud server või klient õige aja välisallikast, näiteks raadiokellast. 1. kihi serverid saavad oma aja välisallikast, 2. kihi serverid 1. kihi serverite käest ja nii edasi. Kihtide arvu maksimumiks on 15. (Madalama kihi serveriks nimetatakse seda, mille kihi number on väiksem.) Iga server valib ühe madalama kihi serveri, mille järgi oma kella sünkroniseerib. Üheks valiku kriteeriumiks on serveri kiht. Püütakse valida vahetule aja-allikale võimalikult lähedal olev server.
+
Sellist sujuvust ja muud pakub spetsiaalne NTP (Network Time Protocol) tarkvara.
  
Seda hierarhiat kujutab skeem
+
NTP kasutamine eeldab kokkulepet üldaktsepteeritava kellaaja etaloni suhtes. Tänapäeval on selleks üldtunnustatult GPS. NTP süsteemis on olemas esimesse, teise, kolmandasse jne kihti (ingl. k. stratum) kuuluvad NTP serverid ning kliendid. Seda hierarhiat kujutab skeem
  
 
   
 
   
105. rida: 106. rida:
 
Enne NTP kasutamist tuleb leida endale sobiv NTP server. Eesti oludes tuleks kasutada teise kihi servereid, soovitatav on valida enda ISP oma:
 
Enne NTP kasutamist tuleb leida endale sobiv NTP server. Eesti oludes tuleks kasutada teise kihi servereid, soovitatav on valida enda ISP oma:
  
Eesti ISP'de (ehk TIX ja/või TLLIX liikmed) ajaserverid 19 august 2006 seisuga, küsida saab serverite infot käsuga ntpdate -d server
+
Eesti ISP'de (ehk TIX ja/või TLLIX liikmed) ajaserverid 19 august 2006 seisuga
  
*ntp.eenet.ee - stratum 1
+
*ntp.eenet.ee - stratum 1
*ntp.uninet.ee - stratum 1
+
*ntp.uninet.ee - stratum 1
*ntp.elion.ee - stratum 1
+
*ntp.elion.ee - stratum 1
*ntp.estpak.ee - parv kus on ntp.elion.ee + 4 stratum 2 serverit
+
*ntp.estpak.ee - parv kus on ntp.elion.ee + 4 stratum 2 serverit
*ntp.norby.ee - stratum 2
+
*ntp.norby.ee - stratum 2
*ntp.zeppelink.net - stratum 2
+
*ntp.zeppelink.net - stratum 2
*ntp.aso.ee - stratum 2
+
*ntp.aso.ee - stratum 2
*ntp.starman.ee - stratum 2, vastab ainult Starmani võrgus
+
*ntp.starman.ee - stratum 2, vastab ainult Starmani võrgus
*ntp.online.ee - stratum 3
+
*ntp.online.ee - stratum 3
  
 
Vabu muumaailma ajaservereid leiab http://www.pool.ntp.org
 
Vabu muumaailma ajaservereid leiab http://www.pool.ntp.org
  
pool.ntp.ee projekti eesmärgiks on luua lihtsalt kasutatav ja töökindel ajateenus, mis hajutaks koormust ja ei lubaks populaarsete ajaserverite üle koormamist. Praegu on selle projektiga liitunud üle 600 serveri.
+
pool.ntp.ee projekti eesmärgiks on luua lihtsalt kasutatav ja töökindel ajateenus, mis hajutaks koormust ja ei lubaks populaarste ajaserverite üle koormamist. Praegu on selle projektiga liitunud üle 600 serveri.
  
.ee-domeenis (Eesti) on selle teenusega liitunud servereid vähe, vt: http://www.pool.ntp.org/zone/ee, seetõttu soovitatakse kasutada Euroopa servereid: http://www.pool.ntp.org/use.html  
+
.ee-domeenis (Eesti) on selle teenusega liitunud servereid vähe, vt: http://www.pool.ntp.org/zone/ee, http://www.pool.ntp.org/user/toomasp, seetõttu soovitatakse kasutada Euroopa servereid: http://www.pool.ntp.org/use.html  
  
  
128. rida: 129. rida:
 
Eeldades, et sobiv tarkvara on teie masinasse juba installeeritud, tuleb esmalt kell panna enamvähem paika, näiteks NTP enda vahenditega, programmiga ntpdate
 
Eeldades, et sobiv tarkvara on teie masinasse juba installeeritud, tuleb esmalt kell panna enamvähem paika, näiteks NTP enda vahenditega, programmiga ntpdate
  
  # ntpdate tartu-gw.bb.eenet.ee
+
  bash# ntpdate tartu-gw.bb.eenet.ee
  
 
NTP konfiguratsioonifail /etc/ntp.conf on lihtsamal juhul selline
 
NTP konfiguratsioonifail /etc/ntp.conf on lihtsamal juhul selline
  
listen on '''ip'''
 
 
  server tartu-gw.bb.eenet.ee
 
  server tartu-gw.bb.eenet.ee
 
  server werro-gw.bb.eenet.ee
 
  server werro-gw.bb.eenet.ee
 
  server paide-gw.bb.eenet.ee
 
  server paide-gw.bb.eenet.ee
 +
driftfile /etc/ntp.driftfile
  
 
Parameetri serveri taga tuleb näidata ülespoole jääv NTP server, kellelt teie hakkate kellaaega saama. Parameetri driftfi järel näidatakse faili nimi, mille NTP ise tekitab töö käigus ja seal olev arv on seotud teie arvuti ebarütmilisusega, mida on vaja NTP töö jätkamiseks, kui näidatud ülemise kihi serverid ajutiselt ei peaks töötama. Ülalpool asuvad serverid tuleks valida nii, et nad on üksteisest sõltumatud, st jälgides NTP hierarhiat, viivad nad välja erinevate GPSi seadmetega ühendatud masinateni.
 
Parameetri serveri taga tuleb näidata ülespoole jääv NTP server, kellelt teie hakkate kellaaega saama. Parameetri driftfi järel näidatakse faili nimi, mille NTP ise tekitab töö käigus ja seal olev arv on seotud teie arvuti ebarütmilisusega, mida on vaja NTP töö jätkamiseks, kui näidatud ülemise kihi serverid ajutiselt ei peaks töötama. Ülalpool asuvad serverid tuleks valida nii, et nad on üksteisest sõltumatud, st jälgides NTP hierarhiat, viivad nad välja erinevate GPSi seadmetega ühendatud masinateni.
141. rida: 142. rida:
 
NTP serveri käivitamine toimub selliselt
 
NTP serveri käivitamine toimub selliselt
  
  # ntpd -l /var/log/ntp.log
+
  bash# ntpd -l /var/log/ntp.log
  
 
kus võtme -l taga on näidatud NTP logi faili nimi.
 
kus võtme -l taga on näidatud NTP logi faili nimi.
147. rida: 148. rida:
 
Kui te muudate serveri konfiguratsiooni, siis on lihtsaim server seisata ning taas käivitada. Seiskamine toimub näiteks protsessi lõpetamisega
 
Kui te muudate serveri konfiguratsiooni, siis on lihtsaim server seisata ning taas käivitada. Seiskamine toimub näiteks protsessi lõpetamisega
  
  # killall ntpd
+
  bash# killall ntpd
  
 
NTP serveril kulub peale käivitamist ivake aega (ca 8 minutit), et sünkroniseeruda endast üleval pool oleva serveriga.
 
NTP serveril kulub peale käivitamist ivake aega (ca 8 minutit), et sünkroniseeruda endast üleval pool oleva serveriga.
153. rida: 154. rida:
 
Programmi ntpq abil saab näha, millised masinad on konfigureeritud teie jaoks NTP serveriteks ja millist neist parasjagu kasutatakse (tärniga tähistatud)
 
Programmi ntpq abil saab näha, millised masinad on konfigureeritud teie jaoks NTP serveriteks ja millist neist parasjagu kasutatakse (tärniga tähistatud)
  
  # ntpq -p ntp.zoo.tartu.ee
+
  bash# ntpq -p ntp.zoo.tartu.ee
 
  remote                  refid          st t when poll reach  delay  offset jitter
 
  remote                  refid          st t when poll reach  delay  offset jitter
 
   ==============================================================================
 
   ==============================================================================
162. rida: 163. rida:
 
Selleks, et näha kus te asute NTP hierarhias, kasutage programmi ntptrace
 
Selleks, et näha kus te asute NTP hierarhias, kasutage programmi ntptrace
  
  # ntptrace ntp.zoo.tartu.ee
+
  bash# ntptrace ntp.zoo.tartu.ee
 
  ntp.zoo.tartu.ee:      stratum 3, offset 0.000010, synch distance 0.02834
 
  ntp.zoo.tartu.ee:      stratum 3, offset 0.000010, synch distance 0.02834
 
  tartu-gw.bb.eenet.ee:  stratum 2, offset 0.000010, synch distance 0.02834
 
  tartu-gw.bb.eenet.ee:  stratum 2, offset 0.000010, synch distance 0.02834
168. rida: 169. rida:
  
 
Programmi väljundist näeme, et masin ntp.zoo.tartu.ee asub ise kolmandas kihis, kusjuures ta suhteb teise kihi masinaga tartu-gw.bb.eenet.ee, mida omakorda korrigeerib ntp.eenet.ee.
 
Programmi väljundist näeme, et masin ntp.zoo.tartu.ee asub ise kolmandas kihis, kusjuures ta suhteb teise kihi masinaga tartu-gw.bb.eenet.ee, mida omakorda korrigeerib ntp.eenet.ee.
 
Ntpdate sarnaselt toimib ka programm rdate
 
 
# rdate -s ntp.eenet.ee
 
 
Kui võtme -s asemel kasutada võtit -p, siis kella ei seata, vaid ainult näidatakse, mis kauge masin ütleb kella olevat.
 
  
 
Kui te olete üksikkasutaja, siis sellega asi piirdub. Aga kui te tekitate näiteks modemi abil ainult lühiajalisi internetti ühendumisi, mis ei kesta piisavalt pikka aega (mõni tund), et tekiks driftfail, siis on teil mõtekas piirduda üldse vaid arvuti kella seadmisega programmi ntpdate abil.
 
Kui te olete üksikkasutaja, siis sellega asi piirdub. Aga kui te tekitate näiteks modemi abil ainult lühiajalisi internetti ühendumisi, mis ei kesta piisavalt pikka aega (mõni tund), et tekiks driftfail, siis on teil mõtekas piirduda üldse vaid arvuti kella seadmisega programmi ntpdate abil.
  
 
Soovides hoida kogu kohaliku arvutivõrgu moodustavate masinate kellad NTP abil õiged, peate kirjeldatud moel tööle seadma oma võrgu ühe arvuti, kohaliku NTP serveri. Ülejäänud arvutid tuleb konfigureerida kohaliku NTP serveri klientideks. See toimub sarnaselt, ülaltoodud konfiguratsioonifail sobib nii NTP serveri kui ka kliendi jaoks. Antud juhul jäävad kohalikud kliendid neljandasse kihti.
 
Soovides hoida kogu kohaliku arvutivõrgu moodustavate masinate kellad NTP abil õiged, peate kirjeldatud moel tööle seadma oma võrgu ühe arvuti, kohaliku NTP serveri. Ülejäänud arvutid tuleb konfigureerida kohaliku NTP serveri klientideks. See toimub sarnaselt, ülaltoodud konfiguratsioonifail sobib nii NTP serveri kui ka kliendi jaoks. Antud juhul jäävad kohalikud kliendid neljandasse kihti.
 
Süsteemide administraatorid peavad hooldatavate arvutite kellade seadmisel lähtuma järgmistest kaalutlustest:
 
 
 
#Soovitav on valida täpse aja allikaks mitu ajaserverit , lähtudes nii nende usaldatavusest kui ka kaugusest. Kui ühendus ajaserveriga katkeb, ei mõju see isegi suhteliselt pika perioodi jooksul katastroofiliselt aja arvestusele.
 
#Tavalisel tööjaamal ehk tavakasutaja arvutil ei soovitata täpset aega küsida vahetult esimese taseme serverilt, sest suure arvu klientide puhul tekib oht server üle koormata. Keelatud on oma kella sünkroniseerida serverite abil, mis ei ole selleks selgesõnaliselt lubatud. Ka avalikuks kasutamiseks mõeldud serverite puhul peetakse heaks tooniks teavitada serveri administraatorit või omanikku tema teenuse kasutamisest.
 
#Ei ole soovitav seada oma kella sama taseme serveri järgi.
 
#Kui administreeritavale domeenile seatakse üles mitu ajaserverit, siis on soovitav igaühele valida erinev madalama taseme ajaserver.
 
 
===Lingid===
 
 
Arvutikellade ning turvalisuse teemadel:
 
 
Track Any Computer on the Internet Using its Clock Skew Fingerprint
 
http://www.lockergnome.com/net/2005/03/04/track-any-computer-on-the-internet-using-its-clock-skew-fingerprint/
 
 
Using Computer Clock Skew to Crack Anonymity Networks
 
http://www.geeknewscentral.com/archives/006703.html
 

Redaktsioon: 9. november 2009, kell 16:30

Arvuti ja aeg

Arvuti, nagu paljud muudki seadmed, toimib ajas. Operatsioonisüsteemil on oma 'ettekujutus' parasjagu käesolevast kellaajast ja sellest, millise kiirusega aeg liigub. Lisaks kasutajale nähtamatuks jäävatele, nö sisemistele toimingutele, mille juures arvuti aega arvestab, näiteks CD-seadmes laserkiire liigutamise tarvis, kasutatakse aega ka näiteks faili moodustamise kellaaja ülestähendamiseks. Esimesel juhul ei ole oluline mitte niivõrd see, mis kuupäev on, kuivõrd arvuti võime teatud 'rütmis' tegutseda. Teisalt on aga nimelt vajalik tagada, et arvuti kell vastaks sellele ajale, mida tädi raadios ütleb.

Lisaks failidega tegelemisele, on kellaaeg oluline näiteks e-posti, veebiteenuste, autentimise ja logide tekitamise puhul.

Enamuse arvutikasutajate kellaaeg, nn kohalik ehk vööndiaeg, ei lange täpselt kokku etalonajaks peetava UTC (Universal Time Correctable) ajaga, vaid on sellest täisarvu tundide võrra erinev. Kohalikku aega kasutatakse seepärast, et kell kaksteist oleks päike enamvähem oma kaare haripunktis. Eestis kasutatakse suveaega ja seega on meie aeg talvel kaks ning suvel kolm tundi UTCst taga. Näiteks kui Inglismaal on kell alles 7 hommikul, on meil kell juba 9 samal hommikul (Inglismaal kasutatakse ka suveaega). Linuxi ajatsooni seadmiseks kasutage progammi timeconfig või soovides ise ajatsoonifaile kompilleerida, programmi zic.

Linuxi puhul saab lihtsasti kontrollida, millisesse ajatsooni on arvuti seadistatud lingi /etc/localtime abil

bash# ls -l /etc/localtime 
lrwxrwxrwx   1 root     root           36 Mar 25 21:41 /etc/localtime -> /usr/share/zoneinfo/Europe/Tallinn

Vajadusel võib lingi /etc/localtime suunata ümber mõnele teisele asukohale.

Käesolev kirjatükk selgitab, kuidas seada arvuti tööle selliselt, et tema kellaaeg kalduks võimalikult vähe kõrvale etalonajaks valitud ajast. Seoses UTCga tuleb märkida, et see aeg on seotud tseesiumi-133 aatomiga ning on praktiliseks kasutamiseks ideaalselt täpne ning ei sõltu Päikesesüsteemist. Klassikaliselt on pikka aega kasutatud ning tõenäoliselt kasutatakse veel kaua GMT (Greenwinch Mean Time) aega. GMT on keskmine päikeseaeg ja sõltub Maakera pöörlemisest. Kuna Maakera pöörlemine pole ühtlane ja varem või hiljem lähevad UTC ja GMT kellad üksteisest lahku, on kombeks korrigeerida UTC aega vastavaks GMT ajaga, siis kui erinevus ületab üht sekundit. Kui seda mitte teha, siis liiguksid UTC kellad päikeseajast märgatavalt eemale ning see oleks ebamugav.

Maakera pöörlemise ebaühtlus tuleneb tõusu ja mõõnaga seotud hõõrdumistest. Samuti sellest, et kevadel, mil puud lehte lähevad, kerkib märgatav mass maapinnast eemale, ja sügisel, kui lehed langevad, vastupidi. Sellega kaasneb Maa inertsimomendi muutus.

Kokkuvõttes Maa pöörlemine aeglustub, näiteks saja aastaga muutub aasta 0.8 sekundi võrra pikemaks.

Arvuti aja vaatamine ja seadmine

Personaalarvuti juures kõneldakse kahest kellast:

   * BIOSi kell ehk nn raua kell (ingl. k. hardware clock) - seda aega liigutab patarei, mis töötab aastaid ja tagab, et kell käiks ka siis, kui arvuti
     pole voolu all. BIOSi kellaaega saab näha andes käsu
     bash~$ hwclock --show
     Võimalik, et te peate käivitamisel näitama programmi nime koos teega, so /sbin/hwclock.
   * operatsioonisüsteemi kell - see kell põhineb raua kellal, kuid ei pruugi sellega kokku langeda. Tarkvaraliselt saab süsteemi aega ka automaatselt
     korrigeerida kui näiteks raua kellal on omadus maha jääda. Enamus programme kasutab operatsioonisüsteemi aega.
     bash~$ date

Neid kahte kella saab seada juurkasutaja järgmiselt:

Operatsioonisüsteemi kell

bash# date --set="12/31/1999 16:18:30"

BIOSi kell

bash# hwclock --systohc
bash# hwclock --set --date="12/31/1999 16:18:30"
bash# hwclock --hctosys
   * --systohc tähendab, et raua kell seatakse süsteemi kella järgi
   * --set --date="12/31/1999 16:18:30" tähendab, et kella seatakse nagu real näidatud
   * --hctosys tähendab, et süsteemi kell seatakse raua kella järgi 

Neid käske kasutades ja näiteks raadiost kellaega kuulates saab ilmselt arvuti kellaaega paljude praktiliste vajaduste rahuldamiseks piisavalt täpselt paika seada.

Kui teile ei meeldi aga nii kombineerida, siis järgmine, suuremat mugavust ja täpsust võimaldav variant, on kasutada aja serveritena töötavaid interneti arvuteid ning programmi netdate, näiteks madli.ut.ee

bash# netdate timehost.ut.ee

Sellise käsu andmiseks peate te tegutsema administraatori õigustes ning tulmusena seatakse teie arvuti süteemi aeg. Programm tuleb kaasa Slackware distributsiooniga.

Sarnaselt toimib programm rdate

bash# rdate -s timehost.ut.ee

Kui võtme -s asemel kasutada võtit -p, siis kella ei seata, vaid ainult näidatakse, mis kauge masin ütleb kella olevat. Programm tuleb kaasa RedHati distributsiooniga.

Automaatne aja seadmine NTPga

Selleks, et arvuti kell püsiks pika aja vältel õige, näiteks nädal, tuleb teda regulaarselt võrrelda etalonkellaga ning vajadusel korrigeerida.

Eelmises punktis kirjeldatud programme leidlikult kasutades, näiteks crontabist, on võimalik arvuti kella automaatselt mingi eeskujuks valitud ajaserveriga kooskõlastada. Kui olude sunnil tuleb teil masinat tihti käivitada, siis võib ka kirjeldatud käsud kirjutada arvuti alglaadimiskriptidesse.

Aja seadmisel on loomulik seda teha sujuvalt, see tähendab mitte järsku liigutada, näiteks kahe sekundi võrra, vaid pigem teha seda viiskümmend korda viie minuti jooksul kuue sekundi tagant, korraga 40 millisekundit.

Sellist sujuvust ja muud pakub spetsiaalne NTP (Network Time Protocol) tarkvara.

NTP kasutamine eeldab kokkulepet üldaktsepteeritava kellaaja etaloni suhtes. Tänapäeval on selleks üldtunnustatult GPS. NTP süsteemis on olemas esimesse, teise, kolmandasse jne kihti (ingl. k. stratum) kuuluvad NTP serverid ning kliendid. Seda hierarhiat kujutab skeem


               /--\
              |    | - GPSi satelliit taeva all
               \__/
--------------------------------------------------------------------
             --|--                --|--
1. kiht     |     |              |     |  GPSi seadmega ühendatud 
             -----                -----   arvutid
--------------------------------------------------------------------
2. kiht      -----      -----      -----      -----
            |_____|    |_____|    |_____|    |_____|     stratum 1 arvutite
                                                         kliendid          
---------------------------------------------------------------------
3. kiht     |_____|    |_____| 

Esimese kihi masinate kellaaeg on kõige täpsem, nad on ühenduses etalonkellaga, näiteks GPSi seadme abil satelliitidega. Selliseid masinaid on maailmas vaid mõnedsajad ning tavakasutajal ei ole viisakas nende kliendiks otse asuda.

Teise kihi NTP masin on seatud kliendiks esimese kihi masinale. Tavaliselt näidatakse iga NTP serveri jaoks ära 3 temast ülespoole jäävat serverit, kusjuures töö käigus kasutatakse korraga ühte, kõige sobivamat, aeg-ajalt kontrollides, kas kasutatav on ikka kõige sobivam. Teise kihi masin on omakorda ise serveriks endast allapoole jäävatele kolmanda kihi NTP masinatele.

Kolmanda kihi masinad asuvad ja teenindavad tüüpiliselt kohalikke võrke. Võrkudes asuvad ülejäänud arvutid, nö NTP kliendid, kuuluvad seega neljandasse kihti. Suurte kohalike võrkude puhul soovitatakse tekitada veel üks kohalik tase, viies kiht. Nii tekitatakse mõned asutusesisesed kolmanda kihi NTP serverid, mille klientideks saavad neljanda kihi NTP serverid, mis omakorda teenindavad nö lõppkliente. Kuigi NTP protokoll võimaldab kuuteist kihti, ei soovitata kasutada üle viie-kuue, kuna alumistel kihtidel vead suurenevad.

NTP protokolli kohaselt on võimalik kellaaja hoidmine täpsusega sadu pikosekundeid. Praktiliselt on see Interneti puhul suurusjärgus millisekundeid.

NTP kasutamine

Enne NTP kasutamist tuleb leida endale sobiv NTP server. Eesti oludes tuleks kasutada teise kihi servereid, soovitatav on valida enda ISP oma:

Eesti ISP'de (ehk TIX ja/või TLLIX liikmed) ajaserverid 19 august 2006 seisuga

*ntp.eenet.ee - stratum 1
*ntp.uninet.ee - stratum 1
*ntp.elion.ee - stratum 1
*ntp.estpak.ee - parv kus on ntp.elion.ee + 4 stratum 2 serverit
*ntp.norby.ee - stratum 2
*ntp.zeppelink.net - stratum 2
*ntp.aso.ee - stratum 2
*ntp.starman.ee - stratum 2, vastab ainult Starmani võrgus
*ntp.online.ee - stratum 3

Vabu muumaailma ajaservereid leiab http://www.pool.ntp.org

pool.ntp.ee projekti eesmärgiks on luua lihtsalt kasutatav ja töökindel ajateenus, mis hajutaks koormust ja ei lubaks populaarste ajaserverite üle koormamist. Praegu on selle projektiga liitunud üle 600 serveri.

.ee-domeenis (Eesti) on selle teenusega liitunud servereid vähe, vt: http://www.pool.ntp.org/zone/ee, http://www.pool.ntp.org/user/toomasp, seetõttu soovitatakse kasutada Euroopa servereid: http://www.pool.ntp.org/use.html


Järgnevas vaatleme lihtsalt juhtu, mis kehtib nii NTP kliendi ehk lõppkasutaja, kui ka sellise masina jaoks, mis on omakorda teistele, endast allapoole jääva kihi masinatele NTP serveriks.

Eeldades, et sobiv tarkvara on teie masinasse juba installeeritud, tuleb esmalt kell panna enamvähem paika, näiteks NTP enda vahenditega, programmiga ntpdate

bash# ntpdate tartu-gw.bb.eenet.ee

NTP konfiguratsioonifail /etc/ntp.conf on lihtsamal juhul selline

server tartu-gw.bb.eenet.ee
server werro-gw.bb.eenet.ee
server paide-gw.bb.eenet.ee
driftfile /etc/ntp.driftfile

Parameetri serveri taga tuleb näidata ülespoole jääv NTP server, kellelt teie hakkate kellaaega saama. Parameetri driftfi järel näidatakse faili nimi, mille NTP ise tekitab töö käigus ja seal olev arv on seotud teie arvuti ebarütmilisusega, mida on vaja NTP töö jätkamiseks, kui näidatud ülemise kihi serverid ajutiselt ei peaks töötama. Ülalpool asuvad serverid tuleks valida nii, et nad on üksteisest sõltumatud, st jälgides NTP hierarhiat, viivad nad välja erinevate GPSi seadmetega ühendatud masinateni.

NTP serveri käivitamine toimub selliselt

bash# ntpd -l /var/log/ntp.log

kus võtme -l taga on näidatud NTP logi faili nimi.

Kui te muudate serveri konfiguratsiooni, siis on lihtsaim server seisata ning taas käivitada. Seiskamine toimub näiteks protsessi lõpetamisega

bash# killall ntpd

NTP serveril kulub peale käivitamist ivake aega (ca 8 minutit), et sünkroniseeruda endast üleval pool oleva serveriga.

Programmi ntpq abil saab näha, millised masinad on konfigureeritud teie jaoks NTP serveriteks ja millist neist parasjagu kasutatakse (tärniga tähistatud)

bash# ntpq -p ntp.zoo.tartu.ee
remote                   refid          st t when poll reach   delay   offset jitter
 ==============================================================================
+werro-gw.bb.eenet.ee   ntp.eenet.ee   2 u  253 1024  377   12.284    2.729 0.613
+paide-gw.bb.eenet.ee   ntp.eenet.ee   2 u  322 1024  377    3.262    0.899 0.004
*tartu-gw.bb.eenet.ee   ntp.eenet.ee   1 u  322 1024  377    3.600    1.043 0.018

Selleks, et näha kus te asute NTP hierarhias, kasutage programmi ntptrace

bash# ntptrace ntp.zoo.tartu.ee
ntp.zoo.tartu.ee:      stratum 3, offset 0.000010, synch distance 0.02834
tartu-gw.bb.eenet.ee:  stratum 2, offset 0.000010, synch distance 0.02834
ntp.eenet.ee:        stratum 1, offset 0.000613, synch distance 0.00053, refid 'GPS'

Programmi väljundist näeme, et masin ntp.zoo.tartu.ee asub ise kolmandas kihis, kusjuures ta suhteb teise kihi masinaga tartu-gw.bb.eenet.ee, mida omakorda korrigeerib ntp.eenet.ee.

Kui te olete üksikkasutaja, siis sellega asi piirdub. Aga kui te tekitate näiteks modemi abil ainult lühiajalisi internetti ühendumisi, mis ei kesta piisavalt pikka aega (mõni tund), et tekiks driftfail, siis on teil mõtekas piirduda üldse vaid arvuti kella seadmisega programmi ntpdate abil.

Soovides hoida kogu kohaliku arvutivõrgu moodustavate masinate kellad NTP abil õiged, peate kirjeldatud moel tööle seadma oma võrgu ühe arvuti, kohaliku NTP serveri. Ülejäänud arvutid tuleb konfigureerida kohaliku NTP serveri klientideks. See toimub sarnaselt, ülaltoodud konfiguratsioonifail sobib nii NTP serveri kui ka kliendi jaoks. Antud juhul jäävad kohalikud kliendid neljandasse kihti.