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