ラベル ntpd の投稿を表示しています。 すべての投稿を表示
ラベル ntpd の投稿を表示しています。 すべての投稿を表示

2018年1月26日金曜日

ntpd で時刻補正がうまく行かない場合の対症療法

新しく ThinkPad 25 で、CentOS 7 を使い始めたのですが、ntpd での時刻補正がうまくいかず、時刻がどんどんずれていく状態でした。
要因としては、新品マシンで drift 値 (/var/lib/ntpd/drift に格納される) が定まっていない点、WiFi 環境や高度な省電力機能の影響 など想像しましたが、想像したところで原因特定は難しいし、そこまで時間を割いてもいられないので、よくある対処療法 (maxpoll 設定) を行いました。

まず、どうなっていたかというと、「frequency error -561 PPM exceeds tolerance 500 PPM」というメッセージが出続けていました。
[root@hoge act27m48_1]# grep ntpd messages-20171225 
Dec 19 06:48:27 hoge ntpd[31716]: ntpd 4.2.6p5@1.2349-o Wed Apr 12 21:24:06 UTC 2017 (1)
Dec 19 06:48:27 hoge ntpd[31717]: proto: precision = 0.046 usec
Dec 19 06:48:27 hoge ntpd[31717]: 0.0.0.0 c01d 0d kern kernel time sync enabled
Dec 19 06:48:27 hoge ntpd[31717]: Listen and drop on 0 v4wildcard 0.0.0.0 UDP 123
Dec 19 06:48:27 hoge ntpd[31717]: Listen and drop on 1 v6wildcard :: UDP 123
Dec 19 06:48:27 hoge ntpd[31717]: Listen normally on 2 lo 127.0.0.1 UDP 123
Dec 19 06:48:27 hoge ntpd[31717]: Listen normally on 3 wlp4s0 192.168.1.41 UDP 123
Dec 19 06:48:27 hoge ntpd[31717]: Listen normally on 4 virbr0 192.168.122.1 UDP 123
Dec 19 06:48:27 hoge ntpd[31717]: Listen normally on 5 lo ::1 UDP 123
Dec 19 06:48:27 hoge ntpd[31717]: Listen normally on 6 wlp4s0 fe80::e1c7:557d:897c:9baf UDP 123
Dec 19 06:48:27 hoge ntpd[31717]: Listening on routing socket on fd #23 for interface updates
Dec 19 06:48:28 hoge ntpd[31717]: 0.0.0.0 c016 06 restart
Dec 19 06:48:28 hoge ntpd[31717]: 0.0.0.0 c012 02 freq_set ntpd 0.000 PPM
Dec 19 06:48:28 hoge ntpd[31717]: 0.0.0.0 c011 01 freq_not_set
Dec 19 06:48:34 hoge ntpd[31717]: 0.0.0.0 c614 04 freq_mode
Dec 19 07:11:03 hoge ntpd[31717]: 0.0.0.0 0612 02 freq_set ntpd -3983.969 PPM
Dec 19 07:11:03 hoge ntpd[31717]: 0.0.0.0 0615 05 clock_sync
Dec 19 07:11:03 hoge ntpd[31717]: frequency error -3984 PPM exceeds tolerance 500 PPM
Dec 19 07:13:21 hoge ntpd[31717]: frequency error -561 PPM exceeds tolerance 500 PPM
Dec 19 07:16:41 hoge ntpd[31717]: frequency error -586 PPM exceeds tolerance 500 PPM
Dec 19 07:22:25 hoge ntpd[31717]: frequency error -646 PPM exceeds tolerance 500 PPM
Dec 19 07:24:35 hoge ntpd[31717]: frequency error -554 PPM exceeds tolerance 500 PPM
Dec 19 07:37:56 hoge ntpd[31717]: frequency error -578 PPM exceeds tolerance 500 PPM
Dec 19 07:46:26 hoge ntpd[31717]: frequency error -550 PPM exceeds tolerance 500 PPM
Dec 19 07:53:11 hoge ntpd[31717]: frequency error -537 PPM exceeds tolerance 500 PPM
Dec 19 07:53:12 hoge ntpd[31717]: frequency error -500 PPM exceeds tolerance 500 PPM
Dec 19 08:04:12 hoge ntpd[31717]: 0.0.0.0 0618 08 no_sys_peer
Dec 19 08:08:29 hoge ntpd[31717]: frequency error -577 PPM exceeds tolerance 500 PPM
Dec 19 08:28:19 hoge ntpd[31717]: frequency error -523 PPM exceeds tolerance 500 PPM
Dec 19 08:41:28 hoge ntpd[31717]: frequency error -515 PPM exceeds tolerance 500 PPM
Dec 19 08:57:00 hoge ntpd[31717]: frequency error -517 PPM exceeds tolerance 500 PPM
Dec 19 09:09:39 hoge ntpd[31717]: frequency error -513 PPM exceeds tolerance 500 PPM
Dec 19 09:16:14 hoge ntpd[31717]: frequency error -502 PPM exceeds tolerance 500 PPM
Dec 19 09:25:17 hoge ntpd[31717]: frequency error -502 PPM exceeds tolerance 500 PPM
Dec 19 09:40:57 hoge ntpd[31717]: frequency error -503 PPM exceeds tolerance 500 PPM
Dec 19 09:44:45 hoge ntpd[31717]: frequency error -501 PPM exceeds tolerance 500 PPM
Dec 19 10:08:51 hoge ntpd[31717]: frequency error -501 PPM exceeds tolerance 500 PPM
Dec 19 10:33:49 hoge ntpd[31717]: frequency error -501 PPM exceeds tolerance 500 PPM
Dec 19 10:44:29 hoge ntpd[31717]: 0.0.0.0 0628 08 no_sys_peer
Dec 20 22:24:33 hoge ntpd[31717]: ntpd exiting on signal 15
Dec 20 22:26:07 hoge ntpd[7956]: ntpd 4.2.6p5@1.2349-o Wed Apr 12 21:24:06 UTC 2017 (1)
Dec 20 22:26:07 hoge ntpd[7957]: proto: precision = 0.046 usec
Dec 20 22:26:07 hoge ntpd[7957]: 0.0.0.0 c01d 0d kern kernel time sync enabled
Dec 20 22:26:07 hoge ntpd[7957]: Listen and drop on 0 v4wildcard 0.0.0.0 UDP 123
Dec 20 22:26:07 hoge ntpd[7957]: Listen and drop on 1 v6wildcard :: UDP 123
Dec 20 22:26:07 hoge ntpd[7957]: Listen normally on 2 lo 127.0.0.1 UDP 123
Dec 20 22:26:07 hoge ntpd[7957]: Listen normally on 3 wlp4s0 192.168.1.41 UDP 123
Dec 20 22:26:07 hoge ntpd[7957]: Listen normally on 4 virbr0 192.168.122.1 UDP 123
Dec 20 22:26:07 hoge ntpd[7957]: Listen normally on 5 lo ::1 UDP 123
Dec 20 22:26:07 hoge ntpd[7957]: Listen normally on 6 wlp4s0 fe80::e1c7:557d:897c:9baf UDP 123
Dec 20 22:26:07 hoge ntpd[7957]: Listening on routing socket on fd #23 for interface updates
Dec 20 22:26:07 hoge ntpd[7957]: 0.0.0.0 c016 06 restart
Dec 20 22:26:07 hoge ntpd[7957]: 0.0.0.0 c012 02 freq_set ntpd 0.000 PPM
Dec 20 22:26:07 hoge ntpd[7957]: 0.0.0.0 c011 01 freq_not_set
Dec 20 22:26:15 hoge ntpd[7957]: 0.0.0.0 c614 04 freq_mode
Dec 20 22:47:32 hoge ntpd[7957]: 0.0.0.0 0612 02 freq_set ntpd 36169.073 PPM
Dec 20 22:47:32 hoge ntpd[7957]: 0.0.0.0 0615 05 clock_sync
Dec 20 22:47:32 hoge ntpd[7957]: frequency error 36169 PPM exceeds tolerance 500 PPM
Dec 20 22:54:13 hoge ntpd[7957]: frequency error 2051 PPM exceeds tolerance 500 PPM
Dec 20 22:56:29 hoge ntpd[7957]: frequency error 1025 PPM exceeds tolerance 500 PPM
Dec 20 22:59:51 hoge ntpd[7957]: frequency error 1277 PPM exceeds tolerance 500 PPM
Dec 20 23:03:11 hoge ntpd[7957]: frequency error 1269 PPM exceeds tolerance 500 PPM
Dec 20 23:04:20 hoge ntpd[7957]: frequency error 566 PPM exceeds tolerance 500 PPM
Dec 20 23:08:46 hoge ntpd[7957]: frequency error 755 PPM exceeds tolerance 500 PPM
Dec 20 23:26:10 hoge ntpd[7957]: frequency error 1495 PPM exceeds tolerance 500 PPM
Dec 20 23:35:04 hoge ntpd[7957]: frequency error 1006 PPM exceeds tolerance 500 PPM
Dec 20 23:43:43 hoge ntpd[7957]: frequency error 990 PPM exceeds tolerance 500 PPM
Dec 21 00:01:10 hoge ntpd[7957]: frequency error 1482 PPM exceeds tolerance 500 PPM
...
Dec 22 11:54:14 hoge ntpd[7957]: frequency error 510 PPM exceeds tolerance 500 PPM
Dec 22 11:55:20 hoge ntpd[7957]: frequency error 501 PPM exceeds tolerance 500 PPM
Dec 22 12:04:10 hoge ntpd[7957]: frequency error 500 PPM exceeds tolerance 500 PPM
そして、ntpq -np の定期採取データでは、次のように offset が大きくなり続けている状態でした。
[root@hoge act27m48_1]# zcat actlog/ntpq-np.7.gz | reduce_actlog -i 7200
2017-12-20 03:21:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-20 03:21:12 ==============================================================================
2017-12-20 03:21:12  157.7.208.12    133.243.238.244  2 u  803 1024  377   21.591  29171.2 1948.21
2017-12-20 03:21:12  157.7.153.56    133.243.238.244  2 u  394 1024   77   49.348  29404.9 2474.12
2017-12-20 03:21:12  162.210.110.4   216.218.254.202  2 u  436 1024  367  187.280  29898.2 2892.76
2017-12-20 03:21:12  203.112.17.81   203.112.1.4      4 u  206 1024  377   22.303  30034.7 2416.41

2017-12-20 05:21:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-20 05:21:12 ==============================================================================
2017-12-20 05:21:12  157.7.208.12    133.243.238.244  2 u  577 1024  377   21.715  33002.6 1976.60
2017-12-20 05:21:12  157.7.153.56    133.243.238.244  2 u  236 1024  377   18.845  33191.1 1962.56
2017-12-20 05:21:12  162.210.110.4   216.218.192.202  2 u  243 1024  377  171.204  33157.1 2007.93
2017-12-20 05:21:12  203.112.17.81   203.112.1.4      4 u  980 1024  377   23.695  33348.4 2461.91

2017-12-20 07:21:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-20 07:21:12 ==============================================================================
2017-12-20 07:21:12  157.7.208.12    133.243.238.244  2 u  471 1024  377   23.319  37320.8 2407.92
2017-12-20 07:21:12  157.7.153.56    10.84.87.146     2 u   63 1024  377   17.479  36987.7 1952.78
2017-12-20 07:21:12  162.210.110.4   216.218.192.202  2 u 1029 1024  377  174.197  37022.4 2489.83
2017-12-20 07:21:12  203.112.17.81   203.112.1.4      4 u  832 1024  377   37.843  36601.8 1961.26

2017-12-20 09:21:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-20 09:21:12 ==============================================================================
2017-12-20 09:21:12  157.7.208.12    133.243.238.243  2 u  302 1024  377   23.595  41119.4 2428.08
2017-12-20 09:21:12  157.7.153.56    133.243.238.243  2 u  951 1024  377   20.092  40783.7 2421.30
2017-12-20 09:21:12  162.210.110.4   216.218.254.202  2 u  861 1024  357  227.002  40794.2 2819.32
2017-12-20 09:21:12  203.112.17.81   203.112.1.4      4 u  593 1024  367   24.574  40960.9 2878.66

2017-12-20 11:21:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-20 11:21:12 ==============================================================================
2017-12-20 11:21:12  157.7.208.12    133.243.238.244  2 u  167 1024  375   24.937  44902.5 2908.56
2017-12-20 11:21:12  157.7.153.56    103.1.106.69     2 u  721 1024  377   23.686  44656.0 2485.00
2017-12-20 11:21:12  162.210.110.4   216.218.254.202  2 u  673 1024  377  168.522  41373.8 1917.92
2017-12-20 11:21:12  203.112.17.81   203.112.1.4      4 u  353 1024  357   27.599  44798.3 2838.39

2017-12-20 13:21:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-20 13:21:12 ==============================================================================
2017-12-20 13:21:12  157.7.208.12    133.243.238.244  2 u  947 1024  137   23.724  47656.8 2561.88
2017-12-20 13:21:12  157.7.153.56    133.243.238.164  2 u  517 1024  375   20.906  48433.1 2923.86
2017-12-20 13:21:12  162.210.110.4   216.218.254.202  2 u  398 1024  377  161.771  47935.8 2050.31
2017-12-20 13:21:12  203.112.17.81   203.112.1.4      4 u  149 1024  377   21.381  48623.0 2463.45

2017-12-20 15:21:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-20 15:21:12 ==============================================================================
2017-12-20 15:21:12  157.7.208.12    133.243.238.244  2 u  757 1024  367   25.141  52019.7 2874.31
2017-12-20 15:21:12  157.7.153.56    133.243.238.163  2 u  279 1024  377   22.055  52265.0 2455.92
2017-12-20 15:21:12  162.210.110.4   216.218.192.202  2 u  243 1024  377  198.720  52260.0 2454.19
2017-12-20 15:21:12  203.112.17.81   203.112.1.4      4 u 1026 1024  337   22.962  51880.8 2753.55

2017-12-20 17:21:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-20 17:21:12 ==============================================================================
2017-12-20 17:21:12  157.7.208.12    133.243.238.244  2 u  606 1024  377   20.566  55803.7 2421.95
2017-12-20 17:21:12  157.7.153.56    133.243.238.243  2 u   28 1024  377   28.573  55573.5 1999.49
2017-12-20 17:21:12  162.210.110.4   216.218.192.202  2 u   54 1024  377  199.352  55004.9 1610.15
2017-12-20 17:21:12  203.112.17.81   203.112.1.4      4 u 1924 1024  376   21.054  54573.8 1958.08

2017-12-20 19:21:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-20 19:21:12 ==============================================================================
2017-12-20 19:21:12  157.7.208.12    133.243.238.243  2 u  466 1024  377   20.950  59584.6 2416.40
2017-12-20 19:21:12  157.7.153.56    103.1.106.69     2 u 1955 1024  356   22.742  58262.9 2388.64
2017-12-20 19:21:12  162.210.110.4   216.218.192.202  2 u  957 1024  377  212.612  59303.4 2445.12
2017-12-20 19:21:12  203.112.17.81   203.112.1.4      4 u  711 1024  175   63.793  59463.6 3142.28

2017-12-20 21:21:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-20 21:21:12 ==============================================================================
2017-12-20 21:21:12  157.7.208.12    133.243.238.244  2 u  245 1024  377   24.519  62854.3 1972.96
2017-12-20 21:21:12  157.7.153.56    10.84.87.146     2 u 1818 1024  156   26.158  62048.7 2702.15
2017-12-20 21:21:12  162.210.110.4   216.218.254.202  2 u  778 1024  377  319.841  63048.6 2401.36
2017-12-20 21:21:12  203.112.17.81   203.112.1.4      4 u 1558 1024  202   79.498  62739.2 4552.75
施した設定は次の通りです。
[root@hoge act27m48_1]# less actlog/trackfile/2017-12/23-Sat-0341.diff.gz
...
-TOP   0100644  root     root      2017-04-12 22:25:40  /etc/ntp.conf
+TOP   0100644  root     root      2017-12-20 22:25:53  /etc/ntp.conf
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 # For more information about this file, see the man pages
 # ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).
@@ -56296,10 +51027,10 @@
 
 # Use public servers from the pool.ntp.org project.
 # Please consider joining the pool (http://www.pool.ntp.org/join.html).
-server 0.centos.pool.ntp.org iburst
-server 1.centos.pool.ntp.org iburst
-server 2.centos.pool.ntp.org iburst
-server 3.centos.pool.ntp.org iburst
+server 0.centos.pool.ntp.org iburst maxpoll 7
+server 1.centos.pool.ntp.org iburst maxpoll 7
+server 2.centos.pool.ntp.org iburst maxpoll 7
+server 3.centos.pool.ntp.org iburst maxpoll 7
 
 #broadcast 192.168.1.255 autokey       # broadcast server
 #broadcastclient                       # broadcast client
@@ -62182,6 +56913,532 @@
こちらを設定後に、drift 値をリセットして再起動 (2017-12-20 22:26頃) しました。下記は、bash の history から振り返りです。echo 0 > /var/lib/ntp/drift でもいいはずですが、この時は削除してました。
[root@hoge ~]# rm /var/lib/ntp/drift
[root@hoge ~]# systemctl start ntpd.service
次は、収束に向かった時間帯のデータです。
[root@hoge act27m48_1]# zcat actlog/ntpq-np.{6,5,4}.gz | reduce_actlog -i 14400
2017-12-21 03:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-21 03:27:12 ==============================================================================
2017-12-21 03:27:12 +88.198.12.78    254.48.138.1     2 u   16   64  377  345.262  56792.7  70.685
2017-12-21 03:27:12 +62.168.65.36    10.0.0.1         4 u   42   64  377  347.361  56808.1  95.757
2017-12-21 03:27:12 *160.16.75.242   103.1.106.69     2 u   50   64  377   17.471  56932.2  92.188
2017-12-21 03:27:12 +77.78.107.252   193.79.237.14    2 u   21   64  377  345.141  56783.5  74.145

2017-12-21 07:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-21 07:27:12 ==============================================================================
2017-12-21 07:27:12 +88.198.12.78    192.53.103.108   2 u   61   64  377  320.188  49880.2 104.438
2017-12-21 07:27:12 +62.168.65.36    10.0.0.1         4 u    6   64  377  377.985  49867.2  97.867
2017-12-21 07:27:12 *160.16.75.242   103.1.106.69     2 u   56   64  377   18.170  49860.1  93.587
2017-12-21 07:27:12 +77.78.107.252   193.79.237.14    2 u   18   64  377  291.710  49848.3  75.983

2017-12-21 11:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-21 11:27:12 ==============================================================================
2017-12-21 11:27:12 +88.198.12.78    192.53.103.108   2 u    3   64  377  331.510  42933.5 136.385
2017-12-21 11:27:12 -62.168.65.36    10.0.0.1         4 u   57   64  377  333.708  42801.5  91.268
2017-12-21 11:27:12 *160.16.75.242   103.1.106.69     2 u    1   64  377   19.543  42854.0  91.711
2017-12-21 11:27:12 +77.78.107.252   193.79.237.14    2 u   64   64  377  339.216  43001.7 179.162

2017-12-21 15:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-21 15:27:12 ==============================================================================
2017-12-21 15:27:12 +88.198.12.78    131.188.3.220    2 u   44   64  377  393.819  35847.8  67.966
2017-12-21 15:27:12 +62.168.65.36    10.0.0.1         4 u   51   64  337  401.860  36045.8 247.499
2017-12-21 15:27:12 *160.16.75.242   103.1.106.69     2 u   58   64  377   20.191  35969.4  80.117
2017-12-21 15:27:12 +77.78.107.252   193.79.237.14    2 u   60   64  377  293.774  36014.0 152.626

2017-12-21 19:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-21 19:27:12 ==============================================================================
2017-12-21 19:27:12 +88.198.12.78    192.53.103.108   2 u    1   64  177  406.766  29028.5 212.348
2017-12-21 19:27:12 +62.168.65.36    10.0.0.1         4 u   32   64  377  409.769  28954.1 171.501
2017-12-21 19:27:12 *160.16.75.242   103.1.106.69     2 u   17   64  377   18.957  28934.9  78.838
2017-12-21 19:27:12 +77.78.107.252   193.79.237.14    2 u   29   64  377  363.591  28820.2  95.755

2017-12-21 23:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-21 23:27:12 ==============================================================================
2017-12-21 23:27:12 +88.198.12.78    131.188.3.221    2 u   49   64  377  473.349  21821.2  79.942
2017-12-21 23:27:12 -62.168.65.36    10.0.0.1         4 u   35   64  277  479.798  21832.4  77.411
2017-12-21 23:27:12 *160.16.75.242   103.1.106.69     2 u   64   64  377   19.829  21882.8 146.781
2017-12-21 23:27:12 +77.78.107.252   193.79.237.14    2 u   19   64  377  330.402  22054.9 203.061

2017-12-22 03:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-22 03:27:12 ==============================================================================
2017-12-22 03:27:12 +88.198.12.78    131.188.3.221    2 u   35   64  377  458.565  14876.5  54.687
2017-12-22 03:27:12 -62.168.65.36    10.0.0.1         4 u   15   64  377  500.141  14913.4  87.029
2017-12-22 03:27:12 *160.16.75.242   103.1.106.69     2 u   64   64  377   21.428  14939.8 117.483
2017-12-22 03:27:12 +77.78.107.252   193.79.237.14    2 u   15   64  377  314.150  15046.0 150.638

2017-12-22 07:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-22 07:27:12 ==============================================================================
2017-12-22 07:27:12 +88.198.12.78    192.53.103.108   2 u   10   64  377  417.045  8068.63 187.511
2017-12-22 07:27:12 -62.168.65.36    10.0.0.1         4 u   14   64  377  417.965  7880.89  95.622
2017-12-22 07:27:12 *160.16.75.242   103.1.106.69     2 u   49   64  377   19.356  8112.88 113.098
2017-12-22 07:27:12 +77.78.107.252   193.79.237.14    2 u    4   64  377  299.745  7951.78  88.928

2017-12-22 11:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-22 11:27:12 ==============================================================================
2017-12-22 11:27:12 +88.198.12.78    192.53.103.108   2 u   12   64  377  393.500  911.438  83.464
2017-12-22 11:27:12 +62.168.65.36    10.0.0.1         4 u   13   64  377  368.658  928.835  88.341
2017-12-22 11:27:12 *160.16.75.242   103.1.106.69     2 u   20   64  377   19.737  931.036 148.066
2017-12-22 11:27:12 +77.78.107.252   193.79.237.14    2 u   32   64  377  293.024  1078.17 145.997

2017-12-22 15:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-22 15:27:12 ==============================================================================
2017-12-22 15:27:12 +88.198.12.78    192.53.103.108   2 u  116   64  366  350.150  -291.90  56.264
2017-12-22 15:27:12 -62.168.65.36    10.0.0.1         4 u   23   64  377  364.775  -287.10  66.848
2017-12-22 15:27:12 *160.16.75.242   103.1.106.69     2 u   63   64  377   17.308  -268.27   8.694
2017-12-22 15:27:12 +77.78.107.252   193.79.237.14    2 u   15   64  377  304.360  -284.94  48.563

2017-12-22 19:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-22 19:27:12 ==============================================================================
2017-12-22 19:27:12 +88.198.12.78    130.149.17.21    2 u   32   64  375  350.803  -105.18  35.724
2017-12-22 19:27:12 -62.168.65.36    10.0.0.1         4 u   28   64  355  397.018  -133.22  65.489
2017-12-22 19:27:12 *160.16.75.242   103.1.106.69     2 u   64   64  377   18.326  -77.383   2.308
2017-12-22 19:27:12 +77.78.107.252   193.79.237.14    2 u   32   64  377  274.139  -83.737  53.700

2017-12-22 23:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-22 23:27:12 ==============================================================================
2017-12-22 23:27:12 +88.198.12.78    129.69.1.170     2 u   20   64  377  406.888  -82.067  62.065
2017-12-22 23:27:12 -62.168.65.36    10.0.0.1         4 u    2   64  377  459.460  -96.257  39.912
2017-12-22 23:27:12 *160.16.75.242   103.1.106.69     2 u   63   64  377   19.970  -20.498   2.315
2017-12-22 23:27:12 +77.78.107.252   193.79.237.14    2 u    6   64  377  272.188  -31.527  50.493

2017-12-23 03:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-23 03:27:12 ==============================================================================
2017-12-23 03:27:12 +88.198.12.78    130.149.17.8     2 u   65   64  377  407.321  -59.207  58.910
2017-12-23 03:27:12 -62.168.65.36    10.0.0.1         4 u   33   64  377  440.553  -71.257  58.737
2017-12-23 03:27:12 *160.16.75.242   103.1.106.69     2 u    3   64  377   17.629   -5.087   2.468
2017-12-23 03:27:12 +77.78.107.252   193.79.237.14    2 u    3   64  377  262.537  -12.461  46.262

2017-12-23 07:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-23 07:27:12 ==============================================================================
2017-12-23 07:27:12 +88.198.12.78    192.53.103.108   2 u   14  128  377  353.793  -38.173  31.635
2017-12-23 07:27:12 -62.168.65.36    10.0.0.1         4 u  128  128  357  314.421   -6.258  65.600
2017-12-23 07:27:12 *160.16.75.242   103.1.106.69     2 u   56  128  377   20.802   -2.770   2.526
2017-12-23 07:27:12 +77.78.107.252   193.79.237.14    2 u   35  128  377  293.276  -21.234  44.357

2017-12-23 11:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-23 11:27:12 ==============================================================================
2017-12-23 11:27:12 +88.198.12.78    131.188.3.221    2 u   72  128  377  355.471  -32.193  52.514
2017-12-23 11:27:12 -62.168.65.36    10.0.0.1         4 u   35  128  377  322.267   -6.150  65.073
2017-12-23 11:27:12 *160.16.75.242   103.1.106.69     2 u    6  128  377   17.714   -0.544  21.378
2017-12-23 11:27:12 +77.78.107.252   193.79.237.14    2 u   89  128  377  273.443   -7.268  69.730

2017-12-23 15:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-23 15:27:12 ==============================================================================
2017-12-23 15:27:12 +88.198.12.78    130.149.17.21    2 u  218  128  376  398.335  -36.899  66.687
2017-12-23 15:27:12 -62.168.65.36    10.0.0.1         4 u   69  128  377  399.607  -50.116  52.741
2017-12-23 15:27:12 *160.16.75.242   103.1.106.69     2 u   54  128  377   18.504    3.443   2.251
2017-12-23 15:27:12 +77.78.107.252   193.79.237.14    2 u  130  128  377  286.565   -6.324  43.542

2017-12-23 19:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-23 19:27:12 ==============================================================================
2017-12-23 19:27:12 +88.198.12.78    192.53.103.108   2 u    3  128  377  420.145  -59.828  63.652
2017-12-23 19:27:12 -62.168.65.36    10.0.0.1         4 u  123  128  277  427.106  -55.130  69.321
2017-12-23 19:27:12 *160.16.75.242   103.1.106.69     2 u   25  128  377   18.303    5.238   2.064
2017-12-23 19:27:12 +77.78.107.252   193.79.237.14    2 u  103  128  377  266.104   -2.941  57.983

2017-12-23 23:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-23 23:27:12 ==============================================================================
2017-12-23 23:27:12 +88.198.12.78    192.53.103.108   2 u   72  128  377  450.629  -74.868  52.780
2017-12-23 23:27:12 -62.168.65.36    10.0.0.1         4 u   56  128  377  424.857  -52.707  45.454
2017-12-23 23:27:12 *160.16.75.242   103.1.106.69     2 u   53  128  377   18.711    0.328   5.487
2017-12-23 23:27:12 +77.78.107.252   193.79.237.14    2 u  100  128  377  279.764   -7.365  46.453

2017-12-24 03:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-24 03:27:12 ==============================================================================
2017-12-24 03:27:12 +88.198.12.78    192.53.103.108   2 u    1  128  367  403.737  -48.499  55.266
2017-12-24 03:27:12 -62.168.65.36    10.0.0.1         4 u   17  128  377  417.837  -53.391  69.070
2017-12-24 03:27:12 *160.16.75.242   103.1.106.69     2 u   10  128  377   19.883    3.392   1.573
2017-12-24 03:27:12 +77.78.107.252   193.79.237.14    2 u   73  128  377  315.090  -27.232  37.709
最後に、今現在の drift 値です。
[root@hoge ~]# ntpq -np
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
-178.33.126.120  213.251.128.249  2 u  128  128  377  286.983   61.092  46.824
+129.250.35.251  249.224.99.213   2 u   38  128  377   19.186   73.376   2.471
+45.76.221.157   103.1.106.69     2 u   95  128  377   21.958   76.460   1.490
*85.114.26.194   .DTS.            1 u   95  128  377  223.261  107.454  34.164
[root@hoge ~]# cat /var/lib/ntp/drift 
-14.359
ThinkPad は、何台も利用してきましたが、今回のように maxpoll の調整が必要になったことはなかったのですが、やっぱり最新の高度化した省電力機能のせいではないか?という憶測を抱いています。
それにしても、ThinkPad 25 のキーボード(バックライト光らせるとカッコイイ)は、なかなか快適です。CentOS 7.4 の動作もほとんど問題なし。どうにかして、Linux でも GeForce 940MX を活用できないのか?とは思うんですが、FireFox の動き(スクロール)もスムーズだし、ま、いいか。
[root@hoge ~]# dmidecode --type 1
# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 3.0.0 present.

Handle 0x000C, DMI type 1, 27 bytes
System Information
 Manufacturer: LENOVO
 Product Name: 20K70003JP
 Version: ThinkPad 25
 Serial Number: xxxxxxxx
 UUID: 307F584C-2BAE-11B2-A85C-C18B88313792
 Wake-up Type: Power Switch
 SKU Number: LENOVO_MT_20K7_BU_Think_FM_ThinkPad 25
 Family: ThinkPad 25

[root@hoge ~]# uversion 
CentOS Linux release 7.4.1708           20K70003JP

BIOS version  : N1QET63W (1.38 )  08/22/2017
System serial : xxxxxxxx

CPU model  : Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
Processors : 4  (1 sockets, 2 cores per CPU, Hyperthreading: enabled)

Memory : 15649 MB

Linux : 3.10.0-693.11.6.el7.x86_64  x86_64  (hoge)

[root@hoge ~]# lspci
00:00.0 Host bridge: Intel Corporation Device 5904 (rev 02)
00:02.0 VGA compatible controller: Intel Corporation Device 5916 (rev 02)
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-LP Thermal subsystem (rev 21)
00:15.0 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 (rev 21)
00:16.0 Communication controller: Intel Corporation Sunrise Point-LP CSME HECI #1 (rev 21)
00:1c.0 PCI bridge: Intel Corporation Device 9d10 (rev f1)
00:1c.6 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #7 (rev f1)
00:1d.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #9 (rev f1)
00:1d.2 PCI bridge: Intel Corporation Device 9d1a (rev f1)
00:1f.0 ISA bridge: Intel Corporation Device 9d58 (rev 21)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC (rev 21)
00:1f.3 Audio device: Intel Corporation Device 9d71 (rev 21)
00:1f.4 SMBus: Intel Corporation Sunrise Point-LP SMBus (rev 21)
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (4) I219-V (rev 21)
02:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 940MX] (rev a2)
04:00.0 Network controller: Intel Corporation Wireless 8265 / 8275 (rev 78)
3e:00.0 Non-Volatile memory controller: Lenovo Device 0004
2018-04-08追記
ひさびさに drift 値を確認してみました。
[root@hoge ~]# cat /var/lib/ntp/drift 
15.581
前に確認したときの値が、-14.359 だったのですが、今回は +15.581 と結構ブレていますね。仕事上、新旧いろいろなマシンを触ってますが、こんなにブレるマシンは見たことなかったです。

2016年12月12日月曜日

RHEL7 カーネルの うるう秒(閏秒)に関する不具合

次回の うるう秒挿入(日本時間2017年1月1日8時59分59秒)が迫ってますが、先週、新たに RHEL7 のカーネル不具合情報と修正版カーネルが公開されたので、備忘録として書いておこうと思います。

http://rhn.redhat.com/errata/RHBA-2016-2862.html
https://access.redhat.com/solutions/2766351

カーネル 3.10.0-514.2.2.el7 で修正されたようですが、すぐにアップデートできないなら、ntpd の slew モードを使っておけばよいです。または、ntpd を一時的に止めておく方法も可能。ちなみに、今回のRHEL7のカーネル不具合は、発生確率がけっこう低い (500回試して1回程度と記載されてます) ようです。
ChangeLog より抜粋です。
* Wed Nov 16 2016 Frantisek Hrbata <fhrbata@hrbata.com> [3.10.0-514.2.2.el7]
- [kernel] timekeeping: Copy the shadow-timekeeper over the real timekeeper last (Prarit Bhargava) [1395577 1344747]

■関連記事
2012年7月1日の うるう秒 調整時の ntpd の挙動観測データ

2015年7月1日水曜日

2015年7月1日の うるう秒 調整時の ntpd の挙動観測データ

本日(2015年7月1日 9:00 JST)、うるう秒挿入が実施されるので、手持ちのマシンで観測データを記録してみたいと思います。
マシン環境は次のとおりです。
[root@hoge ~]# cat /etc/centos-release
CentOS release 6.6 (Final)
[root@hoge ~]# uname -a
Linux hoge 2.6.32-504.23.4.el6.x86_64 #1 SMP Tue Jun 9 20:57:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@hoge ~]# dmidecode -s system-manufacturer ; dmidecode -s system-version
LENOVO
ThinkPad W520
[root@hoge ~]# ps -fC ntpd
UID        PID  PPID  C STIME TTY          TIME CMD
ntp      12778     1  0 Jun30 ?        00:00:10 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g -x
[root@hoge ~]# rpm -q ntp
ntp-4.2.6p5-3.el6.centos.x86_64
ThinkPad W520 + CentOS 6.6 + ntp 4.2.6系(slewモード設定)という環境です。

まず、Leap Indicator が到着しているか確認です。予め、昨日の朝から ntpq -c readvar を定期採取するように仕込んでおきました。
[root@hoge ~]# less ntpq-c_readvar.log
...
2015-06-30 09:31:12 associd=0 status=0615 leap_none, sync_ntp, 1 event, clock_sync,
2015-06-30 09:31:12 version="ntpd 4.2.6p5@1.2349-o Mon Mar 16 14:53:03 UTC 2015 (1)",
2015-06-30 09:31:12 processor="x86_64", system="Linux/2.6.32-504.23.4.el6.x86_64", leap=00,
2015-06-30 09:31:12 stratum=3, precision=-24, rootdelay=23.151, rootdisp=315.573,
2015-06-30 09:31:12 refid=106.187.50.84,
2015-06-30 09:31:12 reftime=d93c60c7.306f0aee  Tue, Jun 30 2015  9:26:47.189,
2015-06-30 09:31:12 clock=d93c61d0.45e5528d  Tue, Jun 30 2015  9:31:12.273, peer=18506, tc=6,
2015-06-30 09:31:12 mintc=3, offset=-270.419, frequency=198.276, sys_jitter=4.409,
2015-06-30 09:31:12 clk_jitter=10.496, clk_wander=6.132

2015-06-30 09:32:12 associd=0 status=4615 leap_add_sec, sync_ntp, 1 event, clock_sync,
2015-06-30 09:32:12 version="ntpd 4.2.6p5@1.2349-o Mon Mar 16 14:53:03 UTC 2015 (1)",
2015-06-30 09:32:12 processor="x86_64", system="Linux/2.6.32-504.23.4.el6.x86_64", leap=01,
2015-06-30 09:32:12 stratum=3, precision=-24, rootdelay=52.667, rootdisp=321.239,
2015-06-30 09:32:12 refid=202.234.64.222,
2015-06-30 09:32:12 reftime=d93c61bd.33a3a956  Tue, Jun 30 2015  9:30:53.201,
2015-06-30 09:32:12 clock=d93c620c.4797c6d6  Tue, Jun 30 2015  9:32:12.279, peer=18505, tc=6,
2015-06-30 09:32:12 mintc=3, offset=-270.889, frequency=194.208, sys_jitter=3.803,
2015-06-30 09:32:12 clk_jitter=9.819, clk_wander=5.913

2015-06-30 09:33:12 associd=0 status=461a leap_add_sec, sync_ntp, 1 event, leap_disarmed,
2015-06-30 09:33:12 version="ntpd 4.2.6p5@1.2349-o Mon Mar 16 14:53:03 UTC 2015 (1)",
2015-06-30 09:33:12 processor="x86_64", system="Linux/2.6.32-504.23.4.el6.x86_64", leap=01,
2015-06-30 09:33:12 stratum=3, precision=-24, rootdelay=19.556, rootdisp=307.926,
2015-06-30 09:33:12 refid=122.215.240.52,
2015-06-30 09:33:12 reftime=d93c61f5.2f46436e  Tue, Jun 30 2015  9:31:49.184,
2015-06-30 09:33:12 clock=d93c6248.46b5ce84  Tue, Jun 30 2015  9:33:12.276, peer=18503, tc=6,
2015-06-30 09:33:12 mintc=3, offset=-262.259, frequency=193.207, sys_jitter=5.568,
2015-06-30 09:33:12 clk_jitter=9.679, clk_wander=5.543
...
Leap Indicator は、うるう秒の 24時間前 から通知されることになってますが、わたしのマシンで認識されたのは、9時半頃だったようです。

次は、現在(6:16)の状態です。
[root@hoge ~]# date
Wed Jul  1 06:16:29 JST 2015
[root@hoge ~]# ntpq -c readvar
associd=0 status=461a leap_add_sec, sync_ntp, 1 event, leap_disarmed,
version="ntpd 4.2.6p5@1.2349-o Mon Mar 16 14:53:03 UTC 2015 (1)",
processor="x86_64", system="Linux/2.6.32-504.23.4.el6.x86_64", leap=01,
stratum=3, precision=-24, rootdelay=54.844, rootdisp=62.648,
refid=202.234.64.222,
reftime=d93d82c0.32fbf279  Wed, Jul  1 2015  6:04:00.199,
clock=d93d85b6.7bb5c81a  Wed, Jul  1 2015  6:16:38.483, peer=18505, tc=7,
mintc=3, offset=-2.242, frequency=-1.742, sys_jitter=1.101,
clk_jitter=0.896, clk_wander=0.023
[root@hoge ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
-122x215x240x52. 133.243.238.164  2 u  124  128  377   17.892   -0.253   0.572
+chobi.paina.jp  131.112.125.48   2 u   98  128  377   19.177   -2.397  53.470
*ntp.kiba.net    193.221.26.33    2 u  107  128  373   31.772   -3.135   5.208
+gw1.kohaaloha.c 133.243.238.244  2 u  110  128  377   19.573   -1.331   0.842
[root@hoge ~]# grep ^server /etc/ntp.conf  ※いじっているのは次の箇所だけです
server 0.centos.pool.ntp.org iburst maxpoll 8
server 1.centos.pool.ntp.org iburst maxpoll 8
server 2.centos.pool.ntp.org iburst maxpoll 8
server 3.centos.pool.ntp.org iburst maxpoll 8
[root@hoge ~]# ntptime
ntp_gettime() returns code 5 (ERROR)
  time d93d85c3.123a8000  Wed, Jul  1 2015  6:16:51.071, (.071205),
  maximum error 16000000 us, estimated error 16 us, TAI offset 0
ntp_adjtime() returns code 5 (ERROR)
  modes 0x0 (),
  offset 0.000 us, frequency 0.000 ppm, interval 1 s,
  maximum error 16000000 us, estimated error 16 us,
  status 0x41 (PLL,UNSYNC),
  time constant 7, precision 1.000 us, tolerance 500 ppm,
続きは、また今晩書きたいと思います。

2015-07-02追記
次回の参考になるよう、slew モードで1秒が補正されるまでのデータを残しておきます。
まず、munin のグラフです。


次は、ntpq -np の出力を定期採取したデータです。
                         remote           refid      st t when poll reach   delay   offset  jitter
                    ==============================================================================
2015-07-01 04:02:14 *106.xxx.yy.zz   133.243.u.vvv    2 u   11   64  377   19.788   -2.099   0.993
2015-07-01 04:32:14 +106.xxx.yy.zz   133.243.u.vvv    2 u   32  128  377   19.714   -1.349   0.772
2015-07-01 05:02:14 *106.xxx.yy.zz   133.243.u.vvv    2 u  118  128  377   20.725   -2.126   2.264
2015-07-01 05:32:14 *106.xxx.yy.zz   133.243.u.vvv    2 u   76  128  377   20.475   -1.875   1.471
2015-07-01 06:02:14 +106.xxx.yy.zz   133.243.u.vvv    2 u   27  128  377   20.205   -1.154   2.433
2015-07-01 06:32:14 *106.xxx.yy.zz   133.243.u.vvv    2 u  122  128  377   21.338   -0.645   2.110
2015-07-01 07:02:14 *106.xxx.yy.zz   133.243.u.vvv    2 u  202  256  377   20.592   -2.101   1.402
2015-07-01 07:32:14 +106.xxx.yy.zz   133.243.u.vvv    2 u  143  256  377   20.653   -2.038   3.277
2015-07-01 08:02:14 +106.xxx.yy.zz   133.243.u.vvv    2 u  111  256  377   20.023   -2.303   0.631
2015-07-01 08:32:14 *106.xxx.yy.zz   133.243.u.vvv    2 u   60  256  377   19.803   -2.709   0.536
2015-07-01 09:02:14 +106.xxx.yy.zz   133.243.u.vvv    2 u    9  256  377   21.023   -1.460 378.296
2015-07-01 09:32:14 x106.xxx.yy.zz   133.243.u.vvv    2 u  231  256  377   18.791  -1001.8 377.872
2015-07-01 10:02:14 *106.xxx.yy.zz   133.243.u.vvv    2 u  187  256  377   18.732  -850.50 128.921
2015-07-01 10:32:14 x106.xxx.yy.zz   133.243.u.vvv    2 u  140  256  377   19.959  -338.47 202.357
2015-07-01 11:02:14 x106.xxx.yy.zz   133.243.u.vvv    2 u  108  256  377   19.959  -338.47 124.808
2015-07-01 11:32:14 +106.xxx.yy.zz   133.243.u.vvv    2 u   94  256  377   18.902  -92.918  48.587
2015-07-01 12:02:14 *106.xxx.yy.zz   133.243.u.vvv    2 u   46  256  377   19.725  -46.976  24.980
2015-07-01 12:32:14 -106.xxx.yy.zz   133.243.u.vvv    2 u   14  256  377   21.471   24.117  16.097
2015-07-01 13:02:14 *106.xxx.yy.zz   133.243.u.vvv    2 u  247  256  377   21.222   33.890  23.763
2015-07-01 13:32:14 +106.xxx.yy.zz   133.243.u.vvv    2 u  202  256  377   21.370   47.732  20.740
2015-07-01 14:02:14 *106.xxx.yy.zz   133.243.u.vvv    2 u  160  256  377   20.123   66.180  31.655
2015-07-01 14:32:14 +106.xxx.yy.zz   133.243.u.vvv    2 u  128  256  377   19.378   67.970   5.429
2015-07-01 15:02:14 *106.xxx.yy.zz   133.243.u.vvv    2 u   99  256  377   19.839   71.999   0.685
2015-07-01 15:32:14 +106.xxx.yy.zz   133.243.u.vvv    2 u   50  256  377   20.541   71.707   3.409
2015-07-01 16:02:14 *106.xxx.yy.zz   133.243.u.vvv    2 u   10  256  377   20.986   73.016   1.333
2015-07-01 16:32:14 *106.xxx.yy.zz   133.243.u.vvv    2 u  252  256  377   20.864   71.603   3.392
2015-07-01 17:02:14 +106.xxx.yy.zz   133.243.u.vvv    2 u  215  256  377   21.057   72.781   3.576
2015-07-01 17:32:14 +106.xxx.yy.zz   133.243.u.vvv    2 u  153  256  377   20.601   68.391   5.254
2015-07-01 18:02:14 +106.xxx.yy.zz   133.243.u.vvv    2 u  108  256  377   21.467   66.549   2.707
2015-07-01 18:32:14 +106.xxx.yy.zz   133.243.u.vvv    2 u   60  256  377   21.532   63.015  36.577
2015-07-01 19:02:14 *106.xxx.yy.zz   133.243.u.vvv    2 u    7  256  377   21.525   58.468   1.322
2015-07-01 19:32:14 +106.xxx.yy.zz   133.243.u.vvv    2 u  233  256  377   22.197   57.370   3.762
2015-07-01 20:02:14 +106.xxx.yy.zz   133.243.u.vvv    2 u  184  256  377   19.177   58.782  30.390
2015-07-01 20:32:14 +106.xxx.yy.zz   133.243.u.vvv    2 u  122  256  377   20.570   54.714   1.959
2015-07-01 21:02:14 *106.xxx.yy.zz   133.243.u.vvv    2 u   79  256  377   20.570   54.714   5.023
2015-07-01 21:32:14 *106.xxx.yy.zz   133.243.u.vvv    2 u   50  256  377   21.628   50.943   4.072
2015-07-01 22:02:14 *106.xxx.yy.zz   133.243.u.vvv    2 u    3  256  377   36.953   41.933   4.676
2015-07-01 22:32:14 +106.xxx.yy.zz   133.243.u.vvv    2 u  224  256  377   37.968   44.620  46.186
2015-07-01 23:02:14 +106.xxx.yy.zz   133.243.u.vvv    2 u  181  256  377   36.238   41.819  16.091
2015-07-01 23:32:14 +106.xxx.yy.zz   133.243.u.vvv    2 u  152  256  377   36.340   46.415   7.950
2015-07-02 00:02:14 +106.xxx.yy.zz   133.243.u.vvv    2 u   89  256  377   39.487   42.372  11.150
2015-07-02 00:32:14 +106.xxx.yy.zz   133.243.u.vvv    2 u   59  128  377   32.067   32.882   5.267
2015-07-02 01:02:14 *106.xxx.yy.zz   133.243.u.vvv    2 u   21   64  377   21.239   13.838   6.248
2015-07-02 01:32:14 +106.xxx.yy.zz   133.243.u.vvv    2 u   50  128  377   22.461   12.798   3.011
2015-07-02 02:02:14 +106.xxx.yy.zz   133.243.u.vvv    2 u   11  256  377   21.303   11.877  16.779
2015-07-02 02:32:14 +106.xxx.yy.zz   133.243.u.vvv    2 u  249  256  377   21.504   16.263   6.163
2015-07-02 03:02:14 *106.xxx.yy.zz   133.243.u.vvv    2 u   61  128  377   20.093   16.886   1.101
2015-07-02 03:32:16 *106.xxx.yy.zz   133.243.u.vvv    2 u   24   64  377   20.018    5.750   2.548
2015-07-02 04:02:16 +106.xxx.yy.zz   133.243.u.vvv    2 u   48   64  377   21.012    2.840   0.944
2015-07-02 04:32:16 *106.xxx.yy.zz   133.243.u.vvv    2 u   63  128  377   19.750    3.482   0.846
2015-07-02 05:02:16 *106.xxx.yy.zz   133.243.u.vvv    2 u   12   64  377   19.643    4.361  26.509
2015-07-02 05:32:16 +106.xxx.yy.zz   133.243.u.vvv    2 u   41   64  377   21.850    1.910   2.910
2015-07-02 06:02:16 +106.xxx.yy.zz   133.243.u.vvv    2 u   12   64  377   20.327    1.325   7.538
2015-07-02 06:32:16 *106.xxx.yy.zz   133.243.u.vvv    2 u   49   64  377   19.247    1.809   3.580
2015-07-02 07:02:16 *106.xxx.yy.zz   133.243.u.vvv    2 u   77  128  377   20.714   -0.037   1.250
2015-07-02 07:32:16 *106.xxx.yy.zz   133.243.u.vvv    2 u   28  128  377   20.356    1.243   0.894
2015-07-02 08:02:16 +106.xxx.yy.zz   133.243.u.vvv    2 u  260  256  377   21.686    2.613   2.557
2015-07-02 08:32:16 +106.xxx.yy.zz   133.243.u.vvv    2 u  227  256  377   20.114    2.458  16.880
2015-07-02 09:02:16 +106.xxx.yy.zz   133.243.u.vvv    2 u  187  256  377   21.051    3.840   0.556
2015-07-02 09:32:16 *106.xxx.yy.zz   133.243.u.vvv    2 u  150  256  377   21.165    3.337   6.229
2015-07-02 10:02:16 *106.xxx.yy.zz   133.243.u.vvv    2 u  105  128  377   20.724    2.008   1.382
実際は、上位サーバは4つ指定してあり、そのうちの1つについて 30 分毎のデータです。前回(2012-07-01)観測したマシンでは、offset が 10 ミリ秒より小さくなるまでに 27 時間かかりましたが、今回は maxpoll 8 を設定した効果が出たようで、18 時間半でした。

最後に、/var/log/messages 抜粋です。
[root@hoge ~]# who -b
         system boot  2015-06-30 06:00
[root@hoge ~]# grep ntp /var/log/messages
※データ採取準備をして1度マシンを再起動した
Jun 30 06:01:04 hoge ntpd[12771]: ntpd 4.2.6p5@1.2349-o Mon Mar 16 14:53:03 UTC 2015 (1)
Jun 30 06:01:04 hoge ntpd[12778]: proto: precision = 0.048 usec
Jun 30 06:01:04 hoge ntpd[12778]: 0.0.0.0 c01d 0d kern kernel time sync enabled
Jun 30 06:01:04 hoge ntpd[12778]: Listen and drop on 0 v4wildcard 0.0.0.0 UDP 123
Jun 30 06:01:04 hoge ntpd[12778]: Listen and drop on 1 v6wildcard :: UDP 123
Jun 30 06:01:04 hoge ntpd[12778]: Listen normally on 2 lo 127.0.0.1 UDP 123
Jun 30 06:01:04 hoge ntpd[12778]: Listen normally on 3 lo ::1 UDP 123
Jun 30 06:01:04 hoge ntpd[12778]: peers refreshed
Jun 30 06:01:04 hoge ntpd[12778]: Listening on routing socket on fd #20 for interface updates
Jun 30 06:01:04 hoge ntpd[12778]: Deferring DNS for 0.centos.pool.ntp.org 1
Jun 30 06:01:04 hoge ntpd[12778]: Deferring DNS for 1.centos.pool.ntp.org 1
Jun 30 06:01:04 hoge ntpd[12778]: Deferring DNS for 2.centos.pool.ntp.org 1
Jun 30 06:01:04 hoge ntpd[12778]: Deferring DNS for 3.centos.pool.ntp.org 1
Jun 30 06:01:04 hoge ntpd[12778]: 0.0.0.0 c016 06 restart
Jun 30 06:01:04 hoge ntpd[12778]: 0.0.0.0 c012 02 freq_set ntpd 500.000 PPM
Jun 30 06:01:07 hoge ntpd[12778]: Listen normally on 4 virbr0 192.168.122.1 UDP 123
Jun 30 06:01:07 hoge ntpd[12778]: peers refreshed
Jun 30 06:01:09 hoge ntpd[12778]: Listen normally on 5 eth0 fe80::f2de:f1ff:fef9:52c5 UDP 123
Jun 30 06:01:09 hoge ntpd[12778]: peers refreshed
Jun 30 06:01:22 hoge ntpd[12778]: Listen normally on 6 wlan0 fe80::2677:3ff:fe8f:224 UDP 123
Jun 30 06:01:22 hoge ntpd[12778]: peers refreshed
Jun 30 06:01:24 hoge ntpd[12778]: Listen normally on 7 wlan0 192.168.1.4 UDP 123
Jun 30 06:01:24 hoge ntpd[12778]: peers refreshed
Jun 30 06:01:24 hoge ntpd_intres[12786]: DNS 0.centos.pool.ntp.org -> 122.215.240.52
Jun 30 06:01:24 hoge ntpd_intres[12786]: DNS 1.centos.pool.ntp.org -> 157.7.154.23
Jun 30 06:01:24 hoge ntpd_intres[12786]: DNS 2.centos.pool.ntp.org -> 202.234.64.222
Jun 30 06:01:25 hoge ntpd_intres[12786]: DNS 3.centos.pool.ntp.org -> 106.187.50.84
Jun 30 06:01:31 hoge ntpd[12778]: 0.0.0.0 c615 05 clock_sync
Jun 30 09:32:53 hoge ntpd[12778]: 0.0.0.0 461a 0a leap_disarmed
Jul  1 09:00:00 hoge ntpd[12778]: 0.0.0.0 061b 0b leap_event
Jul  1 09:17:18 hoge ntpd[12778]: 0.0.0.0 0618 08 no_sys_peer
※以後はntpdからメッセージは出なかった
というわけで、めでたし、めでたし。

2015年6月17日水曜日

うるう秒(閏秒)の際にcronが二重に実行されるかも?という都市伝説(?)について

今年のうるう秒調整(2015年7月1日午前9:00日本時間)実施まで、あと二週間に迫りましたが、 うるう秒の際に cron ジョブが二重に実行されるかも?という都市伝説(?)を耳にしたことがあるので、CentOS 6 に関して調べてみました。
そもそも /var/log/cron を見渡すと、どれもこれも毎分 :01 秒を狙っている感じです。
[root@hoge ~]# tail /var/log/cron
Jun 16 00:10:01 hoge CROND[9508]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Jun 16 00:11:01 hoge CROND[9546]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Jun 17 01:33:31 hoge crond[2699]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 72% if used.)
Jun 17 01:33:31 hoge crond[2699]: (CRON) INFO (running with inotify support)
Jun 17 01:34:01 hoge CROND[5736]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Jun 17 01:35:01 hoge CROND[6163]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Jun 17 01:36:01 hoge CROND[6197]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Jun 17 01:37:01 hoge CROND[6223]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Jun 17 01:38:01 hoge CROND[6254]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Jun 17 01:39:01 hoge CROND[6736]: (root) CMD (/usr/lib64/sa/sa1 1 1)
それで検索してみますと、cronie について調べている先人の方がおられ、やはり毎分 :01 秒を狙ってスリープしているようです。
http://moro-archive.hatenablog.com/entry/2015/03/17/011823
なぜ、:01 秒狙いなのか?ソース上にはコメントないみたいですが、もしかしたら、うるう秒のことが視野に入っているということなのかも。

というわけで、あっけなく調査終了です。こういった実装なら、うるう秒の際に cron ジョブが二重に実行されるということは、なさそうです。

Linux カーネルのうるう秒調整は、:59 秒を 2 回続ける(ミリ秒単位だと ... :59.998 , :59.999 , :59.000 ... と進める)という実装になってますが、それって cron も意識しているのかもしれませんね。

■関連記事
2017年1月1日の うるう秒 調整時の ntpd の挙動観測データ (次回投稿するつもり)
2015年7月1日の うるう秒 調整時の ntpd の挙動観測データ
2012年7月1日の うるう秒 調整時の ntpd の挙動観測データ
ntpd を1日止めた場合のズレはどの程度か?

2015年6月2日火曜日

ntpd を1日止めた場合のズレはどの程度か?

巷で話題の2015年7月1日の閏秒(うるう秒)挿入まで、あと1ヶ月。少し前に、うるう秒対策手法の一つとして、ntpd を止めればいいのではと書いたのですが、実際 ntpd を1日止めた場合に、どのぐらい時刻がズレるのか実験してみました。
外部の NTP サーバから時刻を参照している内部 NTP サーバを止めてみて、下位の NTP クライアントの時刻がどの程度ズレるかを観測しました。




設備の都合上、2サンプルだけですが、だいたい 13 ミリ秒程度という結果になりました。ちなみに、両マシンともに、かなり古く(約10年もの)、上が Pentium4 3.06G (Northwood,FSB533Mhz)、下が PentiumD 950 3.40G (SL95V,C1) 搭載です。
OS は、どちらも CentOS 6 で、ntpd は slew モードで動作させました。

グラフは、munin によるものです。

■関連記事
2012年7月1日の うるう秒 調整時の ntpd の挙動観測データ
うるう秒(閏秒)の際にcronが二重に実行されるかも?という都市伝説(?)について
2015年7月1日の うるう秒 調整時の ntpd の挙動観測データ

2012年7月1日日曜日

2012年7月1日の うるう秒 調整時の ntpd の挙動観測データ

日本時間の 2012年7月1日午前9時 うるう秒 調整が実施されましたが、ntpd の補正がどのように振舞うのか、ntpq -np の出力を観測してみました。
CentOS 5 x86_64 + ntp-4.2.2p1-9.el5_3.2 (slew モード -x オプション) です。
                         remote           refid      st t when poll reach   delay   offset  jitter
                    ==============================================================================
2012-07-01 04:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  613 1024  377   12.831   -0.952  21.164
2012-07-01 04:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  363 1024  377   12.187   -1.422   0.422
2012-07-01 05:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  113 1024  377   11.911   -1.562   0.984
2012-07-01 05:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  887 1024  377   11.911   -1.562   0.485
2012-07-01 06:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  636 1024  377   13.371   -1.439   3.338
2012-07-01 06:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  389 1024  377   13.422   -1.389   2.102
2012-07-01 07:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  139 1024  377   10.875   -3.526   0.334
2012-07-01 07:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  916 1024  377   10.537   -4.184   0.992
2012-07-01 08:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  667 1024  377   11.885   -3.829   0.914
2012-07-01 08:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  419 1024  377   12.479   -2.801   0.037
2012-07-01 09:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  168 1024  377   11.131   -3.257  11.100
2012-07-01 09:32:18  219.xxx.yy.zz   192.168.u.vvv    2 u  942 1024  377   14.296  -1001.0 986.659
2012-07-01 10:02:18 +219.xxx.yy.zz   192.168.u.vvv    2 u  691 1024  377   11.954  -900.19 118.193
2012-07-01 10:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  443 1024  377   11.681  -795.11 100.385
2012-07-01 11:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  193 1024  377   16.832  -519.76  96.828
2012-07-01 11:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  969 1024  377   16.832  -519.76  83.788
2012-07-01 12:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  721 1024  377   12.516  -373.72  66.502
2012-07-01 12:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  474 1024  377   17.056  -246.34  51.731
2012-07-01 13:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  225 1024  377   15.727  -97.721  45.772
2012-07-01 13:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u 1000 1024  377   15.727  -97.721  30.503
2012-07-01 14:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  748 1024  377   12.229  -23.726  31.822
2012-07-01 14:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  501 1024  377   14.533   60.172   1.022
2012-07-01 15:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  251 1024  377   14.231   84.031  18.929
2012-07-01 15:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u    2 1024  377   13.800  124.631  17.261
2012-07-01 16:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  776 1024  377   13.407  156.855  14.962
2012-07-01 16:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  529 1024  377   10.603  166.262   7.274
2012-07-01 17:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  277 1024  377   12.336  185.132   9.301
2012-07-01 17:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u   28 1024  377   13.053  202.397   0.055
2012-07-01 18:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  805 1024  377   13.053  202.397  28.663
2012-07-01 18:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  555 1024  377   13.432  209.414   2.174
2012-07-01 19:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  308 1024  377   14.631  212.225   4.011
2012-07-01 19:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u   56 1024  377   13.349  214.017   0.057
2012-07-01 20:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  832 1024  377   14.411  213.960   1.213
2012-07-01 20:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  583 1024  377   13.615  203.817   6.336
2012-07-01 21:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  334 1024  377   17.122  197.009   2.029
2012-07-01 21:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u   88 1024  377   18.445  198.370  18.541
2012-07-01 22:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  862 1024  377   16.281  194.083  14.255
2012-07-01 22:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  613 1024  377   13.269  187.763  14.045
2012-07-01 23:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  365 1024  377   14.249  180.813   2.089
このデータを見ると、ずれが収まるまでには思いのほか時間がかかるようで、うるう秒調整が実施されてから14時間後の現在でも、上位 NTP サーバと180ミリ秒ほど開きがあります。
offset の値のプラス/マイナスについて、明確に記憶していませんでしたが、上記データから、その NTP サーバが提示する時刻が、サーバのシステム時刻より前である場合、マイナスということですね。
なので、今 +180 ミリってことは、上位 NTP サーバから 180 ミリ秒遅れているわけか。
この続きのデータは、また明日見てみます。

2012-07-02追記
昨晩の続きのデータは、次のようになってました。
                         remote           refid      st t when poll reach   delay   offset  jitter
                    ==============================================================================
2012-07-01 23:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  113 1024  377   16.669  175.530  42.274
2012-07-02 00:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  890 1024  377   27.000  167.411  50.393
2012-07-02 00:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  640 1024  377   10.899  164.112   2.428
2012-07-02 01:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  392 1024  377   17.415  154.429  12.125
2012-07-02 01:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  143 1024  377   13.487  144.749   3.697
2012-07-02 02:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  917 1024  377   12.823  135.426   5.625
2012-07-02 02:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  668 1024  377   12.132  131.629   5.259
2012-07-02 03:02:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  420 1024  377   11.726  120.271   3.557
2012-07-02 03:32:18 *219.xxx.yy.zz   192.168.u.vvv    2 u  170 1024  377   11.441  115.966   3.173
2012-07-02 04:02:16 *219.xxx.yy.zz   192.168.u.vvv    2 u  944 1024  377   11.231  107.834   4.959
2012-07-02 04:32:16 *219.xxx.yy.zz   192.168.u.vvv    2 u  184  512  377   13.227   90.511   6.811
2012-07-02 05:02:16 *219.xxx.yy.zz   192.168.u.vvv    2 u  448  512  377   11.007   85.097   6.125
2012-07-02 05:32:16 *219.xxx.yy.zz   192.168.u.vvv    2 u  199  512  377   10.028   65.927   4.114
2012-07-02 06:02:16 *219.xxx.yy.zz   192.168.u.vvv    2 u  463  512  377   11.529   57.629   5.778
2012-07-02 06:32:16 *219.xxx.yy.zz   192.168.u.vvv    2 u  726 1024  377   11.231   50.067   3.147
2012-07-02 07:02:16 *219.xxx.yy.zz   192.168.u.vvv    2 u  479 1024  377   12.781   49.581   0.441
2012-07-02 07:32:16 *219.xxx.yy.zz   192.168.u.vvv    2 u  227 1024  377   12.351   47.561   1.351
2012-07-02 08:02:16 *219.xxx.yy.zz   192.168.u.vvv    2 u 1002 1024  377   11.107   46.045   1.515
2012-07-02 08:32:16 *219.xxx.yy.zz   192.168.u.vvv    2 u  751 1024  377   11.073   44.120  15.058
2012-07-02 09:02:16 *219.xxx.yy.zz   192.168.u.vvv    2 u  505 1024  377   12.946   41.379   1.681
2012-07-02 09:32:16 *219.xxx.yy.zz   192.168.u.vvv    2 u  256 1024  377   11.038   37.101   6.429
2012-07-02 10:02:16 *219.xxx.yy.zz   192.168.u.vvv    2 u    5 1024  377   12.444   37.810   0.185
2012-07-02 10:32:16 *219.xxx.yy.zz   192.168.u.vvv    2 u  267  512  377   14.939   36.484  25.669
2012-07-02 11:02:16 *219.xxx.yy.zz   192.168.u.vvv    2 u   12  128  377   10.509   21.750   6.330
2012-07-02 11:32:16 *219.xxx.yy.zz   192.168.u.vvv    2 u   11  128  377   10.696   10.668   3.874
2012-07-02 12:02:16 *219.xxx.yy.zz   192.168.u.vvv    2 u   15  256  377   13.222    5.393   5.583
2012-07-02 12:32:16 *219.xxx.yy.zz   192.168.u.vvv    2 u  275  512  377   11.597    2.826   2.155
2012-07-02 13:02:16 *219.xxx.yy.zz   192.168.u.vvv    2 u   24  512  377   11.602    4.860   0.627
2012-07-02 13:32:16 *219.xxx.yy.zz   192.168.u.vvv    2 u  285 1024  377   12.522    4.768   3.272
2012-07-02 14:02:16 *219.xxx.yy.zz   192.168.u.vvv    2 u   34 1024  377   12.450    6.383   1.396
2012-07-02 14:32:16 *219.xxx.yy.zz   192.168.u.vvv    2 u  809 1024  377   12.383    7.734   0.046
2012-07-02 15:02:16 *219.xxx.yy.zz   192.168.u.vvv    2 u  561 1024  377   13.710    6.254   2.814
2012-07-02 15:32:16 *219.xxx.yy.zz   192.168.u.vvv    2 u  312 1024  377   13.091    9.562   0.215
2012-07-02 16:02:16 *219.xxx.yy.zz   192.168.u.vvv    2 u   62 1024  377   12.187    8.944   1.301
2012-07-02 16:32:16 *219.xxx.yy.zz   192.168.u.vvv    2 u  838 1024  377   12.651   10.245   3.777
2012-07-02 17:02:16 *219.xxx.yy.zz   192.168.u.vvv    2 u   80  512  377   11.899   10.865   0.806
2012-07-02 17:32:16 *219.xxx.yy.zz   192.168.u.vvv    2 u   82  256  377   11.432    9.104   1.885
2012-07-02 18:02:16 *219.xxx.yy.zz   192.168.u.vvv    2 u   87  128  377   10.328    6.771   0.873
2012-07-02 18:32:16 *219.xxx.yy.zz   192.168.u.vvv    2 u   89  128  377   11.186    4.603   0.883
2012-07-02 19:02:16 *219.xxx.yy.zz   192.168.u.vvv    2 u   94  256  377   11.876    4.625   1.519
まだ、細かい波があるやうな感じですが、10 ミリ秒未満となった 12:00 あたりが収束だとすると、27時間要したことになります。
この結果をふまえると、step モードで正しく推移(時刻の逆行が1秒発生する)させたい気分になりますが、1秒戻りがどんな作用を及ぼすか、事前に完璧に調べあげることなど不可能であり、予期しないトラブルを避けるため、商用で使っているようなサーバでは、やはり slew モード (-x オプション) にしておいたほうが無難なのではないでしょうかね。くわばら、くわばら。



2015-02-01追記
前回の実施から2年半経過した今年1月はじめ、次回の うるう秒(閏秒)が 2015年7月1日(水) AM 9:00:00(日本時間)に実施されることが発表されました。
記憶されている方も多いものと思いますが、上記の記事を書いたまさしくその頃に、Linux カーネル内の うるう秒対応処理に新たな不具合が発見され、世界中の多数の Linux サーバでトラブルが発生しました。
知らずに、またしてもその罠にハマるのも残念ですので、微力ですが、その不具合について、情報追加しておきたいと思います。

まず、レッドハット社の公開情報は、次のとおりです。

https://bugzilla.redhat.com/show_bug.cgi?id=836803
https://rhn.redhat.com/errata/RHSA-2013-0496.html

読んでもらうとわかりますが、RHEL6/CentOS6 のカーネルに内在していた不具合であり、2.6.32-358.el6 で修正されています。ですので、もしも今現在も、古いカーネルを利用し続けているなら、単純には前記したバージョンより新しいカーネルにアップデートすれば良いことになります。

とは言うものの、世間には様々な事情により、カーネルアップデートが実施できない(許可してもらえない)ということも、ままあるものと思います。その場合はどうしたら良いのか?

まず、うるう秒の実施指示(Leap Indicator)は、NTP プロトコルによってもたらされる(通知される)わけですから、NTP クライアント(ntpd など)を動かしていないなら、うるう秒を知る由もないということが言えます。
勿論のこと、大部分のサーバでは ntpd を動かしていることでしょう。ですから、選択肢の1つとしては、うるう秒実施の前後だけ、一時的に ntpd を止めておくという運用方法が考えられます。ここで注意しなければならないのが、うるう秒の実施を通知する Leap Indicator のフラグは、うるう秒実施の 24 時間前からオンになるという点です。ntpd は、受信した Leap Indicator を Linux カーネルに伝達し、カーネルはうるう秒の実施準備を行ってしまいます。カーネルまで Leap Indicator が伝達されてしまうと、キャンセルするには再起動するしかなくなります。
したがって、もし ntpd を一時的に止める運用を行うのであれば、6月30日 AM 9:00(日本時間)より前に停止する必要があります。実際には、余裕を見て、例えば AM 8:00 に止めるなどというスケジュールになるものと思います。
上位 NTP サーバから通知される Leap Indicator の値は、次のコマンドで確認できます。
[root@hoge ~]# ntpq -c readvar
...
processor="x86_64", system="Linux/2.6.32-220.el6", leap=00,
...
leap=00 は通常状態であり、leap=01 だったらば、うるう秒挿入指示を受信済みであることを示します。
さて、当然ですが ntpd を止めたら時刻が少しは狂う(ずれる)ことになります。どれだけずれてしまうかは、マシン毎に個体差があるはずですが、まる1日 ntpd を止める程度なら、プラスマイナス数秒程度ではないかと思います。#これは、後日実験してみたいと思います。

プラスマイナス数秒の時刻ずれも許容できない場合はどうしたら良いのか?

ntpd を動かしたまま、Linux カーネルによる うるう秒調整動作を行わないようにするには、ntpd が、カーネルに Leap Indicator を伝達しないようにできれば良いです。そのパラメータは次のとおりです。/etc/ntp.conf の末尾に指定します。
...
server xxx.yyy.zzz.uuu  iburst
...
disable kernel
この設定を施してから、service ntpd restart を実行すればよいです。本当に disable になったかどうかは、次のコマンドで確認できます。
[root@hoge ~]# ntpdc -c sysinfo
...
system flags:         auth ntp kernel stats      ※正しく設定できれば、kernel が消えます
...
もっとも、slew モード(ntpd -xオプション付き)で動作している場合には、disable kernel がデフォルトになっているはずなので、設定を変更する前に、現在の動作状態を ntpdc コマンドで確認するとよいです。バージョンの古い ntpd は、slew モードでも enable kernel がデフォルトだったものがありますので、やはり、ntpdc コマンドで確認しておいたほうがよいと思います。
disable kernel に対応する処理部分は、次の箇所です。ntp-4.2.6p5-2.el6 より抜粋です。
...
    502         if (pll_control && kern_enable) {
...
    557                         if (sys_leap == LEAP_ADDSECOND)
    558                                 ntv.status |= STA_INS;
    559                         else if (sys_leap == LEAP_DELSECOND)
    560                                 ntv.status |= STA_DEL;
    561                 }
    562 
    563                 /*
    564                  * Pass the stuff to the kernel. If it squeals, turn off
    565                  * the pps. In any case, fetch the kernel offset,
    566                  * frequency and jitter.
    567                  */
    568                 if (ntp_adjtime(&ntv) == TIME_ERROR) {
    569                         if (!(ntv.status & STA_PPSSIGNAL))
    570                                 report_event(EVNT_KERN, NULL,
    571                                     "PPS no signal");
    572                 }
...
"ntpd/ntp_loopfilter.c"
disable kernel を設定すると、kern_enable の値がゼロになり、うるう秒の実施をカーネルに伝達しなくなります。
また、slew モードなら disable kernel になるという処理は、次の部分です。
...
    163         if (HAVE_OPT( SLEW )) {
    164                 clock_max = 600;
    165                 kern_enable = 0;
    166         }
...
"ntpd/cmd_args.c"

2016-12-11追記
次回の うるう秒挿入(日本時間2017年1月1日8時59分59秒)が迫ってますが、RHEL7 のカーネル不具合情報と修正版カーネルが公開されたので、追記しておきます。

http://rhn.redhat.com/errata/RHBA-2016-2862.html
https://access.redhat.com/solutions/2766351

カーネル 3.10.0-514.2.2.el7 で修正されたようですが、すぐにアップデートできないなら、ntpd の slew モードを使っておけばよいです。または、ntpd を一時的に止めておく方法も可能。ちなみに、今回のRHEL7のカーネル不具合(発症するとCPU100%)は、発生確率がけっこう低い (500回試して1回程度と記載されてます) ようです。

■関連記事
ntpd を1日止めた場合のズレはどの程度か?
うるう秒(閏秒)の際にcronが二重に実行されるかも?という都市伝説(?)について
2015年7月1日の うるう秒 調整時の ntpd の挙動観測データ
2017年1月1日の うるう秒 調整時の ntpd の挙動観測データ (記載予定)

2011年9月10日土曜日

Fedora 16 に新採用された chrony の設定

Fedora 16 (今現在は Alpha ですが) では、NTP クライアントが ntpd から chronyd に変更されています。設定方法について、メモです。

まず、rpm 情報です。
[root@fedora16 ~]# rpm -qi chrony
Name        : chrony
Version     : 1.26
Release     : 3.20110831gitb088b7.fc16
Architecture: x86_64
Install Date: Sat 10 Sep 2011 06:54:41 AM JST
Group       : System Environment/Daemons
Size        : 546684
License     : GPLv2
Signature   : RSA/SHA256, Tue 06 Sep 2011 07:54:34 PM JST, Key ID 067f00b6a82ba4b7
Source RPM  : chrony-1.26-3.20110831gitb088b7.fc16.src.rpm
Build Date  : Wed 07 Sep 2011 12:29:09 AM JST
Build Host  : x86-14.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://chrony.tuxfamily.org
Summary     : An NTP client/server
Description :
A client/server for the Network Time Protocol, this program keeps your
computer's clock accurate. It was specially designed to support
systems with intermittent internet connections, but it also works well
in permanently connected environments. It can use also hardware reference
clocks, system real-time clock or manual input as time references.
systemd の初期状態を確認。chronyd は disabled になってます。#それにしても、systemctl コマンドに慣れないなあ、、、
[root@fedora16 ~]# systemctl status chronyd.service
chronyd.service - NTP client/server
          Loaded: loaded (/lib/systemd/system/chronyd.service; disabled)
          Active: inactive (dead)
          CGroup: name=systemd:/system/chronyd.service
これを、enable に変更する。
[root@fedora16 ~]# systemctl enable chronyd.service
ln -s '/lib/systemd/system/chronyd.service' '/etc/systemd/system/multi-user.target.wants/chronyd.service'
[root@fedora16 ~]# systemctl status chronyd.service
chronyd.service - NTP client/server
          Loaded: loaded (/lib/systemd/system/chronyd.service; enabled)
          Active: inactive (dead)
          CGroup: name=systemd:/system/chronyd.service
設定ファイル (/etc/chronyd.conf) は、ntpd と似た雰囲気です。
[root@fedora16 ~]# rpm -qc chrony  ※設定ファイルの所在を確認
/etc/chrony.conf
/etc/chrony.keys
/etc/logrotate.d/chrony
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.fedora.pool.ntp.org iburst
server 1.fedora.pool.ntp.org iburst
server 2.fedora.pool.ntp.org iburst
server 3.fedora.pool.ntp.org iburst

# Ignore stratum in source selection.
stratumweight 0

# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift

# Enable kernel RTC synchronization.
rtcsync

# In first three updates step the system clock instead of slew
# if the adjustment is larger than 100 seconds.
makestep 100 3

# Allow client access from local network.
#allow 192.168/16

# Serve time even if not synchronized to any NTP server.
#local stratum 10

keyfile /etc/chrony.keys

# Specify the key used as password for chronyc.
commandkey 1

# Disable logging of client accesses.
noclientlog

# Send a message to syslog if a clock adjustment is larger than 0.5 seconds.
logchange 0.5

logdir /var/log/chrony
#log measurements statistics tracking
そんでもって起動!
[root@fedora16 ~]# systemctl start chronyd.service   ※起動!
[root@fedora16 ~]# systemctl status chrnoyd.service  ※打ちにくい、、、typo した、、、
chrnoyd.service
          Loaded: error (Reason: No such file or directory)
          Active: inactive (dead)
[root@fedora16 ~]# systemctl status chronyd.service  ※確認
chronyd.service - NTP client/server
          Loaded: loaded (/lib/systemd/system/chronyd.service; enabled)
          Active: active (running) since Sat, 10 Sep 2011 20:54:47 +0900; 14s ago
         Process: 19657 ExecStartPost=/usr/libexec/chrony-helper add-dhclient-servers (code=exited, status=0/SUCCESS)
         Process: 19654 ExecStart=/usr/sbin/chronyd -u chrony $OPTIONS (code=exited, status=0/SUCCESS)
         Process: 19645 ExecStartPre=/usr/libexec/chrony-helper generate-commandkey (code=exited, status=0/SUCCESS)
        Main PID: 19656 (chronyd)
          CGroup: name=systemd:/system/chronyd.service
                  └ 19656 /usr/sbin/chronyd -u chrony
ntpq のような状態確認は、chronyc で行います。
[root@fedora16 ~]# chronyc sources -v
210 Number of sources = 4

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current synced, '+' = OK for sync, '?' = unreachable,
| /                'x' = time may be in error, '~' = time is too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||                                                /   xxxx = adjusted offset,
||         Log2(Polling interval) -.             |    yyyy = measured offset,
||                                  \            |    zzzz = estimated error.
||                                   |           |                         
MS Name/IP address           Stratum Poll LastRx Last sample
============================================================================
^+ javanese.kjsl.com             2    6     18    -11ms[  -11ms] +/-  211ms
^* balthasar.gimasystem.jp       3    6     20   +321us[ +815us] +/-   53ms
^+ z2.ktroad.net                 3    6     20  +1228us[+1722us] +/-   75ms
^+ 219x123x70x90.ap219.ftth.     2    6     20  -3397us[-3397us] +/-   57ms

[root@fedora16 ~]# chronyc sourcestats -v
210 Number of sources = 4
                             .- Number of sample points in measurement set.
                            /    .- Number of residual runs with same sign.
                           |    /    .- Length of measurement set (time).
                           |   |    /      .- Est. clock freq error (ppm).
                           |   |   |      /           .- Est. error in freq.
                           |   |   |     |           /         .- Est. offset.
                           |   |   |     |          |          |   On the -.
                           |   |   |     |          |          |   samples. \
                           |   |   |     |          |          |             |
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================
javanese.kjsl.com          10   6   397      2.808      6.249    -12ms   570us
balthasar.gimasystem.jp    10   8   395      0.171      8.376  +3871ns   717us
z2.ktroad.net              10   5   395      0.157      8.272  +1367us   600us
219x123x70x90.ap219.ftth.  10   6   395      2.790     10.922  -3060us   979us

ここまで書いてなんですが、ntpd が無くなったわけではないので、そちらの方が良ければ、入れれば良いです。
[root@fedora16 ~]# yum search ntp | grep ^ntp.x86_64
ntp.x86_64 : The NTP daemon and utilities

2014-05-05追記
RHEL7.0 RC を試しましたが、デフォルトの NTP クライアントは、やはり chrony に変更になっていました。設定/操作方法は、Fedora 16 で調べた時と特段変わりないようです。それと、やはり ntpd も収録されているので、そちらを使うことも可能でした。

2015-02-01追記
追記していませんでしたが、RHEL7/CentOS7 では、デフォルトの NTP クライアントは、chrony でリリースされています。
殆どの場合、/etc/chronyd.conf 中の server 行を修正して、systemctl restart chrony.service を実行するだけで良いかと思います。6ヶ月以上動かしているマシンがありますが、chrony に関して特段不都合は無い感触です。
なお、ntpd に切り替えることもできるので、これまでの運用経験値・実績を重視するのであれば、切り替える選択肢もあります。当然ではありますが、ネット上の情報量は ntpd のほうが多いというメリットもあります。
人気ブログランキングへ にほんブログ村 IT技術ブログへ