Linux豆知識 112
「ハードウェアクロック」と「システムクロック」
公開日:2012年09月21日
クロック、すなわち時計は、コンピュータでは非常に重要です。何よりも、ファイル管理において、更新・アクセス時間を正確に取らないと、ファイルの消失など、とんでもないトラブルを抱える危険すらあります。サーバでも、時計が正確でないと、ソフトウェアが正しく動作しない、認証などの連携がうまく取れないなどの問題が発生します。
時計を正確に合わせるためにはNTPを利用します。NTPについては以前の豆知識でも触れましたが、ネットワークで時計を同期させるための仕組みです。一般に、NTPなどで得た正確な時刻を元に、コンピュータがクロックを管理します。そのときに利用されるクロック(時計)は、OSが管理する「システムクロック」です。システムクロックはメモリ上に置かれ、OSによって時が刻まれ、管理されます。また、OSがファイル管理などに利用するのは、システムクロックです。
このように重要な役割を担うシステムクロックですが、OSで管理されているため、OSをシャットダウンすると失われてしまいます。そこで、OSを起動するたびに、手動で時刻を入力する・・・のは大変ですよね(と言いつつ、実は、以前はOSを起動するたびに、手動で時刻を入力していたのです!)
ここで「ハードウェアクロック」の登場です。ハードウェアクロックは、その名前の通り、ハードウェアの上に実装された時計です。OSは、起動時にハードウェアクロックを参照し、その情報をシステムクロックに移して利用することになります。
システムクロックもハードウェアクロックも、残念ながら精度が優れているとは言い難いものです。そこで、サーバ用途ではNTPを利用して定期的に正確な時刻を得て、これをシステムクロックとハードウェアクロックに反映させるのが望ましい使い方だと言えるでしょう。ただし、NTPを使いすぎるとネットワーク及びサーバに負荷をかけることになりますので、たとえば2週間に1回NTPで時刻を取得し(ntpdateコマンド)、これをハードウェアクロックに反映させる(hwclock -wコマンド)ようにするのがよいでしょう。
ところで、ハードウェアクロックは、マザーボード上にある専用の電池によって稼働するようになっているケースがほとんどです。ここで注意したいのは、電池切れです。どうも時計がおかしい…という場合は、実はハードウェアクロック用の電池切れのせいだった、というケースが多いようです。
電池切れにはくれぐれもご注意を・・・。