Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

仮想マシンの時刻同期機能を無効にする(Virtual PC編)

解説をスキップして操作方法を読む

デジタルアドバンテージ 打越 浩幸
2005/11/19
2007/04/13更新
 
対象ソフトウェア
Virtual PC 2004
Virtual PC 2007
時間やスケジュールに関するプログラムのテスト時には、仮想マシンのシステム・クロックを自由に進めたり戻したりしたい。
バーチャル・マシン追加機能がインストールされていると、ゲストOSとホストOSのシステム・クロックはデフォルトで同期するようになっている。
Virtual PCで自動的な時刻同期機能を無効にするには、仮想マシンの構成ファイルを編集する。
さらに必要に応じて、ゲストOSがネットワーク上のタイム・サーバと同期する機能も無効にすること。
 
解説

 Virtual PC 2004やVirtual PC 2007(以下まとめてVPC)、Virtual Server 2005(以下VS2005)上で実現される仮想マシン環境のシステム・クロック(時計)には、ホストOSのシステム・クロックと自動的に同期する機能が組み込まれている。この機能が有効になっていると、仮想マシンのシステム・クロックは常にホストOSのクロックと一致するように管理・制御される。そのため、ホストOSとゲストOSで時刻がずれたり、仮想マシンごとに時刻がずれたりするという問題は解消される。

 だがこの自動的な時刻の同期機能は、わざと時間をずらして運用したい場合には不要なものである。例えばプログラム開発において、月末処理や期末処理などをテストする場合には、システム・クロックをわざと進めておき、特定の日時にプログラムが正しく実行されるかどうかを確認しなければならないからだ。また2000年問題のように、ある特定の日時になってもシステムが異常を起こさないかどうかを確認する場合にも、わざとクロックをずらしてテストする。だが自動的な時刻同期機能が有効になっていると、クロックをわざと進めておいても、すぐに(数秒〜十数秒程度)クロックが修正され、現在の時刻に戻されてしまう(デフォルトでは15秒ごとにずれていないかどうかがチェックされる)。

 VPCの仮想マシン環境において、自動的な時刻同期機能を無効にするためには、「バーチャルマシン追加機能」をアンインストールするか、仮想マシンの構成ファイル(.VMCファイル)に対して特別な設定を行う必要がある。VS005の場合には、管理ツール上で簡単に設定を変更することができたが(TIPS「仮想マシンの時刻同期機能を無効にする(VS2005編)」参照)、VPCの場合は手動で構成ファイルを編集しなければならない。本TIPSでは、その方法について解説する。


操作方法

 VPC上で仮想マシンを作成すると、仮想マシンの設定状態や構成情報を保存するために、「.VMCファイル(構成ファイル)」という設定ファイルが仮想マシンごとに作成される。このファイルは、デフォルトでは各ユーザーの「マイ ドキュメント\My Virtual Machines」フォルダ中に作成されるが、指定すれば別の場所に作成することも可能である。

 この.VMCファイルはXML形式で記述されたテキスト・ファイルであり、文字コードとしてはUnicode(リトル・エンディアンのUTF-16)が使用されている。そのため、内容を編集するには、Unicodeをサポートしたメモ帳などを利用する(Windows 2000やWindows XP、Windows Server 2003、Windows Vistaなどのメモ帳はUnicodeに対応している)。メモ帳の[ファイル]−[開く]メニューで.VMCファイルを開いてもよいし、メモ帳を起動しておいてから、.VMCファイルをエクスプローラからドラッグ&ドロップしてもよい。

 仮想マシンが停止している状態で.VMCファイルを開き、下の方へスクロールすると、ファイルの真中あたりに<integration><microsoft> …… </microsoft></integration>というセクションがある。

追加する前の.VMCファイルの例
.VMCファイルをメモ帳で開き、<integration> <microsoft>というセクションを探す。
  ここに自動的な時刻同期機能を無効にする設定を追加する。

 このセクションの先頭に次のような要素を追加する。

<components>
        <host_time_sync>
                <enabled type="boolean">false</enabled>
        </host_time_sync>
</components>

 行の先頭の空白文字(インデント)は特に意味は持たないので、見やすくなるように適当に入れておけばよい(仮想マシンの設定を変更すると、このファイルはVPCによって上書きされるため、ユーザーがインデントしなくてもよい)。XPath形式でいうと、次のブール値をfalseに設定することになる。

preferences/integration/microsoft/components/host_time_sync/enabled

 追加した結果は次のようになっているはずである。

追加した後の.VMCファイルの例
自動的な時刻同期機能を無効にする設定を追加したところ。
  追加した設定テキスト。適当にインデントして追加する。

 これで設定は終了である。仮想マシンを起動し、システム・クロックを変更しても、自動的に同期されないことを確認しておこう。

注意:Virtual Server 2005の構成ファイルとは互換性がない

 Virtual PC 2004/2007におけるこの設定は、VS2005における設定(TIPS「仮想マシンの時刻同期機能を無効にする(VS2005編)」参照)とは、互換性はない。.VMCファイルにおける設定は似てはいるが、場所が少し異なっている。そのため、VS2005で時刻同期を無効にしておき、その.VMCファイル(と.VHDファイル)をVPC環境へコピーしてきても、時刻同期は無効にはならない。VPC→VS2005もしくはVS2005→VPCという具合に.VMCファイルをコピーした場合は、設定をもう一度行う必要がある。なおVirtual PC 2004とVirtual PC 2007では、.VMCファイルに互換性があるので、そのまま利用できる。ただし念のため、VPC2004からVPC2007にアップグレードした場合は、時刻同期が無効になっているかどうかを確認してから、利用していただきたい。参考のために、VS2005の.VMCファイルにおける設定例を次に挙げておく。

VS2005における.VMCファイルの例
VS2005で時刻同期機能を無効にすると、VPCとは異なる値が書き込まれる。VPCの場合と比べると、1レベル上に <host_time_sync> という値が書き込まれている。
  VS2005における設定例。frequencyは時刻同期の頻度。この例では15秒ごとに同期する。thresholdはずれの許容範囲のようである。この値(この例では10秒)以上だと、時計を一気にジャンプさせて同期するが、この値以下だと進み方を変えてゆっくりと(といっても数秒かけて)同期させる。

注意:外部時刻サーバとの同期を無効にすること

 なおTIPS「仮想マシンの時刻同期機能を無効にする(VS2005編)」でも述べているように、仮想マシンにおける自動的な時刻同期機能を無効にしても、OSによっては外部の時刻サーバと定期的に同期を取るようになっているものがある。必要に応じて、そのような同期設定も無効にしていただきたい(詳しくは先のTIPSを参照のこと)。End of Article

関連記事(Windows Server Insider)
  Windows TIPS:仮想マシンの時刻同期機能を無効にする(VS2005編)
  Windows TIPS:NTPでネットワーク全体のマシンの時刻を合わせる
  Windows TIPS:sysprepで環境複製用のマスタ・イメージを作成する
  Windows TIPS:仮想マシンにおける差分ディスクと復元ディスクの違い
  Windows TIPS:物理ディスクの内容を仮想ディスク・ファイルに変換する
  Windows TIPS:仮想ハードディスクのデフラグに注意
  製品レビュー:デスクトップOSのマイグレーションを支援するVirtual PC 2004
  製品レビュー:サーバ・システムの統合/マイグレーションを推進するVirtual Server 2005
  [運用]Windowsネットワーク時刻同期の基礎とノウハウ
     
更新履歴
【2007/04/12】Virtual PC 2007、Virtual Server 2005に関する記述を追加しました。
 
「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間