- - PR -
サーバ起動時に時刻がずれる
| 投稿者 | 投稿内容 | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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時)し、本番機へ導入、現在は 正常に運用できています。 一応、ネットで事例を検索してみましたが、検索方法が良くなかったのかヒットは しませんでした。(正常稼動しているので、それ以上追求してませんが…^^;) 各位のご助言ありがとうございました。 | ||||||||||||||||||||
|
投稿日時: 2006-11-20 17:06
あの…これだけ実験したんだったら原因は明らかになってませんか?
この場合のBIOS時刻がUTCで有る事が最後にかいてあるので。
trueにしないと変わらなかったと。
trueにしたら、9時間進んだと(JSTになったと)
つまりBIOSの時間がUTCになっているから UTC=trueにして9時間進めたって事ですよね? これを見る限りBIOSがUTCになっているから9時間進めなきゃダメって事になりますよね? またNTPは任意で設定を変えない限り9時間も時間を変えると言う事はありません。 例えばDBがバックで動いていたらどうなりますか? 対応としてはfalseのままBIOSの時間を変更するって方法も有りますよね? (BIOSの時刻設定方法は知っていますよね?) それから一番最初の質問では
これはJSTよりも9時間進むって意味じゃ無かったんですか? だったら問題が起きたサーバがtrueになっているならBIOSをUTCに設定しておけば良いだけの話ですし、falseならばBIOSをJSTに設定すれば良いだけの話では無かったのですか? そう言った本質的な所をつかんでおかないと、 誰かがBIOSの時間を手動で変えたらどうなるんですか? | ||||||||||||||||||||
|
投稿日時: 2006-11-20 18:01
ntpdの場合、ソースのタイムサーバの時刻との差が開きすぎている場合には、同期を中止してしまう筈です(何分だったかは調べてね) 自分の場合は、ntpdではなくntpdateをcronで定期的に実行させて同期させたり、 ntpdを使う場合には定期的にclockコマンド(Fedoraにclockコマンドがあるかは不明:Redhat9までは存在してましたけどね)を使ってハードウェアクロックを修正していたりしてました。 | ||||||||||||||||||||
|
投稿日時: 2006-11-20 18:19
原因としては、BIOS時刻がUTCのままになってしまった。です。 BIOS時刻をJSTに戻す方法は確認できていません。
そうなります。
おそらくマシン稼働中の話をされているかと思いますがあっていますでしょうか? 言葉が足りなかったかもしれませんが、/etc/rc.d/rc.sysinitに時刻がずれていないかclock、dateのコマンドを埋め込んで確認していました。 設定を正常に戻すまでは、起動時にNTPで時刻あわせをしていたので、起動後は特に時刻のずれはありません。 (ntpd自体の設定は任意で変更していません。) DBは動いていますが、起動時のみ時間がずれていたので特に問題視していませんでした。(NTPと同期できなければ確かに問題です。^^;)
仰っている通りにすると例の3番目の事象になるので、BIOS時刻をUTCとして扱う設定になりました。 BIOSの時刻設定は起動時に割り込みをかけてBIOSの設定画面にすることであっていますでしょうか? であれば、知っています。 ただ、UTCからJSTへの変更箇所を確認できなかった、BIOS時刻の設定をUTCからJSTに戻す方法が調べても検索できなかったので、BIOS時刻をUTCのままにし、上記のようになりました。 もし、戻す方法をご存知でしたらご教授ください。
確かに仰る通り、本質は掴みきれておりません。 もし、稼動中、BIOSの時刻を変更されてしまった場合の防止策が思いつきません。何か防止策はありますでしょうか? 起動時であればNTPと同期さえ取れていれば問題ないと考えています。 (NTPと同期が取れなければそれっきりになってしまいますが。) | ||||||||||||||||||||
|
投稿日時: 2006-11-20 22:01
しかし、若干気になるのは試験3なんですが…
これって再起動の度に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クロックをどう認識するかだけの違いです。 | ||||||||||||||||||||
|
投稿日時: 2006-11-21 10:29
これはその通りです
F/Aさんが書いてますが
です。 BIOSでのRTC(リアルタイムクロック)→ハード上に乗っている時計 にタイムゾーンと言う設定はありません。 だから本質的な事を理解して下さいね。と言っている訳ですが。 | ||||||||||||||||||||
