Archive for 7月, 2009

VMWare ESXi上 のVMで完全な時刻同期を目指す(Centos5)

調べれば調べるほど奥が深いESXi上の仮想マシン(VM)の時刻同期。
どうやら現状ではNTPを使うのが最善策のようです。

まずお手軽な解決策として考えられるのは、
(1) VMware Toolsの時刻同期設定オプションを設定する
(2) NTPを利用する

のどちらか。

さらに「時刻がずれる」という現象そのものにも2パターンあって、
(A) 時刻が進んでしまう
(B) 時刻が遅れてしまう

という、それぞれのケースについて考えなければなりません。
以前は(1)が鉄板だと思われていた(というか俺が思っていた)のですが、この方法は(B)のケースでしか有効でない事が判明しました。

なぜなら(A)の時刻が進んでしまうのはLinux2.6系で設定されている毎秒1000回(わお)というタイマー割り込みをVM上ではエミュレートできないためで、エミュレートしきれない→タイマー取りこぼし発生→遅延が発生したと思い込んだカーネルが補正しようと時刻を進めてしまう、という堂々巡りの果てに引き起こされる問題であり、VMWare Toolsの設定で何とかなる範疇を超えてしまっているからです。

Time in a Linux 2.6 guest operating system runs faster than real time due to lost tick overcompensation

Time in virtual machine drifts due to hardware timer drift

この(A)の問題については、カーネルパラメータを変更する事でタイマー割り込み頻度をVM上での適正な値に抑えることができます。必要なパラメータについては、VMWare社がKBとして公式に発表しているので、こちらをご参照下さい。

Timekeeping best practices for Linux

ちなみにこのKBによれば、「全ての場合においてVMware Toolsの時刻同期設定(Periodic Time Synchronization)よりも、NTPを(優先して)使え」と明言します。生み親にまで否定されてしまった時刻同期設定オプションの立場ったら。

上記パラメータを設定をすることで時刻のずれをかなり小さくする事ができますが、カーネルパラメーターをいじるのが不安だとか、完璧な時刻同期が必要なんだ!という方はやはりNTPを使うのが良いでしょう。ただしNTPを利用する場合は別途UDP123番のポートを開く必要があるので、ネットワーク運用規定上NGな場合などは別途ネットワーク上にNTPサーバを立てて下さい。最近のルーターはNTPサーバ機能がついているものも多いので、外向きルータ(デフォルトゲートウェイとか)への追加設定とVMマシンへのNTPインストール&設定だけで済むんじゃないでしょうか。

ちなみにNTPを利用する場合はVMware Toolsの時刻同期設定(Periodic Time Synchronization)を無効にする必要があります。つまり(1)と(2)の組み合わせは不可ということですね。完全に居場所を失ってますね時刻同期設定オプション。
よくわかんないけどがんばってください。

 

ps aux で表示結果が途切れてしまう

psコマンドにauxオプションセットというのは半ばお約束だが、これだとコンソール(端末)の画面右端で折り返されずにカットされてしまう。
驚いたことに出力先にファイルを指定した場合でも、環境によっては出力文字列がやはりカットされてしまう事実が判明。

具体的にはCentos3.2の環境下では80文字でぶった切られる。Centos5.xでは問題なさそう。

解決策としてはwオプション(ワイド出力)を追加して、

# ps auxw

として実行してやればよい。

引っ張った割にはあっけない解決策でごめん。

 

SVMotionをGUIで使う

通常コマンドライン(CLI)上から実行するSVMotionを、VMWare Infrastructure Client上から実行できるプラグインを作ったえらい人がいます。

VIP – VMware Infrastructure 3 Plug-in

MSI形式のインストーラーをダウンロードして、何も考えずインストールするだけでOKです。

使い方は、

  1. VMware Infrastructure Clientを起動する
  2. SVMotionを実行したいVM上で右クリックし、表示されたメニューの最下部にある「Migrate Strage」を選択する
  3. 現在認識されているストレージ一覧と、対象VMが格納されているストレージが表示される
  4. ぐりぐりっと対象VMを希望するストレージに移動させる
  5. 「Apply」を押す

これだけです。簡単です。

環境にもよりますが、5GB程度のイメージの移動は10分くらいで完了しました。
世の中便利になったものです。