【システムクロックだけntpで設定していい気になっていた】
サーバにはシステムクロックとハードウェアクロックがある
システムクロック→OSが管理しているクロック。電源が落ちると消えてしまう。(OSのメモリ上に存在する)
ハードウェアクロック→マザーボード上にあるクロック。ボード上の電池で動いており、OSが落ちても時刻が保持される。
それぞれ独立して動いているのだが、
OSはシャットダウンすると当然システムクロックの時刻を失うため、次回起動時にはハードウェアクロックを読みに行き、そこから時刻をもらって起動する。
なので、システムクロックとハードウェアクロックは同期させる必要がある。特にシステムクロックだけ設定して、やったぜ!みたいな気になっていると後で痛い目を見る。
まず、時刻を確認する。
date
システムクロックだけ設定するならこう
date -s "yyyy/mm/dd hh:mm:ss"
これでシステムクロックが設定された。
続けて、ntp同期しているかどうか見てみる。
ntpq -p
項目 | 説明 |
---|---|
remote | サーバ名 ✳︎がついているのが同期中のサーバ。+がついているのが同期はしていないが参照可能なサーバ。何もついていないサーバとは同期してない。×はfalseticker検査で対象から除外されたサーバー(NTPのアルゴリズム自体が信頼できないと判断された) |
refid | remoteで表示されたサーバの1つ上のstratum。remoteのサーバの参照先。不明なら0.0.0.0 |
st | stratum。大きいほど階層が下。信頼性の意味では、小さいほうがいい |
t | 階層の種類 |
when | remote から最後にパケットを受け取ってからの時間 |
poll | ポーリング間隔。サーバと同期している間隔のこと(秒) |
reach | 到達可能レジスタデータ(8進数) |
delay | 時間の遅延見積もり(ミリ秒) |
offset | remote との時刻のずれ(ミリ秒) |
jitter | remote の分散(ミリ秒)ntpの時刻ズレを統計的に現したもの。小さいほどよい。 |
システムクロックが合ってなれば、
ntpdate サーバ名
で時刻同期させる。サーバどうこうの話は他のサイトを参照ください。
####ハードウェアクロック
ハードウェアクロックが合っているかどうか見る
hwclock
合っていなければ、
hwclock --systohc
で同期させる。
####UTCとローカルタイム
hwclockは、自分が世界標準時刻を使用しているか、ローカルタイムを使用しているか分かるらしい