実験用仮想マシンの作成メモ

実験用に電源OFF/ONでスナップショット時点に勝手にもどる仮想マシンを構成する。

ディスク構成・設定

全ディスク領域がスナップショット時点に戻ると都合が悪い場合もあるため、/persistent の領域のみは電源OFFしてもスナップショット時点に戻らない(揮発しない)領域とする。

  • 仮想ディスク1 ・・・ OSのシステム領域
  • 仮想ディスク2 ・・・ /persistent にマウント

スナップショット時点に戻したいディスクは Independent の Nonpersistent に設定する。

スナップショット時点に戻したくないディスクは Independent の Persistent に設定する。

上記設定後、スナップショットを作成する。

動作確認

/root (システム領域上) と /persistent にファイルを作成。

# touch /root/touch_on_root
# touch /persistent/touch_on_persistent
 
# ls -l /root/touch_on_root 
-rw-r--r--. 1 root root 0 Feb 12 06:08 /root/touch_on_root

# ls -l /persistent/touch_on_persistent 
-rw-r--r--. 1 root root 0 Feb 12 06:09 /persistent/touch_on_persistent

電源OFF/ONして再接続(再起動ではない)。

# init 0
Connection to garnet-vm10 closed by remote host.
Connection to garnet-vm10 closed.

$ ssh root@garnet-vm10
root@garnet-vm10's password: 
Last login: Thu Feb 12 05:47:47 2015

/root 下に作成したファイルは消えて、/persistent 下は消えていない。

# ls -l /root
total 20
-rw-------. 1 root root 1127 Feb 12 03:35 anaconda-ks.cfg
-rw-r--r--. 1 root root 9169 Feb 12 03:35 install.log
-rw-r--r--. 1 root root 3161 Feb 12 03:34 install.log.syslog

# ls -l /persistent/
total 0
-rw-r--r--. 1 root root 0 Feb 12 06:09 touch_on_persistent

仮想マシンの日時も特定時点から毎回再開させる場合

うるう年や特定営業日の動作を徹底的に検証したい、というような場合には時刻も毎回同じ時点に戻っていると便利。

VMware KB: Disabling Time Synchronization を参考に、vmxファイルに以下を設定する。

仮想マシンの時刻同期を無効にする
tools.syncTime = "0"
time.synchronize.continue = "0"
time.synchronize.restore = "0"
time.synchronize.resume.disk = "0"
time.synchronize.shrink = "0"
time.synchronize.tools.startup = "0"
time.synchronize.tools.enable = "0"
time.synchronize.resume.host = "0"

上記はVMwareによる時刻同期を無効にするものなので、OS上のNTP(起動時のntpdateも)も別途無効にするのが大前提。

仮想マシンの起動時の日時を指定する
rtc.startTime = "1420038000"

エポック時間(1970年1月1日 00:00:00 (UTC)から進んだ秒数)で指定するため、2015/01/01 00:00:00 にしたい場合には「1420038000」とする。
date コマンドで変換するか、Web上の計算ページを利用すればよい。

# date -d '2015/01/01 00:00:00' '+%s'
1420038000

なお、UTCなので、OSがシステムクロックをUTCとして扱うか、ローカル時刻として扱うかに留意が必要。