あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

VMware Server 2.0 のVMバックアップについて考える

というかメモ。

スナップショットの命名規則

通常のディスクイメージ

VM名.vmdk
VM名-s001.vmdk

スナップショット

VM名-000000.vmdk
VM名-000000-s001.vmdk

というわけで、「-000000」の文字列が追加される。数値は、

  • はじめにスナップショットを取ると、000001。
  • スナップショットを作成し続けると、000001, 000002, 000001...と、番号が交互に入れ替わる。
  • Revertしても番号は交互に入れ替わる。
  • スナップショットを消すと番号はリセットされる。
  • VMware Server 2.0 では1代分のスナップショットしか取れないので、000002のスナップショットができた時点で000001は消滅する。

バックアップしてみる(14:50修正)

  • スナップショットを取る前に、VMXファイルをコピー
  • スナップショットを取って、次のファイルをコピー
VM名.vmdk
VM名-s001.vmdk
  • バックアップしたVMをAdd Inventoryして起動できるか確認。
    • UUIDはCopy It.

スクリプト化する

@echo off

REM ------------------------------------------
REM    設定項目
REM ------------------------------------------

REM [VM名]
set VMNAME=VM名

REM [データストアのパス]
set DATASTORE=C:\Virtual Machines

REM [VMware Server のログインユーザ名]
set USERNAME=ユーザ名

REM [VMware Server のログインパスワード]
set PASSWORD=パスワード

REM ------------------------------------------

rem ;;; 時刻の取得
set today=%date:/=%
set tm=%time:~0,5%
set tm=%tm::=%

rem ;;; 省略用変数
set BKUPDEST=%DATASTORE%\%VMNAME%-backup-%today%-%tm%

rem ;;; VMRUN関係
set VMRUN="C:\Program Files\VMware\VMware Server\vmrun.exe"
set VMRUNLOGIN=-T server -h https://localhost:8333/sdk -u %USERNAME% -p %PASSWORD%
set VMRUNVMPATH="[standard] %VMNAME%\%VMNAME%.vmx"

rem ;;; ディレクトリの作成
mkdir "%BKUPDEST%"

rem ;;; VMXのコピー
copy "%DATASTORE%\%VMNAME%\%VMNAME%.vmx" "%BKUPDEST%\"

rem ;;; スナップショットを取る
%VMRUN% %VMRUNLOGIN% snapshot %VMRUNVMPATH%

rem ;;; VMのコピー
copy "%DATASTORE%\%VMNAME%\%VMNAME%.vmdk" "%BKUPDEST%\"
copy "%DATASTORE%\%VMNAME%\%VMNAME%-s*.vmdk" "%BKUPDEST%\"

rem ;;; スナップショットの削除
%VMRUN% %VMRUNLOGIN% deleteSnapshot %VMRUNVMPATH%

注意点

  • スクリプトはやっつけなので、VM名とディスクイメージのファイル名が違うと使えない。
    • VMのディレクトリ名とVMファイル名が違っても使えない。
    • 各自適当に直せるよな!な!(えー
  • スクリプトはやっつけなので、既にスナップショットが存在している場合を想定していない。
  • スクリプトはやっつけなので、トラブルが起きても一切保障しない。