ハードウェア時計を変更する理由と方法は何ですか?

ハードウェア時計を変更する理由と方法は何ですか?

Linuxサーバー(Amazon Linux 2)を最初から起動しました。
私は東京エリアにいて、時間帯情報をこのように変更しました。

ll /etc/localtime
# lrwxrwxrwx 1 root root 25 Feb 22 10:11 /etc/localtime -> ../usr/share/zoneinfo/UTC

# backup
sudo cp -p /etc/localtime /etc/localtime.org

# change timezone
sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

ll /etc/localtime
# lrwxrwxrwx 1 root root 30 Mar 10 22:06 /etc/localtime -> /usr/share/zoneinfo/Asia/Tokyo

これで次のことが影響を受けますので、UTCより9時間早いですね。ジェゲンで十分そうです。

  • 'date'コマンドの結果
  • クローンジョブの実行時間
  • デーモン録画時間

ところがGoogleで検索してみると、ハードウェアの時計も変えなければならないという記事がいくつか見つかりました。

# default    
cat /etc/sysconfig/clock
# ZONE="UTC"
# UTC=true

このファイルを修正する方が良いですか?
それでは、どうすればいいですか?何が影響を受けますか?

答え1

あなたが見つけた記事は「間違っている」です。 Linuxシステムでは、慣例に従ってハードウェアクロックを統合タイムゾーン(つまりUTC)に保ち、ソフトウェアは必要に応じてハードウェア時間をローカルタイムゾーンに変換します。

周辺の「エラー」"はこれが単なる慣例だからです。これもできますが、何の利点もありません。代わりに、現地時間帯に設定されている場合は、ハードウェア時計は夏時間に従うなどの作業を実行する必要があります。通常、これはハードウェアクロックを年に2回変更する必要があることを意味するので、望むものではありません。

まあ、うん。システムクロックをUTCに保ちます。 AWSについてはよくわかりませんが、仮想マシンがハードウェアクロックで提供する実際の時間でさえ変更しないことがよくあります。

答え2

Amazonに限定されません。 Amazonのハードウェア時計が正しいかどうか疑問です。ローカルのOSタイムゾーンのみを処理する必要があります。ただし、実際の(またはシミュレーション)ハードウェアクロックに関するすべての情報を提供します。

  1. 実際の世界のUTC時間を確認してください(不明な場合:https://www.timeanddate.com/worldclock/timezone/utc)
  2. ハードウェアがクロッキングしていると思うことを確認してください。sudo TZ=UTC hwclock --get
  3. オペレーティングシステムが考える時間(UTC)を確認してください。 date -u

ステップ1、2、3の時間は一致しなければなりません。 OSが間違っている場合(ステップ3)、ntpdate pool.ntp.orghwclockが間違っている場合(ステップ2)、sudo TZ=UTC hwclock -w -u (EC2のエミュレートされたハードウェアクロックがそれを変更できるかどうかは興味深い質問です。驚くほど可能です。)

これで、ハードウェア時計があるタイムゾーンを確認できます。

  1. ハードウェアタイムゾーンがUTCであるかのように、ハードウェアクロックを確認してください。sudo TZ=UTC hwclock -u --get

おおよその実際のUTCクロックが返されると、ハードウェアクロックはUTCを使用しています。別の値を返す場合は、ローカル時計のタイムゾーンを使用しています。私の偏見は、これは決して良い考えではありませんが、一部のサードパーティのOSが同意しない可能性があることです(デュアルブートを実行している場合はEC2では発生しません)。

最後に、ログを見ると、そのログが実際に発生したタイミングを確認できるように、オペレーティングシステムのタイムゾーンを設定する準備が整いました。 UTCを選択し、最大限の完全性のために共通のグローバル時間を持つことができます。サーバーのローカルタイムゾーンを選択できます。これにより、他のアベイラビリティーゾーンのログを比較する前に変換する必要があります。タイムゾーンを選択できます(他の地域の同僚を迷惑にすることもできます)。以下のコマンド例では、UTCを選択しました。

ln -sf /usr/share/zoneinfo/UTC /etc/localtime

この時点で、date時間は選択した時間帯に印刷する必要があります。

/etc/sysconfig/clock はブート時に (/etc/localtime で) シンボリックリンクを再生成する方法ですが、ほとんどの OS ベンダーはこれについてよりよく考えており、これ以上はしません。 /etc/sysconfig/clock を使用しないことをお勧めします。または、存在する場合は正しく設定されていることを確認し、再起動後に/ etc / localtimeがまだ正しく設定されていることを確認してください。

答え3

ある時点では、コンピュータの外部のサーバーと通信することになり、通常はサーバーとの時間に同意する必要があります。これは混乱を避けるためのものかもしれませんが、通常は攻撃を防ぐためのセキュリティ上の理由から行われます。したがって、コンピュータはUTC時間を知る必要があります。そうしないと、問題が発生する可能性があります。

ハードウェア時計は、実際の時間をできるだけ正確に反映する必要があります。ハードウェア時計を比較すると、あなたはロンドンにいて私はロサンゼルスにいるので、ハードウェア時計は同じでなければなりません。私たちの現地時間は明らかに異なります。

関連情報