labunix's blog

labunixのラボUnix

うるう秒のSTEPモードとSLEWモード

Debianの場合
 
 うるう秒の検証について(Squeeze/Lenny)
 http://d.hatena.ne.jp/labunix/20120303DebianはUNIXTIMEをそのまま使っているので、
 下記の資料で言う「②時刻補正をしていない場合」に該当する。

 参考:2009年1月1日の「うるう秒」挿入に伴う富士通Solarisサーバへの影響について
 http://jp.fujitsu.com/platform/server/unix/soft/time2009-solaris-server.pdf

■上記資料によると、ハードウエアに影響は無いとのこと。

 一般にいつ初めて電源を入れるか分からないハードウエアのシステム時計について、
 常に時刻同期が正確であることを要件とする設計は行わないので、
 富士通サーバ以外でも同様と考えて問題ないと思われる。

■上記資料①の「NTP運用(*)により時刻補正をしている場合」について考える
 モードは以下の2種類があるようだ。

 STEPモード:うるう秒挿入のタイミングでミリ秒単位の時刻の逆進が発生
 SLEWモード:うるう秒挿入のタイミングで逆進が発生しないように時刻差をゆっくり合わせる

■STEPモードでのミリ秒の逆進とは具体的に以下のようになる。

標準時刻    8:59:59.000  8:59:59.500   8:59:60.000  8:59:60.200 
システム時刻  8:59:59.000  8:59:59.500  8:59:59.000  8:59:59.200

■Solarisの場合、以下の富士通の資料が参考になる。

 参考:NTP 運用ガイド for Oracle Solaris
 http://jp.fujitsu.com/platform/server/sparcenterprise/manual/notes/pdf/ntpguide.pdf

 ・時刻設定の変更が必要な場合は、シングルユーザモードで作業し、
  システムを再起動するのが望ましい手順と思われる。
 ・システムの再起動が難しい場合は、ntpdのサービスの再起動で対応

 ※「ntp.conf」の設定変更が伴わない為、再起動が必要かどうかは不明。
  いずれにしても各環境を考慮した事前検証は必須。

 0.対象はNTPv4
 1.デフォルトではSTEPモードである。
 2.「svcprop」コマンドでSLEWモードに変更可能である。
 3.初回ntpd起動タイミングで1000秒以上の補正が発生する(無効に変更)
 4.デフォルトではログを出力しない(ロギングを有効に変更)
 5.ntpdateコマンドを使う場合は、「-B」オプションでSLEWモードを利用できる
 6.時刻を補正する差が大きい場合という条件にはなっているが、
   万全を期する為、基本的に作業はシングルユーザモードで行う
 7.XSCFの場合、各ドメインの時刻から 30 秒以上離れた時刻を
   再設定(date コマンドなど)すると、正しい値を保持できなくなる。

 ※2009年時にも稼動していたシステムであれば、
  SLEWモードであること、時刻のずれが29秒未満(30秒-挿入される閏秒)、
  ログ出力がされる事を確認するのみでよい。

■時間があったら、x86Solarisでテストしてみようと思う。
 今日はここまで。