- PR -

サーバ起動時に時刻がずれる

投稿者投稿内容
未記入
会議室デビュー日: 2006/10/11
投稿数: 5
投稿日時: 2006-11-20 16:32
テスト機で事象が再現でき、テストした結果、以下の状況になっていたようです。

例)UTCを1度も設定していない時
     |再起動1|再起動2|再起動3
 BIOS時刻| 9:00 | 9:00 | 9:00
 date  | 9:00 | 9:00 | 9:00
 /etc/sysconfig/clock
 "Asia/Tokyo"
 UTC=false
 ARC=false

  UTC使用ON時
     |再起動1|再起動2|再起動3
 BIOS時刻| 9:00 | 9:00 | 9:00
 date  | 18:00 | 18:00 | 18:00
 /etc/sysconfig/clock
 "Asia/Tokyo"
 UTC=true
 ARC=false

  UTC使用ON→OFF時
     |再起動1|再起動2|再起動3
 BIOS時刻| 9:00 | 18:00 |翌 3:00
 date  | 18:00 |翌3:00 |翌12:00
 /etc/sysconfig/clock
 "Asia/Tokyo"
 UTC=false
 ARC=false

テスト結果からBIOS時刻がUTCのままになってしまっているようなので、BIOS時刻が
UTCになっていることを前提に設定(例のUTC使用ON時)し、本番機へ導入、現在は
正常に運用できています。

一応、ネットで事例を検索してみましたが、検索方法が良くなかったのかヒットは
しませんでした。(正常稼動しているので、それ以上追求してませんが…^^;)

各位のご助言ありがとうございました。
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2006-11-20 17:06
あの…これだけ実験したんだったら原因は明らかになってませんか?
この場合のBIOS時刻がUTCで有る事が最後にかいてあるので。

引用:

未記入さんの書き込み (2006-11-20 16:32) より:
テスト機で事象が再現でき、テストした結果、以下の状況になっていたようです。

例)UTCを1度も設定していない時
     |再起動1|再起動2|再起動3
 BIOS時刻| 9:00 | 9:00 | 9:00
 date  | 9:00 | 9:00 | 9:00
 /etc/sysconfig/clock
 "Asia/Tokyo"
 UTC=false
 ARC=false


trueにしないと変わらなかったと。

引用:

  UTC使用ON時
     |再起動1|再起動2|再起動3
 BIOS時刻| 9:00 | 9:00 | 9:00
 date  | 18:00 | 18:00 | 18:00
 /etc/sysconfig/clock
 "Asia/Tokyo"
 UTC=true
 ARC=false


trueにしたら、9時間進んだと(JSTになったと)

引用:

一度ONにしたら

  UTC使用ON→OFF時
     |再起動1|再起動2|再起動3
 BIOS時刻| 9:00 | 18:00 |翌 3:00
 date  | 18:00 |翌3:00 |翌12:00
 /etc/sysconfig/clock
 "Asia/Tokyo"
 UTC=false
 ARC=false

テスト結果からBIOS時刻がUTCのままになってしまっているようなので、BIOS時刻が
UTCになっていることを前提に設定(例のUTC使用ON時)し、本番機へ導入、現在は
正常に運用できています。


つまりBIOSの時間がUTCになっているから
UTC=trueにして9時間進めたって事ですよね?

これを見る限りBIOSがUTCになっているから9時間進めなきゃダメって事になりますよね?

またNTPは任意で設定を変えない限り9時間も時間を変えると言う事はありません。
例えばDBがバックで動いていたらどうなりますか?

対応としてはfalseのままBIOSの時間を変更するって方法も有りますよね?
(BIOSの時刻設定方法は知っていますよね?)

それから一番最初の質問では

引用:

特に問題なく稼動はしているのですが、時刻同期を実施せずリブートするとシステム時刻(date)が9時間未来の時刻になってしまいます。


これはJSTよりも9時間進むって意味じゃ無かったんですか?

だったら問題が起きたサーバがtrueになっているならBIOSをUTCに設定しておけば良いだけの話ですし、falseならばBIOSをJSTに設定すれば良いだけの話では無かったのですか?

そう言った本質的な所をつかんでおかないと、
誰かがBIOSの時間を手動で変えたらどうなるんですか?
非武装エリア
大ベテラン
会議室デビュー日: 2004/03/03
投稿数: 202
お住まい・勤務地: 日本・たこ部屋
投稿日時: 2006-11-20 18:01
引用:

Johannさんの書き込み (2006-10-12 13:54) より:
ntpdって手動で同期させなくても起動しておくだけで定期的に
同期してくれませんでしたっけ?
最悪、同期コマンドをcronに登録して一時間毎とかでブンブン回せば
何とかなりそうではあります。




ntpdの場合、ソースのタイムサーバの時刻との差が開きすぎている場合には、同期を中止してしまう筈です(何分だったかは調べてね)
自分の場合は、ntpdではなくntpdateをcronで定期的に実行させて同期させたり、
ntpdを使う場合には定期的にclockコマンド(Fedoraにclockコマンドがあるかは不明:Redhat9までは存在してましたけどね)を使ってハードウェアクロックを修正していたりしてました。
未記入
会議室デビュー日: 2006/10/11
投稿数: 5
投稿日時: 2006-11-20 18:19
引用:

あの…これだけ実験したんだったら原因は明らかになってませんか?
この場合のBIOS時刻がUTCで有る事が最後にかいてあるので。


原因としては、BIOS時刻がUTCのままになってしまった。です。
BIOS時刻をJSTに戻す方法は確認できていません。

引用:

つまりBIOSの時間がUTCになっているから
UTC=trueにして9時間進めたって事ですよね?

これを見る限りBIOSがUTCになっているから9時間進めなきゃダメって事になりますよね?


そうなります。

引用:

またNTPは任意で設定を変えない限り9時間も時間を変えると言う事はありません。
例えばDBがバックで動いていたらどうなりますか?


おそらくマシン稼働中の話をされているかと思いますがあっていますでしょうか?
言葉が足りなかったかもしれませんが、/etc/rc.d/rc.sysinitに時刻がずれていないかclock、dateのコマンドを埋め込んで確認していました。
設定を正常に戻すまでは、起動時にNTPで時刻あわせをしていたので、起動後は特に時刻のずれはありません。
(ntpd自体の設定は任意で変更していません。)
DBは動いていますが、起動時のみ時間がずれていたので特に問題視していませんでした。(NTPと同期できなければ確かに問題です。^^;)

引用:

対応としてはfalseのままBIOSの時間を変更するって方法も有りますよね?
(BIOSの時刻設定方法は知っていますよね?)
だったら問題が起きたサーバがtrueになっているならBIOSをUTCに設定しておけば良いだけの話ですし、falseならばBIOSをJSTに設定すれば良いだけの話では無かったのですか?


仰っている通りにすると例の3番目の事象になるので、BIOS時刻をUTCとして扱う設定になりました。
BIOSの時刻設定は起動時に割り込みをかけてBIOSの設定画面にすることであっていますでしょうか?
であれば、知っています。
ただ、UTCからJSTへの変更箇所を確認できなかった、BIOS時刻の設定をUTCからJSTに戻す方法が調べても検索できなかったので、BIOS時刻をUTCのままにし、上記のようになりました。
もし、戻す方法をご存知でしたらご教授ください。

引用:

そう言った本質的な所をつかんでおかないと、
誰かがBIOSの時間を手動で変えたらどうなるんですか?


確かに仰る通り、本質は掴みきれておりません。
もし、稼動中、BIOSの時刻を変更されてしまった場合の防止策が思いつきません。何か防止策はありますでしょうか?
起動時であればNTPと同期さえ取れていれば問題ないと考えています。
(NTPと同期が取れなければそれっきりになってしまいますが。)
F/A
ぬし
会議室デビュー日: 2006/03/18
投稿数: 312
お住まい・勤務地: Tokyo
投稿日時: 2006-11-20 22:01
しかし、若干気になるのは試験3なんですが…

引用:

  UTC使用ON→OFF時
     |再起動1|再起動2|再起動3
 BIOS時刻| 9:00 | 18:00 |翌 3:00
 date  | 18:00 |翌3:00 |翌12:00
 /etc/sysconfig/clock
 "Asia/Tokyo"
 UTC=false
 ARC=false



これって再起動の度にBIOS(ハードウェアクロック)が
9時間進むって事ですか?

LinuxはOS起動時にBIOSから時刻を取得し、その後は独自にOS上で時を刻みます。
で、シャットダウン時にOSの時刻をBIOSに書き戻して終了します。

この際UTCがTRUEだと、JST環境では起動時にBIOSの時刻+9時間がOS時刻と設定され、
シャットダウン時にはOS時刻-9時間が書き戻されます。

一方、FALSEだと BIOSの時刻がそのままOS時刻として設定され、
シャットダウン時の書き戻しもそのままです。

起動中にFALSEに変更すると、おそらくですが、
OS時刻がそのまま書き戻されるように変わる為、BIOSは9時間進む事になります。

とはいえ、FALSEに変えてるので、次回起動時は
「BIOSの時刻がそのままOS時刻として設定」されるので全く問題ありません。


ちなみに、BIOSにはタイムゾーンという概念はありません。
OSがBIOSクロックをどう認識するかだけの違いです。
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2006-11-21 10:29
引用:

BIOSの時刻設定は起動時に割り込みをかけてBIOSの設定画面にすることであっていますでしょうか?
であれば、知っています。


これはその通りです

引用:

ただ、UTCからJSTへの変更箇所を確認できなかった、BIOS時刻の設定をUTCからJSTに戻す方法が調べても検索できなかったので、BIOS時刻をUTCのままにし、上記のようになりました。
もし、戻す方法をご存知でしたらご教授ください。



F/Aさんが書いてますが

引用:

ちなみに、BIOSにはタイムゾーンという概念はありません。
OSがBIOSクロックをどう認識するかだけの違いです。


です。

BIOSでのRTC(リアルタイムクロック)→ハード上に乗っている時計
にタイムゾーンと言う設定はありません。

だから本質的な事を理解して下さいね。と言っている訳ですが。 

スキルアップ/キャリアアップ(JOB@IT)