VMware Workstation PlayerのRTC

VMware Workstation Player(以下、単にVMware)のRTC(Real Time Clock)について。
WMwareで作った仮想環境であるが、ホストがWindows PCの場合、起動する度に仮想環境のRTCはホストと同じ時刻、つまりJSTに同期されるものと思っていた。
つまりRTCはJSTになってしまうので、/etc/adjtimeの3行目は「LOCAL」にせざるを得ないと思い込んでいた。
ところが、改めて仮想CentOS 7の/etc/adjtimeを確認すると3行目は「UTC」になっていた。
え? どういうことなの?

ということでググって見つけたサイトがこちら。

仮想マシンとハードウェアクロック

VMware の場合、初回起動時には ホストOSの時間がそのまま使われます。VMware Player や Workstation, Fusion では、新しい仮想マシンを作成して起動、BIOS設定画面に入ると現地時間での時刻が表示されます。
(略)
二度目以降の起動では少々事情が異なります。ゲストOSが終了時に(仮想の)ハードウェアの時計に時間を設定した時、VMware はそのかき込まれた時間と自身が把握している時間を比較、「差分」を検知します。ESXi の場合、上のOSが「日本時間」をかき込んでくると、9時間早い時間がかき込まれたことを検知します。この差分は nvram ファイルに保存されます。

二度目以降の起動時は、自身の時刻にこの差分を加味した時刻を、仮想マシンのハードウェアの時計としてセットします。先の例の場合、UTCに9時間を加えた時刻をハードウェアの時計とします。これは日本時間になります。ゲストOSはこの時間を読み込みますので、結果として正しい時間になります。
この挙動は VMware のこのドキュメントの「Virtual CMOS RTC」に記載されています。

仮想マシンとハードウェアクロック

へえ。そんなことになっていたんだ。
なので仮想環境のRTCはJSTにすることもできるし、UTCにすることもできるし、どっちでもいいわけか。なるほど。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください