VirtualBox/Linuxの時刻がずれる の履歴(No.1)
更新- 履歴一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- ソフトウェア/VirtualBox/Linuxの時刻がずれる へ行く。
- 1
VirtualBox にインストールした Debian の時刻がずれてしまいます†
ntp をインストールしてあるにもかかわらず、数十分とか数時間とかずれたままになってしまい、困りました。
ntp はインストール済み†
Linux では ntp デーモンが外部サーバーと日付を同期することで、 常にサーバーの時刻を正しく保つことができます。
ntp は「無理なく」時刻を調整する†
ntp による時刻の調整は「徐々に」行われるのだそうです。
なぜなら、時刻を後戻りさせてしまうと様々なプログラムで重大な不具合が発生しかねません。
逆に勧める場合にも、他のプログラムが5分後に何かをしようと待っているのに、 いきなり10分時計を進めてしまうとおかしなことになりかねません。
ntp は時刻が大きくずれていると自動調整してくれない†
時刻が少しずれた状態であれば、そのように少しずつ調整して正しい時刻に合わせてくれますが、 大きくずれている場合には重大な不具合を生じかねないため時刻の調整が自動では行われなくなってしまうのだそうです。
起動していない時間の長い VirtualBox の場合、ntp が動いていない間に時刻が大きくずれてしまい、 次回起動した際に時間あわせが行われなくなることが頻繁に生じます。
そのような状況では、ntpq の結果が次のようになってしまいます。
$ ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== sv1.localdomain 133.243.238.163 2 u 36 1024 377 5.737 7607316 740244. v157-7-152-213. 10.84.87.146 2 u 1050 1024 376 9.904 7607316 1046855 y.ns.gin.ntt.ne 249.224.99.213 2 u 631 1024 377 5.458 7607317 1046862 x.ns.gin.ntt.ne 249.224.99.213 2 u 8 1024 377 5.567 7607316 740243.
ちなみに、うまくいっているときは、
$ ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== +chobi.paina.jp 131.112.181.48 2 u 9 64 37 5.712 -0.525 5.722 *108.61.223.189. 103.1.106.69 2 u 9 64 37 5.648 -0.131 2.304 -122x215x240x51. 223.255.185.2 2 u 5 64 37 4.469 -6.662 2.750 +sv1.localdomain 133.243.238.163 2 u 3 64 37 5.088 -1.242 1.349
こんなふうに先頭に + * - などが付き、offset もまともな値になっています。
無理矢理合わせる方法†
ntpdate を使うと合わせられます。
使い方は、'sudo ntpdate (サーバー名...)' となっていて、適当なサーバー名を指定する必要があります。
サーバー名を /etc/ntp.conf から取ってくるなら、
$ sudo ntpdate `grep -E '^server ' /etc/ntp.conf | sed -E 's/server ([^ ]*)( .*)?/\1/g'`
とすればOKです。
起動時に強制的に時刻を合わせたい†
もっと良い方法がありそうではあるのですが、 他に思いつかなかったため /etc/init.d/ntp の start に、
/usr/sbin/ntpdate `grep -E '^server ' /etc/ntp.conf | sed -E 's/server ([^ ]*)( .*)?/\1/g'`
を追加してしまいました。
毎回起動時に十数秒くらい余計な時間が掛かることになってしまいますが、 確実に正しい時刻が設定されるはずです。
もっと良い方法があったら教えて下さい。。。