BLOGTIMES
2010/08/15

ESXiでVMのホットバックアップをとるスクリプト

  esxi  cli 
このエントリーをはてなブックマークに追加

※この内容は古いです。現在はこちらの方法がオススメです→「ghettoVCB.sh で ESXi 上の VM のホットバックアップを取る

VMWare ESXiにはバックアップツールがないので自動バックアップ取りたい場合にはsshログインを可能にした上で、「AKIBA de: 無償のVMware ESXiでホットバックアップを自動で実行する方法(のヒント)」に載っている方法のようにコマンドラインツールを駆使してバックアップを取る必要があっていろいろと面倒なので、バックアップを一括で実行するためのスクリプトを書いてみました。

実際に書いてみたスクリプト

実際に書いてみたのは下記のようなスクリプト。
このスクリプトはvmxファイルがある場所に配置する必要があり、実行すると$DEST/$VMNAME以下にバックアップを取るようになっています。

VMNAME: vim-cmd vmsvc/getallvms コマンドを実行したときに表示されるVMの名前。vSphereクライアントから見える名前。
VMDKS: バックアップ対象とするvmdkファイルの名前。スペース区切りで複数ファイル可。
DEST: バックアップの保存先ディスク。今回の/vmfs/volumes/backupsはNFSマウントしたファイルサーバです。

vmhotbackup.sh

#!/bin/ash VMNAME="foo" VMDKS="foo.vmdk bar.vmdk" DEST="/vmfs/volumes/backups/$VMNAME" VMID=`vim-cmd vmsvc/getallvms | awk '{print $1,$2}' | grep $VMNAME | awk '{print $1}'` SCRIPT_DIR="`dirname $0`" cd "$SCRIPT_DIR" rm -rf "$DEST.old" mv "$DEST" "$DEST.old" mkdir -p "$DEST" cp *.nvram *.vmsd *.vmx *.vmxf *.sh "$DEST" vim-cmd vmsvc/snapshot.create "$VMID" backup sleep 30 for VMDK in $VMDKS ; do vmkfstools -i "$VMDK" -d thin "$DEST/`basename $VMDK`" done vim-cmd vmsvc/snapshot.removeall "$VMID"

何らかの原因でsnapshotを作るのが遅いと.vmdkのファイルがロックされていてバックアップできない可能性はあるので、この部分については要改良かもしれません。また、まだcronの使い方がわからないので定期実行についてはまた後日。


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/3731
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン