0
0

システムクロックとハードクロックの違いについてまとめた備忘録

Posted at

前置き

Linuxサーバを操作していた際に、時間が大幅にずれていたことがありました。
時刻を修正する際に、クロックについて調べたら2つのクロックがあり、違いについて具体的にイメージできなかったため備忘録としてまとめたものです。

システムクロックとは

システムクロックは,Linuxが管理する時計です
特徴は以下です

・OSが稼働中に使用される時計
・メモリ上に保持され、OSによって時間が刻まれる
・システム起動時にハードウェアクロックから初期値を取得する
・ファイルのタイムスタンプなど、OSの各種機能で使用される

例: date コマンドで表示される時刻はシステムクロックの時刻です。

# コマンド
date

#出力結果
2024年  9月  6日 金曜日 16:23:34 JST

ハードクロックとは

ハードウェアクロックは、コンピュータのマザーボード上に搭載された物理的な時計です。
特徴は以下です

・PCの電源がOFFでも時刻を刻み続ける
・CMOS電池で駆動されるため、「CMOS時計」とも呼ばれる
・システム起動時にOSに時刻情報を提供する

例: BIOSの設定画面で確認できる時刻がハードウェアクロックの時刻です。
image.png

具体的な動作の違い

システム起動時

ハードウェアクロック: 2024年9月6日 10:00:00
システムクロック: ハードウェアクロックから時刻を取得し、2024年9月6日 10:00:00に設定

システム稼働中(1時間後)

・ハードウェアクロック: 2024年9月6日 11:00:00 (独立して時を刻む)
・システムクロック: 2024年9月6日 11:00:00 (OSが管理)

システムシャットダウン後

ハードウェアクロック: 引き続き時を刻む
システムクロック: 消失 (次回起動時に再度ハードウェアクロックから時刻を取得)

両方の精度が高くないため、NTPサーバーを使用して定期的に正確な時刻に同期することが推奨されます!

システムクロックとハードクロックの同期を自動化

Network Time Protocol (NTP)を使った同期が最も一般的で効果的。

NTPデーモンのインストール:

多くのLinuxディストリビューションでは、ntpdまたはchronydがNTPデーモンとして使用されます。
まだインストールされていない場合は、パッケージマネージャーを使用してインストールします。

NTPサービスの設定:

/etc/ntp.confまたは/etc/chrony.confファイルを編集して、使用するNTPサーバーを指定します。

サービスの有効化と起動:

下記コマンド実行

sudo systemctl enable ntpd
sudo systemctl start ntpd

または

sudo systemctl enable chronyd
sudo systemctl start chronyd

これにより、システムクロックが定期的にNTPサーバーと同期されます

ハードウェアクロックとの同期

システムクロックがNTPで同期された後、ハードウェアクロックとの同期を自動化するには以下を実行する

hwclockコマンドを定期的に実行するようにスケジュールします。例えば、cronジョブを使用する

sudo crontab -e

エディタ上に以下を追加

0 * * * * /sbin/hwclock --systohc

これにより、毎時0分にシステムクロックからハードウェアクロックへ時刻が同期されます!

または、システムの起動時と終了時にハードウェアクロックを更新するスクリプトを作成し、システムの起動/終了プロセスに組み込みます。

私の方でcron設定について別記事を書いています。
cronについて確認したい方は参考にどうぞ!

補足

下記は同期における補足です

・ほとんどの現代のLinuxシステムでは、NTPサービスが既定で有効になってます。
 システムクロックとハードウェアクロックの同期が自動的に行われます。

・タイムゾーンの設定が正しいことを確認してください。
 これはUTCとローカル時間の変換に影響します。

・仮想マシンや一部のクラウド環境では、ハードウェアクロックへのアクセスが制限されている場合があります。
 そのような環境では、システムクロックの同期のみに焦点を当てる必要があります。

これらの方法を使用することで、システムクロックとハードウェアクロックの同期を効果的に自動化できます。

以上になります。お疲れ様ででした。
学習の参考になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0