본문 바로가기
오픈스택

오픈스택 VM 백업 스크립트(Compute)

by 좀빅 2020. 4. 27.

오픈스택 서버 장애 시 복구를 위한 환경설정 파일 및 VM 인스턴스를 스냅샷 및 이미지 다운으로를 활용하여 시스템을 백업합니다.

[동작원리]

이전 포스팅에서 컨트롤러가 정상적으로 VM을 백업하지 못하는 상황에서 사용할 수 있는 스크립트이다.

 

Openstack controller가 배포하는 VM들은 각 가용 영역에 돌아가면서 Compute 노드 정확히는 Nova 노드에 VM이 생성된다.
즉, 실제 VM은 Controller가 아닌 Compute가 가지고 있는 것이 정확하다, 그렇기 때문에 해당 Compute 노드에 접속하여  Qcow2로 Convert를 수행한다.
1. virsh 커맨드를 사용하여 해당 KVM 정보를 색출한다.  VM 백업 시 사용할 이름과 해당  UUID 정보를 추출

2. qemu-img 커맨드를 사용하여 해당 파일을 qcow2로 변환

3. 선택사항에 따라 2가지 작업으로 나눌 수 있다.
    - 해당 이미지를 Controller에 Glance로 바로 Upload

[스크립트는 게속 보정중입니다.]


[컴퓨트노드에서 인스턴스 qcow2파일로 변환 스크립트]

#!/bin/bash
########## INFO LIST ##########
HOSTNAME=`hostname`
BACK_DATE1=`date +%Y%m%d`
BACK_DATE2=`date +%Y-%m-%d_%H:%M:%S`
BACK_TIME=`date +%H:%M:%S.%3N`
FILE_NAME=`basename "${OPS_BACK_DIR}/1.SCRIPT/1.OP_CONTROL_BK"`

########## Backup directory path ##########
OPS_BACK_DIR="/root/OPS"
OPS_LOG_DIR="${OPS_BACK_DIR}/1.SCRIPT/script_log/${HOSTNAME}_${BACK_DATE1}_recovery_script.log"

KEY_AUTH_DIR="${OPS_BACK_DIR}/0.AUTH"

INS_BACK_DIR="/var/lib/nova/instances/vm_backup"
INS_RESIZE_DIR="/var/lib/nova/instances/vm_backup/resize"

########## Keystone LIST ##########
#User(Teanet ID) command openrc!!!
source ${KEY_AUTH_DIR}/admin-openrc

if [ ! -d "${INS_BACK_DIR}" ] ; then
        mkdir -p ${INS_BACK_DIR}
fi

if [ ! -d "${INS_RESIZE_DIR}" ] ; then
        mkdir -p ${INS_RESIZE_DIR}
fi

INS_LIST=`virsh list --all | grep -Ev "Name|---" | awk '{print $2}'`

for name in ${INS_LIST} ; do
        INT_NAME=`virsh dumpxml ${name} | grep -E "nova:name" | awk -F '[<>]' '{print $3}'`
        INS_UUID=`virsh dumpxml ${name} | grep -E "source file" | grep "disk"  | tr "'" "=" | awk -F '[=]' '{print $3}'`

        #instance -> qcow2 Convert
        qemu-img convert -f qcow2 -O qcow2 ${INS_UUID}  ${INS_BACK_DIR}/${INS_NAME}_orig.qcow2 -p
        #qcow2 -> resize qcow2 Convert
        qemu-img convert -c -O qcow2 ${INS_BACK_DIR}/${INS_NAME}_orig.qcow2 ${INS_RESIZE_DIR}/${INS_NAME}.qcow2

        image_file="${INS_RESIZE_DIR}/${INS_NAME}.qcow2"

        #choise First : compute -> controller qcow image uploading
        nohup glance image-create --name ${INS_NAME} --file ${image_file} --disk-format qcow2 --container-format bare --visibility public --progress &

        #choise Second : compute qcow image file -> scp controller send
        #scp -i /root/.ssh/OPS_id-rsa -oStrictHostKeyChecking ${INS_RESIZE_DIR}/${INS_NAME}.qcow2 root@ops_controller:/OPS/img_back & 
done

'오픈스택' 카테고리의 다른 글

NOVA 백업 수행시 주의사항  (0) 2020.05.06
오픈스택 VM 백업 스크립트(Controller)  (0) 2020.04.27

댓글