システムクロックのズレ修正
システムクロックはズレます。そのズレを修正する方法をここに記載しておきます。
目次
そもそも「システムクロック」って何?▼
システムクロックのズレについて▼
ズレの修正におけるトラブルシューティング▼
そもそも「システムクロック」って何?
「ハードウェアクロック」と「システムクロック」(「ハードウェアクロック」と「システムクロック」)
言うまでもなく、どっちも時刻を管理してる。
基本的にコンピューターで大事なのは「システムクロック」。
OSがメモリ上に記録して管理してる。
PCの時間表示やファイルの更新時間などに利用されてる。めっちゃ重要なポジションにいる。
ただこいつは、OSをシャットダウンすると失われてしまうと言う欠点がある。
じゃあ、再起動した時はどうやってシステムクロックを設定するのだろう?
その時、活躍するのが「ハードウェアクロック」。
物理的に実装されてる時刻が「ハードウェアクロック」。
OSは起動する時、ハードウェアクロックの時刻を利用してシステムクロックを初期化してる。
最近は仮想ハードウェアクロック(=クロックソース)と言うものも存在する
AWSのEC2などは仮想ハードウェア(VM)であることから、そもそもハードウェアクロックと言う概念が無い。
その代わりにクロックソースという考え方がある。言ってしまえば仮想的なハードウェアクロックのこと。
システムクロックのズレについて
ズレる理由
理由:ハードウェアクロックもシステムクロックも精度は悪い
覚えておきたいのが、どっちのクロックも時間が経つにつれてズレていくと言うこと。
自然にズレていくのです。これはもう仕方がない。
ズレないようにする方法はある?
ある。
それは、NTPサーバーを定期的に参照することで、正確な時刻を同期すると言うもの。
NTPサーバーは、時刻同期用として世界標準として用意されてるサーバー。
こいつの時刻と定期的に同期しておけば、システムクロックがズレる心配はない。
ズレの修正におけるトラブルシューティング
NTPサーバーの設定をしてなくてズレた時(NTPサーバーに接続できる状況)
a.iconNTPサーバーの設定をすれば終わり
NTPサーバーの設定をしてなくてズレた時(NTPサーバーに接続できない状況)
a.icon手動でシステムクロックを更新する
$ date -s "2021-09-02 18:00:00"
手動でシステムクロックを更新しても変更されない時(仮想VMを利用してる場合)
a.iconlinux - dateコマンドでEC2のシステムクロックを更新できない - スタック・オーバーフロー