VMware ESXi 4.1 オンラインバックアップ


Table of Contents

↑

はじめに

ESXi上の仮想マシンをオンラインバックアップ/リストアします。

仮想マシンのオンラインバックアップは、スナップショットを利用すれば実現可能ですが、世代管理などの本格的なバックアップ運用をするのであれば、スクリプトを作り込む必要があります。

スクリプトの作り込みについては、時間的制約や品質的な問題があるため、
今回はVMwareコミュニティで公開されているスクリプトを利用します。

↑

公開スクリプト

↑

前提

↑

ESXi 5.0でのバックアップ

↑

システム構成

esxi_backup.jpg
  • ESXi上の仮想マシンを共有ディスク(NFS)上にバックアップします。

↑

ESXiサーバ

  • ホスト名(IP)
    • serv50 (192.168.11.50)
  • ディレクトリ構成
    • /vmfs/volumes/datastore1:仮想マシン用のデータストア
    • /vmfs/volumes/datastore2:バックアップを保存するデータストア

↑

仮想マシン

  • ホスト名(IP)
    • serv51 (192.168.11.51)
    • バックアップ対象の仮想マシン
  • OS
    • CentOS 5.5 (kernel 2.6.18-194.3.1.el5 x86_64)

↑

NFSサーバ

  • ホスト名(IP)
    • serv100 (192.168.11.100)
    • バックアップの保存先
  • OS
    • CentOS 5.5 (kernel 2.6.18-194.3.1.el5 x86)
↑

データストアの準備

↑

バックアップの保存先となるNFSサーバを構築します。
手順については必要最小限のものを記載しています。
設定ファイルのオプションなどは NFSサーバ構築 を参照して下さい。

↑

NFSのインストール

  • nfsのインストール
    [root@serv100]# yum install portmap[root@serv100]# yum install nfs-utils[root@serv100]# yum install nfs-utils-lib 

↑

NFSの設定

  • 公開ディレクトリを作成します
    [root@serv100]# mkdir /nfs
  • 匿名ユーザ(nfsnobody)書き込みを可能にするため、所有者を変更します。
    [root@serv100]# chown nfsnobody:nfsnobody /nfs
  • 設定ファイル「exports」を編集します。
    [root@serv100]# vi /etc/exports/nfs_dir 192.168.11.0/255.255.255.0(rw,root_squash)
  • exportfsコマンドで設定を反映させます。
    [root@serv100]# exportfs -ra
↑

起動

  • 関連デーモンを順に起動します。
    [root@serv100]# /etc/init.d/portmap startportmap を起動中:                                          [  OK  ][root@serv100]# /etc/init.d/nfslock startNFS statd を起動中:                                        [  OK  ][root@serv100]# /etc/init.d/nfs startNFS サービスを起動中:                                      [  OK  ]NFS クォータを起動中:                                      [  OK  ]NFS デーモンを起動中:                                      [  OK  ]NFS mountd を起動中:                                      [  OK  ]
  • 自動起動の設定を行います。
    [root@serv100]# chkconfig portmap on[root@serv100]# chkconfig nfslock on[root@serv100]# chkconfig nfs on


↑

NFS領域をデータストアとして追加します。

↑

ストレージの追加

  • 「構成」→「ストレージ」→「ストレージの追加」を選択します。
    esxi_backup00.jpg

↑

ストレージタイプの選択

  • NFSの場合はネットワークファイルシステムを選択します。
    esxi_backup01.jpg
↑

ネットワークファイルシステムの場所

  • 下記の通り設定を行います。
    • サーバ:192.168.11.100
    • フォルダ:/nfs
    • ボリュームラベル:datastore2
      esxi_backup02.jpg

↑

確認

  • 内容に問題がなければ終了ボタンを押します。
    esxi_backup03.jpg

  • これでストレージが追加され、データストアとして利用可能になりました。
    esxi_backup04.jpg

↑

バックアップ (192.168.11.50)

↑

バックアップ要件

今回のバックアップ要件は以下の通りとします

  • 仮想マシン serv51のバックアップを実施する
  • オンラインバックアップを可能にする
  • バックアップは平日の深夜2時に実施する
  • 世代管理を可能にする(3世代)
  • cronを利用して自動化する
↑

設定

↑

ダウンロード解凍

  • バックアップスクリプトを解凍します。
    # cd /vmfs/volumes/datastore1/# tar zxvf ghettoVCB.tar.gz# cd ghettoVCB/
↑

設定

  • バックアップの設定を行います。(変更箇所と主要項目のみ記載) ※メール通知は利用しませんが、誤配信防止と今後の利用を考えて変更しておきます。


  • バックアップ対象の仮想マシン一覧を新規作成します。
    仮想マシン名はインベントリで表示される名前を記載します。
    # vi backup_vmlist.txtserv51

↑

バックアップの動作確認

  • 仮想マシンを起動させたまま、バックアップを実行します。
    # cd /vmfs/volumes/datastore1/ghettoVCB# ./ghettoVCB.sh -f backup_vmlist.txt -g /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB.conf

    • ghettoVCB.shのオプションは以下の通り
      Usage: ./ghettoVCB.sh -f [VM_BACKUP_UP_LIST] -c [VM_CONFIG_DIR] -l [LOG_FILE] -d [DEBUG_LEVEL] -g [GLOBAL_CONF] -e [VM_EXCLUSION_LIST]OPTIONS:   -a     Backup all VMs on host   -f     List of VMs to backup   -c     VM configuration directory for VM backups   -g     Path to global ghettoVCB configuration file   -l     File to output logging   -d     Debug level [info|debug|dryrun] (default: info)

  • バックアップ実行中は下記の通り進行状況が表示されます。



  • バックアップ実行後にファイルが作成されている事を確認します。
    # ls /vmfs/volumes/datastore2serv51
↑

cron設定

  • cronを利用してバックアップを自動化します。
  • ESXiでのcron設定は「/var/spool/cron/crontabs/root」へ直接書き込む事になりますが、
    このファイルはESXiを再起動すると削除されてしまいます。
    そのため、「rc.local」を利用してESXi起動時にcron設定ファイル「var/spool/cron/crontabs/root」を自動作成します。
    # vi /etc/rc.local#! /bin/shexport PATH=/sbin:/binlog() {   echo "$1"   logger init "$1"}#execute all service retgistered in /etc/rc.local.dif [ -d /etc/rc.local.d ]; then   for filename in `find /etc/rc.local.d/ | sort`      do         if [ -f $filename ] && [ -x $filename ]; then            log "running $filename"            $filename         fi      donefi#■vmwareのコミュニティサイトを参考に以下を追記します。/bin/kill $(cat /var/run/crond.pid)/bin/echo "0 17 * * 1-5 /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB.sh \-f /vmfs/volumes/datastore1/ghettoVCB/backup_vmlist.txt \-g /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB.conf \> /vmfs/volumes/datastore1/ghettoVCB/backup_log/ghettoVCB-backup-\$(date +%s).log" \>> /var/spool/cron/crontabs/root/bin/busybox crond
    【注意】ESXiの時間はUTC(日本の9時間遅れ)なので注意して設定します。
        今回は平日の深夜2時にバックアップを実行するように17時(26-9)で登録します。

  • バックアップログの保存ディレクトリを作成します。
    # mkdir /vmfs/volumes/datastore1/ghettoVCB/backup_log


↑

↑

設定

↑

ダウンロード解凍

  • リストアスクリプトを解凍して設定ファイルを作成します。
    # cd /vmfs/volumes/datastore1# tar zxvf ghettoVCB-restore.tar.gz# cd ghettoVCB-restore/# cp vms_to_restore_sample.txt  vms_to_restore.txt

↑

リストア設定

  • リストアの設定を行います。
    # vi vms_to_restore.txt#";;"# DISK_FORMATS# 1 = zeroedthick# 2 = 2gbsparse# 3 = thin# 4 = eagerzeroedthick"/vmfs/volumes/datastore2/serv51/serv51-2011-06-05_05-56-39;/vmfs/volumes/datastore1;3"

↑

リストアの動作確認

  • 仮想マシンを停止させて仮想マシン名を変更しておきます。
    esxi_backup05.jpg

  • リストアを実行します。
    # cd /vmfs/volumes/datastore1/ghettoVCB-restore# ./ghettoVCB-restore.sh -c vms_to_restore.txt################## Restoring VM: serv51  #####################Start time: Sun Jun  5 09:01:07 UTC 2011Restoring VM from: "/vmfs/volumes/datastore2/serv51/serv51-2011-06-05_05-56-39"Restoring VM to Datastore: "/vmfs/volumes/datastore1" using Disk Format: "thin"Creating VM directory: "/vmfs/volumes/datastore1/serv51-2011-06-05_05-56-39" ...Copying "serv51.vmx" file ...Restoring VM's VMDK(s) ...Updating VMDK entry in "serv51.vmx" file ...Destination disk format: VMFS thin-provisionedCloning disk '/vmfs/volumes/datastore2/serv51/serv51-2011-06-05_05-56-39/serv51.vmdk'...Clone: 100% done.Registering serv51 ...80End time: Sun Jun  5 09:23:08 UTC 2011################## Completed restore for serv51! #####################Start time: Sun Jun  5 09:01:07 UTC 2011End   time: Sun Jun  5 09:23:08 UTC 2011Duration  : 22.02 Minutes
  • 仮想マシンのファイルがリストアされている事を確認します。
    # ls -l /vmfs/volumes/datastore1/serv51-*-rw-------    1 root     root          Jun  5 10:59 serv51-0-flat.vmdk-rw-------    1 root     root                544 Jun  5 10:39 serv51-0.vmdk-rw-------    1 root     root           Jun  5 11:17 serv51-5b51d42e.vswp-rw-r--r--    1 root     root                  0 Jun  5 11:01 serv51.vmsd-rwxr-xr-x    1 root     root               2765 Jun  5 10:39 serv51.vmx-rw-r--r--    1 root     root                261 Jun  5 11:01 serv51.vmxf-rw-r--r--    1 root     root              20216 Jun  5 11:18 vmware.log

  • リストア後はインベントリに表示されます。
    esxi_backup07.jpg


  • リストアした仮想マシンを起動させます。
    起動時は下記警告が表示されるので「I moved it」を選択します。
    msg.uuid.altered:This virtual machine might have been moved or copied.In order to configure certain management and networking features, VMware ESX needs to know if this virtual machine was moved or copied.If you don't know, answer "I copied it".

                    翻訳↓
    msg.uuid.altered: この仮想計算機は、動かされるか、またはコピーされたかもしれません。ある管理とネットワーク機能を構成するために、VMware ESXは、この仮想計算機が動かされたか、またはコピーされたかを知る必要があります。わからない場合は「コピーした」と回答してください。
    ※「I copied it」と回答するとネットワーク系の設定が初期化されてしまうので「I moved it」を選択します。

  • 起動して疎通確認で問題がなければリストアは完了です。
↑

FAQ

↑

NFS領域をデータストアとして追加できない。

  • Q.
    NFS領域をデータストアとして追加すると下記エラーが出る
    esxi_backup06.jpg
  • A.
    NFSサーバの設定を見直して下さい。
    NFSの設定に問題がない場合、NFSサービスを再起動する事で解決しました。
    [root@serv100]# /etc/init.d/nfs restart
↑

参考

このエントリーをはてなブックマークに追加
Last-modified: 2011-06-06 (月) 21:09:57   最終更新のRSS