Hyper-Vは、どうやらLinuxには完全にまだ対応していないようです。使ってみたところ、Windows向けに調整されていることがわかります。
一応、Microsoft社からLinux用の統合ツールが用意されていますが、Hyper-Vのイベントビューにバージョンの相違のログが出ます。さらに、ハートビートやシャットダウン機能などはそれらに含まれていません。最低限は使えるようです。
Linuxを使う上で一番やっかいなのは、時刻です。やたらと速く進み、10分くらいで1分ほどずれてしまいます。Windowsは、RTC(Real Time Clock)と随時同期しているので正常ですが、Linuxは、一度RTCから時刻を読み出し、その後ソフトウェアによるカウントになっています。仮想環境だとCPUクロックが変動するらしく、それによって時刻に揺らぎが出るようです。
改善方法は、時刻の方式を変えることと、NTPによる時刻同期があります。2つをするのが一番安全です。
まず、ブートローダの設定を変更します。以下はCentOS 5.4 x86の場合です。パラメータ設定は、VMwareのKnowledge Baseを参考にしてください。x86_64では、clocksourceが要らないようですが、私の環境では、以下の設定でも動作しています。
default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.18-164.6.1.el5) root (hd0,0) kernel /vmlinuz-2.6.18-164.6.1.el5 ro root=/dev/VolGroup00/LogVol00 hda=noprobe hdb=noprobe divider=10 clocksource=acpi_pm initrd /initrd-2.6.18-164.6.1.el5.img
保存して再起動すればOKです。これで少しはマシになりまが、それでもずれるので、NTPを使って同期させます。
NTPを使うために、ntpdをインストールします。
yum -y install ntpd
ntpdの設定を変更します。同期させるサーバを変更します。
# sed -i 's/^server/#server/' /etc/ntp.conf ←既に設定されている物をコメントアウト # echo 'server -4 ntp1.jst.mfeed.ad.jp' >> /etc/ntp.conf ←ntp1.jst.mfeed.ad.jpを使用するサーバに指定 # echo 'server -4 ntp2.jst.mfeed.ad.jp' >> /etc/ntp.conf # echo 'server -4 ntp3.jst.mfeed.ad.jp' >> /etc/ntp.conf
サーバは、なるべく近い(レイテンシが小さい)サーバを指定する方が良いです。また、-4は、IPv4で通信せよと言う意味です。
ntpdは、初期の時刻が大幅にずれていると同期されないので、その設定をします。ntpdが開始されたときに、時刻が同期されるようにします。
# echo 'ntp.jst.mfeed.ad.jp' > /etc/ntp/step-tickers
サーバは、先ほど同様に近いサーバを指定する方が良いです。あとは、ntpdを起動させ、サーバ起動時に自動起動するようにします。
# service ntpd start # chkconfig ntpd on
これで完了です。時刻が同期されていれば、正しく動作しています。
参考URL
CentOS on Hyper-V〜Ver.UP- へっぽこにっき
追加情報
以前は、ntpdateをcronを使って5分間隔で同期させていましたが、これは良くないです。dovecotを使うことができません。
dovecot: Time just moved backwards by 455 seconds. This might cause a lot of problems, so I'll just kill myself now. http://wiki.dovecot.org/TimeMovedBackwards
上記のエラーが出力されて、終了してしまいます。今回紹介した方法だと、正常に使用することができます。
コメントする