mieki256's diary



2017/11/20(月) [n年前の日記]

#3 [linux] 自宅サーバの時計がおかしくて悩んだり

自宅サーバが、2017/11/20 01:30頃に何故か勝手に再起動していて首を捻ったのだけど、それはさておき。

どうも自宅サーバの時計がおかしい…。ハードウェアクロックが、異様にずれてる。

ちなみに環境は Vine Linux 6.5。
# cat /etc/vine-release
Vine Linux 6.5 (Poupille)

時刻を確認。
# date
2017年 11月 20日 月曜日 07:55:46 JST

# hwclock -r --debug
hwclock from util-linux 2.19
/dev interface to clock を使います。
直前のずれの修正は 1969 年以降 1511128259 秒時点で行なわれました
直前の調整は 1969 年以降 1511128259 秒時点で行なわれました
ハードウェア時計はローカル時刻です
ハードウェア時計ローカル時刻を保持しているとみなします
クロックチックを待っています...
...クロックチックを取得しました
ハードウェア時計から読込んだ時刻: 2017/11/19 22:55:52
ハードウェア時計時刻 : 2017/11/19 22:55:52 = 1969 年以来 1511099752 秒
2017年11月19日 22時55分52秒  -0.203008 秒
ハードウェアクロックが、ちょうど9時間ずれてる。おかしい。UTC絡みなのだろうか…?

ntpの状態は以下のような感じ。
# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
-ntp1.plala.or.j 202.234.233.109  4 u  140  256  377   19.093   -4.844   0.514
-ntp2.plala.or.j 202.234.233.109  4 u  203  256  377   12.973   -3.774   0.957
+ntp1.jst.mfeed. 133.243.236.17   2 u  204  256  377   20.810   -1.036   0.505
*ntp2.jst.mfeed. 133.243.236.17   2 u  196  256  377   21.901   -0.961   0.599
+ntp3.jst.mfeed. 133.243.236.17   2 u   91  256  377   18.489   -0.653   0.717
LOCAL(0)        .LOCL.          10 l  59m   64    0    0.000    0.000   0.000

ハードウェアクロックに、現在時刻を設定してみる。
# date
2017年 11月 20日 月曜日 08:28:08 JST

# hwclock --systohc --localtime --debug
hwclock from util-linux 2.19
/dev interface to clock を使います。
直前のずれの修正は 1969 年以降 1511132257 秒時点で行なわれました
直前の調整は 1969 年以降 1511132257 秒時点で行なわれました
ハードウェア時計はローカル時刻です
ハードウェア時計ローカル時刻を保持しているとみなします
クロックチックを待っています...
...クロックチックを取得しました
ハードウェア時計から読込んだ時刻: 2017/11/19 23:28:23
ハードウェア時計時刻 : 2017/11/19 23:28:23 = 1969 年以来 1511101703 秒
Time elapsed since reference time has been 0.004853 seconds.
Delaying further to reach the new time.
ハードウェア時計を 08:28:23 に設定 = 1969 年以来 1511134103 秒
ioctl(RTC_SET_TIME) に成功しました。
前回の調整以来、少なくとも一日経過しないと、ずれを修正できません。

# hwclock --show ; date
2017年11月20日 08時29分18秒  -0.351335 秒
2017年 11月 20日 月曜日 08:29:18 JST
設定できたように見えるけど、しばらくするとまた時間がずれる。何故。

関係ありそうなファイルを確認。 :

# strings /etc/localtime
TZif2
        JCST
TZif2
JCST
JST-9

# cat /etc/sysconfig/clock
ZONE="Asia/Tokyo"
UTC=false
ARC=false

# cat /etc/adjtime
0.018596 1511134103 0.000000
1511134103
LOCAL

指定がおかしいようには見えないのだけどなあ…。

そもそも、一体何が、一定時間毎にハードウェアクロックを上書き設定してしまうのだろう?

「11分モード」なるものがあるらしい。 :

以下のページを眺めてたら、「11 minute mode(11分モード)」なるものがあると知った。11分毎にハードウェアクロックを再設定してしまう機能がカーネルにあるらしく、ソレを利用してntpサーバがハードウェアクロックを設定してしまう時があるそうで。

_日時を設定して再起動すると標準時刻に戻ってしまう | アットマークテクノ ユーザーズサイト
_hardware clockがずれる件と 11 minute mode - (ひ)メモ
_Man page of HWCLOCK - (カーネルによるハードウェアクロックの自動合わせ、の項を参照)
_RHEL6のtickless kernel - とあるSIerの憂鬱
_設定ファイル
_パソコンの時計 ハードウェアクロックとシステムクロック

状態を確認してみる。
# ntptime | grep status
  status 0x2001 (PLL,NANO),
UNSYNC の表記が無いので、11 minute mode(11分モード)が有効になっているらしい。つまりウチの自宅サーバは、ntpd だかカーネルだか分からんけど、11分毎にハードウェアクロックが上書きされてしまう模様。

/etc/adjtime の3行目が、LOCAL か UTC かで、ハードウェアクロックから時刻を読み取る際の処理が変わってくるらしい。試しに UTC にしてみた。
vi /etc/adjtime
3行目をUTCに

vi /etc/sysconfig/clock
UTC=true に

hwclock --systohc --utc --debug

# hwclock -r --debug
hwclock from util-linux 2.19
/dev interface to clock を使います。
直前のずれの修正は 1969 年以降 1511139353 秒時点で行なわれました
直前の調整は 1969 年以降 1511139353 秒時点で行なわれました
ハードウェア時計はUTC時刻です
ハードウェア時計UTC時刻を保持しているとみなします
クロックチックを待っています...
...クロックチックを取得しました
ハードウェア時計から読込んだ時刻: 2017/11/20 00:59:18
ハードウェア時計時刻 : 2017/11/20 00:59:18 = 1969 年以来 1511139558 秒
2017年11月20日 09時59分18秒  -0.768737 秒

そもそもLinuxのシステムクロックはUTCで、ハードウェアクロックもUTCを前提にしている場合が多い、という話も見かけた。

どうせ Linux しか動かさない環境なのだから、これで様子を見てみよう…。

hwclockについて。 :

  • hwclock -w と hwclock --systohc は同じ。ハードウェアクロックを設定する。
  • hwclock -r と hwclock --show は同じ。ハードウェアクロックを読み出す。
  • --debug をつけると、詳細を表示してくれる。
  • --utc をつけると UTC として扱い、--localtime をつけるとローカルタイムとして扱う。

以上です。

過去ログ表示

Prev - 2017/11 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project