Solaris の閏秒対応
Solaris 2.6, Solaris 7, Solaris8, Solaris9, Solaris10では、ntp サービス機構を使い閏秒に対応しています。NTP クライアントとして Solaris が動作している場合に日本標準時(JST)が、閏秒により調整されます。
- システムがNTPクライアントとして動作している場合
Solaris の xntpd は閏秒に対応しています。NTPサーバ側で閏秒挿入が行われていれば、配下のNTPクライアントにも反映されるため、NTPクライアント側では特に対策は必要ありません。
- システムが最上位のNTPサーバとして動作している場合
システムが NTP 最上位のサーバである場合には、NTPサーバに対して次の手順を実施することで閏秒の設定が可能です。
- ntpq コマンドを使い、writevar にて、leapwarning変数またはleapindicator変数の値を 01 に設定いただくことにより、閏秒が挿入されます。
- leapwarning - 閏秒実行の一カ月前から設定可能。閏秒実行日にその内容は leapindicator に移されます。
- leapindicator - 閏秒実施日に設定します。日本標準時では、leapindicator 変数の値は、2005年12月31日の09:00:00:00から2006年1月1日08:59:60の間に設定いただくことになります。leapindicator の値(01 または 10)によってその内容が xntpd により実行されます。
- ntpqコマンドによる leapwarning変数、leapindicator変数の挿入方法は、INFODOC# 76697 をご参照ください。
※ご注意 最上位のNTPサーバが他社製の OS である場合には、各ベンダにお問い合わせください。
- xntpd による閏秒挿入でのシステム時刻の後退が懸念される場合
システムが NTP サーバ、NTP クライアントのいずれであるかに関わらず、xntpd が step モードで実行されていれば、閏秒挿入時にシステム時刻の後退(時刻戻り)が発生する可能性があります。これを抑制するには、xntpd を slew モードで実行することによって、xntpd にシステム時刻を徐々に補正させる方法が有効です。
- xntpd はデフォルトでは step モードで実行されます。slew モードで実行するには、/etc/inet/ntp.conf に次の 2 行を加え、xntpd を再起動します。
slewalways yes
disable pll
- slewalways yes - slew モードでの実行を指定しています。
- disable pll - (カーネルではなく) xntpd 自身にシステム時刻補正を行わせるためのオプションです。
- 詳細については xntpd(1M) の manual page をご参照下さい。
- この方法を用いた場合、2006年1月1日09:00:00(JST)頃から、時刻補正が始まり、数十分程度かけて一秒挿入がなされます。
- システムがNTPを使用していない場合
閏秒は、1日1秒の挿入になりますので、時間を厳密に意識していないお客様に関しましては、本調整は必要ありません。調整を行う場合には、date -a command 等で行って下さい。
Solaris の標準ライブラリ関数は閏秒のフォーマットに対応しているか?
Solaris 2.6, Solaris 7, Solaris8, Solaris9, Solaris10 の標準ライブラリ関数は、閏秒挿入(xx時:xx分:60秒)に対応しています。