Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

ゲストOSの時刻同期@VMware + adjtimeでの調整

      2013/07/15

Windows上のVMware ServerでゲストOSとしてLinux (Debian etch)を動かしていますが、このLinuxの時刻があり得ないぐらいずれてしまいます。以前はカーネルのbootオプションに

clock=pit

をつけることでなんとか時刻を保持できていたが、ハードを更改するとこのオプションをつけてもずれが激しい。どうもIntelのCeleronからAMDのAthlon X2に変更したのが原因のよう。

Athlon X2のコア同士のTSCのずれがあるらしく、AMDのDual Core Optimizerを入れるとかなり正常に近づき、NTPで同期できるようになった。

 # ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp.xx.xxxxxxx. .GPS.            1 u    - 1024  377   15.990  -59.864  30.723

== 追記 2008/8/17  ==

上記方法で一応ntpで補正できる範囲にはなったが、それでも誤差が大きいらしく、ずっと以下のログが出力されてしまします。

Aug 10 09:45:09 gin ntpd[3554]: time reset -2.491515 s
Aug 10 09:45:09 gin ntpd[3554]: frequency error -512 PPM exceeds tolerance 500 PPM

上記のようなログが20分おきぐらいに出力されるので、私の環境では、20分に2~3秒ぐらいずれていて(マイナスはローカルがntpより早い)、ntpサーバへのポーリングタイムが64秒より長くなりません。なので、adjtimeを使用して調整することにしました。adjtimeはハードウェアクロックの精度が悪い時にその誤差を調整するもので、今回ぐらいの誤差ならば調整できそうです。

まずはapt-get コマンドでコマンドをインストールします。

# apt-get install adjtimex

adjtimeで補正する誤差を計算します。以下のように計測しました。

# /etc/init.d/ntp stop
# ntpdate -b ntp.nc.u-tokyo.ac.jp; sleep 180; ntpdate -b ntp.nc.u-tokyo.ac.jp
17 Aug 01:04:33 ntpdate[19824]: step time server 130.69.251.23 offset -0.176401 sec
17 Aug 01:07:33 ntpdate[19830]: step time server 130.69.251.23 offset -0.419513 sec

ここでは東大のntpサーバを使用しています。最初に時計を合わせて、180秒(3分)待って、さらに合わせます。この時のずれが-0.419513秒(offsetの値)つまり、0.41953秒早く進んでいます。3分で0.42秒、つまり20分で2.8秒のため、上記でかいた20分で2~3秒というログと辻褄があいます。もっと正確に検出したいならば、sleepの値をのばしたり、何回も測定して平均を計算するとよいと思います。

上記結果より、1日当たりの誤差を計算します。私の環境では数回の計測と計算の結果、1日で、-196.19856秒としました。

この値を /etc/default/adjtimex に設定してあげます。このファイルの設定値は秒ではなく、TICKとFREQで設定します。

1TICK=6553600FREQ  で、+1TICK=8.64 秒/日 早く進むらしいので、196.19856秒遅く時計を進ませるためには、-196.19856/8.64=-22.70 となる。TICKは10000で誤差なしということらしいので、小数点を無視して、TICK=10000-23=99977, FREQ=0を設定することにしました。

TICK=99977
FREQ=0

これでadjtimeで、上記設定を有効にします。

# /etc/init.d/adjtimex start

以上で、誤差がかなり少なくなりましたがまだ誤差があったので(そもそもsleep 180が正確でないので)、最終的には”99971″にしました。vmwareは誤差が大きいので、ntpは起動しておきましょう。

# /etc/init.d/ntp start

== 追記 2009/4/26  ==

vmwareの時刻補正機能とNTPを同時に動かしていると時刻修正機能がバッティングしてしまいます。maznはNTPを止めて、 vmwareで補正するように変更しました。ただしホストOSは時刻が正確であることが前提です。

あと、以下のコマンドで最適なtickを計算してくれるようです。

# adjtimex --compare
                                      --- current ---   -- suggested --
cmos time     system-cmos  error_ppm   tick      freq    tick      freq
1240719539      -0.625205
1240719549      -0.634765     -956.0   9990   4000000
1240719559      -0.643681     -891.6   9990   4000000    9999   3446719
1240719569      -0.651886     -820.5   9990   4000000    9998   5345630
1240719579      -0.659008     -712.3   9990   4000000    9997   4803917
1240719589      -0.668480     -947.2   9990   4000000   10000    536868
1240719599      -0.677599     -911.9   9990   4000000    9999   4782655
1240719609      -0.687442     -984.3   9990   4000000   10000   2968118

suggestedのtickとfreqを設定するのがよいとは思いますが、vmware上では安定しないようなので、これらの平均を設定するのがよさそうです。

 - IT技術, サーバ構築 ,

336px

Message

メールアドレスが公開されることはありません。

  関連記事

no image
sshの公開鍵・秘密鍵

公開鍵・秘密鍵をたまにしか作成しないのでメモ # ssh-keygen -t d …

no image
fileコマンドの判定方法@CentOS 5.4

あるファイルが何のファイルかを判別するためのコマンドfileコマンドがありますが …

no image
coreファイルの扱いについて

coreを吐かせるにはulimitで制限されていない必要がある # ulimit …

no image
Samsung KiesでService Initiali Failed エラー@Windows 7 64bit

Galaxy S管理用のソフト、SamsungのKiesをインストールすると、W …

no image
電源ボタンを押して休止状態(ハイバネート)にする@Fedora 14

電源ボタンを押すと、デフォルトではシャットダウンプロセスが走りますが、休止(hi …

no image
ポート監視やwatchdogで簡易サーバ監視@CentOS 5

アカウント共有型のレンタルサーバならサーバが落ちても、管理者の方が監視してくれて …

no image
CygwinでWindowsの拡張子に関連づけられたファイルを簡単に開く

Cygwin 使っていると、コマンドラインでいろいろと処理したくなりますよね? …

no image
標準出力と標準エラー出力を入れ替える方法@bash

標準出力と標準エラー出力を入れ替える方法を、結論だけを先に書くと 3>&a …

no image
IPアドレスの範囲からサブネットマスクを簡単に計算する@CentOS 5

ちょっとしたアタックがあるIPからあった場合に、whois で IP の情報調べ …

no image
dockerのストレージドライバーをdevicemapperに変更する@Ubuntu 14.04

Ubuntu 14.04(desktop)にdockerを入れて、docker …