Linuxの時計
概要
時計メモ
メモ
ノート: デフォルトでは systemd はハードウェアクロックに UTC を使用します。
用語
ハードウェアクロックまたはリアルタイムクロック(RTC)
- マザーボードが持つ内部時計であり、BIOS クロックやCMOS クロックとも呼ばれます。マザーボード上の IC に実装
- CentOSではデフォルトではハードウェアクロックをUTCを標準時を参照しているように考えてシステムクロックを設定するみたい。
- LINUXが起動する時に一度だけ参照。
- また、RTCはさほど精度が高くないこともあり、定期的にインターネット上のNTPサーバーから現在時刻を取得しRTCに書き込むということも行われます。最近のWindowsではデフォルトでマイクロソフトのNTPサーバーを参照しています。
- MacやLinuxでは、RTCからUTC(協定世界時)を設定しておきOS側でタイムゾーンや夏時間の時差を足し引きしてローカルタイムを表示しているようです。
システムクロック
- 一般的に、UTC を使う OS は起動時に CMOS (ハードウェアクロック) の時間を UTC 時間 (GMT, Greenwich time) だと認識して、あなたのタイムゾーンによってその時間を調整してシステム時刻を設定します。
- OSは起動されるとハードウェア クロックの時刻情報を読み出し、基準時刻からの経過秒数の形式に編集してOSが管理するメモリ内にシステム クロックとして格納します。
- システムクロックの更新はタイマー割り込み毎に加算され、基準時刻からの経過秒数で現在の時間を運用(時計の進行)する。
NTPの必要性
- ログの時間の整合性をあわせるなどなど、ネットワーク内の複数のシステムで同じ時間に合わせる必要があるのでNTPを利用する。
- 時間が正確
- /etc/ntp.conf でntpサーバを設定。ntpdを起動させる。
- 即時に合わせる場合、nttdate ntpサーバで合わせることができる。
まとめ
工場でマザーボード作成。現在の時間設定される。以後動き続ける。
↓
届く
↓
Linuxサーバ設定、起動
↓
起動時にRTCを参照。 LinuxではRTCをUTCをとして認識、そこからlinuxのタイムゾーンにあった時間に変換(システム クロックの設定)
↓ 運用
システムで時間を統一する必要ntpの導入(システムクロックの値はntpdから取得)
↓
問題
- RTCはずれる。「ハードウェア クロックはあまり正確ではない」と言われているくらいらしい
- RTCがずれたままだど再起動する度にずれた時間が設定される。(ntpdで修正されるも即時ではない場合、時間がかかる)
↓
システムクロックとRTCを同期する。 デフォルトでタイミングは再起動やシャットダウン
これでRTCとシステムクロック同期するのでずれない。 また、NTPで各サーバーの時間も同期。NTP使うので時間は正確。