2017年5月11日木曜日

コンピュータの時間について考える。そして時刻同期を chrony に変えてみる。

こんばんわ

(5/12 タイトルが間違っていたので修正しましt 謝:crony → 正:chrony )

みなさんはコンピュータやスマートフォンなどで時刻同期をする設定をしていますよね?もししていないと思っていても、おそらく最近買ったスマートフォンやパソコンであれば勝手に時刻同期をするような設定になっていると思います。あ、「時刻同期ってなに?」と思われた方もいるかもしれません。ちょっと説明します。

時刻同期って何?

はじめに、この後の話はちょっといい加減で、嘘が混ざっているかもしれません。。
お酒の席で話すネタ程度に考えてください。
この話を元に時間に興味を持っていただいたら、もっと真剣に各自調べて見てください(笑)

私はいつも朝6時に起きます。この6時ってやつは何かっていうと、世界のみんなで決めた時間っていう事です。1日っていうのは気球が1周したらという感じです。同じ場所に遠くの星が見えたら1周のようにしています。同じ場所に太陽が来たらでもだいたいいいみたいです。ただ、地球は自分が回るだけではなく、太陽の周りを回っているので、同じ場所に来た時が1周とは限らないのですが、日々生活するには同じ場所に来たらの方が都合がいいです。そんな感じで地球の1周を決めて見てはいますが、今度はその地球の1周もいろんな理由で不確かです。概ね遅くなっていきます。地球の周りに水があるので、そのせいで遅くなります。ただ、大きな地震が起きたりすると、速くなっちゃったりすることもあるようです。でも、だいたい遅くなります。そのうち地球は止まってしまうと思います(これは間違い)。みなさんが持っている時計はだいたい進んでいきませんか?それは時計の時間が一定で、地球の1周が遅くなっていくからです(これも間違い)

まあそんな感じで頑張って地球の1周が決まったら1周を24時間にします。この24時間にするというのもなかなか難しいみたいです。例えば、みなさんは1時間後を正しく指し示すことはできますか?「じゃあ、1時間後にここでまっててね!」と言われたら1時間後に待っていることはできると思いますが(できない人もいますけどね。。)、それはスマートフォンとか、テレビとか、ラジオとかが教えてくれる時間を見て1時間後が分かっただけで、自分では正確に1時間後を見つけたわけではないと思います。実は、コンピュータやスマートフォンも自分だけでは正確に1時間後を指し示すことはできないのです。1秒後もできません。「うそつけ!コンピュータに時間を聞けば教えてくれるじゃないか!」と言われるかもしれませんが、実はコンピュータは、すごくその時間に自信を持っていません。「多分これくらいだと思います。。。」という感じです。だいたいのパソコンやスマートフォンには時計がついています。その時計に「いまなんじ〜?」とBABYMETALのSU-METALのように聞くと答えてくれると思いますが、その時計は自分で勝手に「1秒はこのくらいの長さだから、60回数えたから1分、それを60回数えたから1時間」と決めているだけで、この1秒が、世界でみんなで決めた1秒かどうかわからないのです。

そこで出番となるのが、時刻同期の仕組みです。インターネットや、無線などで世界でみんなで決めた正しい時間(正しいかどうかはわかりませんね。。。みんなで決めただけですね)を教えてもらってそれに合わせる努力をしようという仕組みです。

すごく前置きが長くなってしまったので、本題は短めに。。。。

そんな時刻同期の仕組みとして世界中のコンピュータでよく使われているntpというプログラムがあるのですが、仮想環境上で使うと時刻同期がうまくいかなかったりすることがあります。そこで現れたのが chrony というプログラムです。chrony は少しntpと比べると利用できない機能があるようなのですが、設定していて「あぁ〜このせっていできないのか〜」というのはなかったので利用上特に問題ないのではないかと思います。

ntp は常に電源が入っていて、動作が安定しているコンピュータでどうさせるにはいいのですが、時々すごい負荷になったり、長時間電源が切れたりするようなコンピュータで利用すると時間がずれたりするような気がします。また、仮想環境で動作させると時間がずれていってしまったりします。結局 ntpdate で定期的に時間を合わせたりしなければいけなくなります。ちゃんと設定できればちゃんと動くのでしょう。ただちゃんと設定できない自分にはとてもにが重いです。chrony は常に電源が入っていないコンピュータや仮想環境で動作することなどを考えていて、うまく動作するようになっているようです。

と言いながら本題も前置きが長くなったのですが、ここからが設定です。

私は以下のサイトから 2.4.1 というバージョンをインストールして見ました。

https://chrony.tuxfamily.org

以下に設定をざっと書きます。コピーペースとしたのではなく、
手で入力しているのでスペルミスなどあるかも。。。

1.グループを作る
groupadd chrony

2.ユーザを作る
useradd -g chrony -d /var/lib/chrony -s /sbin/nologin chrony

3.ディレクトリを作りオーナを設定する
mkdir /var/lib/chrony
chown chrony.chrony /var/lib/chrony

mkdir /var/log/chrony
chown chrony.chrony /var/log/chrony

4.ソースを展開してコンパイル インストールする
./configure
make install
make install-docs

5.example ディレクトリのサンプルをコピーする
cp chrony.conf.example1 /etc/chrony.conf

6.ntpd を停止します。
/etc/init.d/ntpd stop

7.chronyd を起動します。
以下のようにして chrony ユーザで起動します。
chronyd -u chrony

私のところでは以下のようなエラーが出ました。
ライブラリ本体が入っていたのですが、
libcap-devel.x86_64が入っていなかったためのようです。

[root@host6 examples]# chronyd -u chrony
dropping root privileges not supported

8.同期を確認します。

chronyc sources

とします。

[root@host6 chrony]# chronyc sources
210 Number of sources = 4
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^+ timpany.srv.jre655.com 2 6 377 6 -542us[ -542us] +/- 61ms
^- y.ns.gin.ntt.net 2 6 377 8 -977us[ -968us] +/- 127ms
^* r031229.203112.miinet.jp 4 6 377 8 -34us[ -25us] +/- 37ms
^- www6339uj.sakura.ne.jp 3 6 377 9 -1521us[-1512us] +/- 187ms

なんかできたみたいです。
前置きがうだうだ長い割に、設定の説明は適当ですみません。




0 件のコメント:

結局 Kindle にケースを買いました。

 こんばんわ 私、最近ほとんど外出しなくなったのですが、妻の買い物に一緒に行って、ぼけーっと待っていたり、病院に行ってぼけーっと待っていたりする機会が多くなり、なんなら家でもボケーっとしていることが非常に多くなったためか、Kindleの出番が結構ありそうです。 前回、タブレットで...