태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

Service Console에서도 Virtual Machine Online Backup이 가능할까?
앞서 vcb관련 내용을 포스트 했는데,,
여기서 설명하는 내용은 vmdk 파일 자체를 백업 받는 방법입니다.

ESX 2.5.x 인 경우

1. vmAddRedo.pl     # Snapshot 생성
2. vmkfstools -i source.vmdk /vmfs/backup/target.vmdk
3. vmCommit.pl       # Snapshot 제거

# vmware-cmd -l
/root/vmware/win2k3/win2k3.vmx
/root/vmware/win2k/win2k.vmx

# vmAddRedo.pl -c /root/vmware/win2k3/win2k3.vmx
vmAddRedo: VM config file is '/root/vmware/win2k3/win2k3.vmx'

vmAddRedo: Disks found that are in use:
vmAddRedo: Disk found: scsi0:0 (localvmfs:win2k3.vmdk)
vmAddRedo:    1: scsi0:0
vmAddRedo: Creating the RedoLogs for cfg : /root/vmware/win2k3/win2k3.vmx
vmAddRedo:    scsi0:0:Adding REDO
vmAddRedo: diskname :/vmfs/localvmfs/win2k3.vmdk

# grep vmdk /root/vmware/win2k3/win2k3.vmx
scsi0:0.name = "localvmfs:win2k3.vmdk"

# vmkfstools -i /vmfs/localvmfs/win2k3.vmdk /vmfs/backup/win2k3.vmdk

# vmCommit.pl -c /root/vmware/win2k3/win2k3.vmx

vmCommit: VM config file is '/root/vmware/win2k3/win2k3.vmx'

vmCommit: Disks found that are in use:
vmCommit: Disk found: scsi0:0 (localvmfs:win2k3.vmdk)
vmCommit:    1: scsi0:0
vmCommit: Backing up the cfg : /root/vmware/win2k3/win2k3.vmx

vmCommit: scsi0:0: Adding stacked REDO.REDO
vmCommitRedo: diskname :/vmfs/localvmfs/win2k3.vmdk
vmCommit: scsi0:0: Committing REDO
Please wait, committing disks...
vmCommit: scsi0:0: Committing REDO.REDO


VI3 인 경우

1. vmware-cmd ${vm} createsnapshot ${vmname}-snapshot
2. vmkfstools -i source.vmdk /vmfs/volumes/backup/target.vmdk
3. vmware-cmd ${vm} removesnapshots

아래 스크립트는 참고만 하시고,, 그대로 사용하시면 안됩니다.

#!/bin/sh
logfile="/tmp/backuplog"

echolog() {
    vmname=$1
    msg=$2
    now=$(date "+%b %d %T")
    echo "${now} ${vmname} # ${msg}"
    echo "${now} ${vmname} # ${msg}" >> ${logfile}
}

/usr/bin/vmware-cmd -l | while read vm
## cat /tmp/vms | while read vm
do
    vmname=$(/usr/bin/vmware-cmd ${vm} getconfig displayname | awk '{print $3}')
    echolog ${vmname} "vmname = ${vmname}"

    echolog ${vmname} "create snapshot"
    if [ $(/usr/bin/vmware-cmd ${vm} createsnapshot ${vmname}-snapshot | awk '{print $3}') == 1 ]
    then
        echolog ${vmname} "snapshot is successfully created"
    else
        echolog ${vmname} "snapshot creation has an error !!!!"
    fi

    echolog ${vmname} "verify snapshot creation"
    if [ $(/usr/bin/vmware-cmd ${vm} hassnapshot | awk '{print $3}') == 1 ]
    then
        echolog ${vmname} "snapshot is successfully detected"
   
        case ${vmname} in
          test1 )
          files="/vmfs/volumes/lovmfs/test1/test1.vmdk"
          ;;
          test2 )
          files="/vmfs/volumes/lovmfs/test2/test2.vmdk"
         ;;
        esac
  
        echolog ${vmname} "backup image"
        for eachfile in ${files}
        do
            fromfile=${eachfile}
            tofile=$(dirname ${eachfile})/BK/$(basename ${eachfile})
            if [ -d $(dirname ${tofile}) ]
            then
                echolog ${vmname} "backup directory already exist"
            else
                echolog ${vmname} "backup directory does not exist, make it"
                mkdir -p $(dirname ${tofile})
            fi
            vmkfstools -i ${fromfile} ${tofile}
            diff ${fromfile} ${tofile}
            if [ $? == 0 ]
            then
                echolog ${vmname} "${fromfile} is successfully copied to ${tofile}"
            else
                echolog ${vmname} "${fromfile} copy has an error !!!!"
            fi
        done
   
        echolog ${vmname} "delete snapshot"
        if [ $(/usr/bin/vmware-cmd ${vm} removesnapshots | awk '{print $3}') == 1 ]
        then
            echolog ${vmname} "snapshot is successfully removed"
        else
            echolog ${vmname} "snapshot removing has an error !!!!"
        fi
    else
        echolog ${vmname} "snapshot does not exist !!!!"
    fi
    echo -n $(date "+%b %d %T") ${vmname} "# "
    /usr/bin/vmware-cmd ${vm} hassnapshot
    ;;
done

저작자 표시 비영리
Posted by alwaysu012

트랙백 주소 : http://www.alwaysu012.net/trackback/24 관련글 쓰기

댓글을 달아 주세요