ZConverter 에서 무료 백업 솔루션이 발표되었습니다.
2009년 9월 15일 부터 무료로 다운로드 받을 수 있다고 하는 군요..

http://www.zconverter.co.kr/ 에서 회원가입하면 다운로드 받을 수 있습니다.

회원가입할 때 추천인 아이디에 jklee 를 입력하시면,
Essential License 를 보내줍니다.

회원가입 바로가기 : http://www.zconverter.co.kr/bbs/register.php
추천인 아이디에 반드시 jklee 를 입력하세요..

'Windows' 카테고리의 다른 글

GVIM mswin.vim 환경설정  (0) 2010.12.13
My Lenovo ThinkPad T61p now has 8GB of RAM  (0) 2009.09.15
서류 가방 에러  (0) 2009.09.01
tasklist 로 실행 프로세스 확인  (0) 2009.07.01
Windows Command Line Scripts  (0) 2009.06.21

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

vSphere 4 가 나오면서 새로운 기능도 많이 추가되고, 라이선스 종류도 다양해 졌지만,,
지금 설명하는 내용은 VI 3.5 를 대상으로 합니다.

VI3 Foundation Edition 이상이면 VCB 가 포함되어 있습니다.
그런데,, VCB를 사용하려면,, 3rd Party Backup Software 가 필요합니다.
VMware Backup Guide를 살펴보다 보니,,
별도의 3rd Party Backup Software가 없어도,,
Service Console에서 vcb 명령으로 가상머신 백업이 가능하더군요..
본문은 아래 링크에서 받을 수 있습니다.
http://www.vmware.com/pdf/vi3_35/esx_3/r35/vi3_35_25_vm_backup.pdf

문서에서는 Virtual Center 와 연동되는 경우에 대해서도 설명되어 있는데,,
이곳에서는 ESX Server 단독으로 구성했을 경우로 가정합니다.

Service Console에서 백업을 진행하려면,,

  1. /etc/vmware/backuptools.conf
     
    VCHOST=localhost      # Virtual Center dns name 또는 IP. ESX 단독일 경우 localhost
    USERNAME=vcbuser      # VCHOST 접속 ID
    PASSWORD=vcbuser   # VCHOST 접속 ID의 Password
    VMNAMECACHE=/var/cache/vmName.cache   # default 값 유지
    TEMPDIR=/tmp       # scp 원격지 복사할 경우 임시 파일 보관 위치. 충분한 여유 공간 필요
     
  2. vcbVmName  명령어로 백업 대상 가상머신 찾기
     
    vcbVmName -s any:         #  모든 가상머신 리스트가 보여짐
    vcbVmName -s powerstate:on     # Power On 된 가상머신만 보여짐
     
    Error: No permission to perform this action. 에러가 발생할 경우 아래와 같이 실행.
    패스워드를 물어보면 root 유저의 패스워드 입력
    vcbVmName -h localhost -u root -s any:

    실행 결과
    Found VM:
    moref:208
    name:win_xp_test
    uuid:564db17a-2e1c-c6be-303f-ea30f8583f2a
    ipaddr:192.168.1.175
     
  3. vcbMounter로 백업하기
     
    vcbMounter -a ipaddr:192.168.1.175 -r /vmfs/volumes/backup
    vcbMounter -a moref:208 -r scp://user@backupserver:/backup/directory
    vcbMounter -a uuid:564db17a-2e1c-c6be-303f-ea30f8583f2a -r /home/backup

  4. vcbRestore로 복구하기
     
    vcbRestore -s /vmfs/volumes/backup     # 백업 폴더만 지정하면 복구가 가능함

    별도의 폴더에 복구하기 위해서는 catalog 파일을 수정해야 함
    이 부분은 매뉴얼 참고




/source/directory 내용을 통째로 /dest/directory 로 복제하는 방법

1. tar 이용

# ( cd /source/directory && tar cf - . ) |
> ( cd /dest/directory && tar xvfp - )

2. cpio 이용

# find /source/directory | cpio -dump /dest/directory

3. ssh와 결합하여 원격지 복제

SSH를 이용해서 다른 서버(target_host) 의 특정 디렉토리를 (/source/directory)
명령을 내린 서버의 특정 디렉토리 (/dest/directory) 로 백업하는 명령어

# ssh target_host tar -c -f - -C /source/directory . \| gzip -c \
> | gzip -cd | tar -x -f - -C /dest/directory

상당히 복잡해 보이는데,,
윗줄은 원격지에서 내려지는 명령이고,,
아랫줄은 로컬에 내려지는 명령이다.

4. 하루동안 변경된 내용만 압축

팁 하나더,,
하루동안 변경된 내용만 찾아서 압축하는 방법

아래 스크립트를 bak_last_day_changed.sh 라고 저장

#!/bin/bash

tar cvf - `find . -mtime -1 -type f -print` > $1.tar
gzip $1.tar

실행방법
백업하고자 하는 디렉토리로 이동하고,,

# cd /where/you/want/backup
# bak_last_day_changed.sh <your_backup_name>

5. 참고자료

오랜만에 내용을 참고하려고 들어왔다가,, 업데이트합니다. (06/26, 2009)

http://www.spikelab.org/blog/scpTarSshTarNc
이곳에 가면,, scp, tar와 ssh, tar와 nc 를 사용했을 경우 성능비교표를 확인할 수 있습니다.

http://ultra.ap.krakow.pl/~bar/DOC/ssh_backup.html
위에 예시로 들어 놓은 command 이외에 훨씬 더 많은 방법을 안내하고 있습니다.
방문하셔서 화

'Linux' 카테고리의 다른 글

Fedora CORE 설치 중 hpet 메시지에서 멈출 때..  (1) 2009.06.25
SSH Tunneling  (1) 2009.06.21
perl 스크립트를 원격지에서 실행하기  (0) 2009.06.21
VNC Startup Script  (0) 2009.06.21
Linux on the PLAYSTATION 3  (1) 2009.06.21

+ Recent posts