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にすることもできるし、どっちでもいいわけか。なるほど。