XenServer 6.2 백업 및 복구 – 최종
XenServer 백업 및 복구
작성일 : 2015-03-31
작성자 : 클루닉스/서 진우 (alang@clunix.com)
XenServer 에서 백업을 해야하는 대상은 아래와 같다.
– XenServer Host (Hypervisor, Dom0)
– XenServer VM 백업
– XenServer Pool (여러 Host 가 Pool 로 구성된 경우 Pool 에 대한 meta 정보 백업이 필요함.)
즉, XenServer를 운영하면서 백업의 대상은 XenServer Hypervisor 자체 OS와 XenServer
에서 운영하는 VM이 해당된다.
XenServer 를 운영하면서 장애 상황에 따라 몇 가지 백업 및 복구 방법이 있고,
각 방법마다 복구 수준과 복구에 소요되는 시간 차이를 가지고 있다.
본 문서에서는 각 요소별 백업 복구 방법에 대해 알아보고, 해당 방법이 처리할 수 있는
장애 수준과 특징에 대해 알아보도록 한다.
- XenServer Host 백업 및 복구
XenServer Host 백업/복구는 XenServer Dom0 Hypervisor OS 에 깨질 경우 장애 복구를
위해 필요한 내용이다.
XenServer OS 가 깨지는 경우는 크게 아래와 같다.
- 연속적인 XenServer Kernel Update
XenServer Update 중에는 Kernel update 가 포함된 경우가 종종 있다.
보통 XenServer Kernel 이 update 되면 이전 커널이 fallback 이라는 boot lable 명
으로 보존이 되는데, 장기간 Update를 안하다가 한번에 여러개의 Kernel을 연속적으로
Update 할 경우 연속된 Kernel 모두에 이상이 있다면 더이상 OS 진입이 어려울 수 있다.
- 관리 실수로 인해 OS 중요 파일 손상
관리자 실수나 비인가자의 고의에 의해 시스템 중요 파일을 지우거나 손상 되었을때..
이런 경우 XenServer Host 백업이 되어 있다면, OS를 재설치 하지 않고 백업된 OS 전체
이미지를 통해 기존 상태로 복원이 가능하다.
– XenServer Host 백업 복구 방법
# xe host-backup host=<hostname> file-name=<host_backup_file_name>
실제 예)
# xe host-backup host=XS-EDU00 file-name=XS-EDU00.backup
호스트를 백업하면 /dev/sda1 에 설치된 xenserver OS 파일 전체를 압축하여
이미지 파일로 백업한다.
실제 운영하는 xenserver를 백업해 보면 4~6GB 정도의 크기로 저장된다.
호스트 백업 파일을 보관할 때는 반드시 외부 스토리지에 저장하길 권장한다.
호스트 백업 파일을 이용해야 하는 경우는 XenServer OS가 정상적으로 부팅이
되지 않는 경우이다. XenServer OS 내 디렉토리에 백업 파일을 저장한다면
백업 파일을 이용하여 복구가 어려울 수 있기 때문이다.
호스트 백업 파일을 통해 XenServer Host 를 복구하는 방법은 아래와 같다.
# xe host-restore file-name=host.backup -s <master_ip> -u root -pw <password>
이렇게 복구를 하면 host.backup 에 이미지 내용이 XenServer Host 의 /dev/sda2 에
그대로 복제가 된다.
이렇게 restore가 완료된 후, install CD로 부팅을 하고 설치 과정을 진행하면
“Restore form backup” 메뉴가 나타난다. 선택하면 자동으로 /dev/sda2 의 내용을
/dev/sda1 으로 복제하여 복구가 완료된다.
xe host-restore Operation 을 수행해 두는 시점은 크게 두 가지로 구분할 수 있다.
- 모든 VM 구성이 최종 완료된 후 host-backup 과 host-restore 수행
장애 발생과 상관없이 고정적인 구성으로 XenServer OS를 운영할 경우
미리 최종 OS 상태를 백업한 후, 복구본을 sda2에 보관하고 있는 경우입니다.
이 경우 OS 문제 발생 시, install CD로 즉각적으로 복구 가능함.
- XenServer OS 재 설치하여 긴급 복구한 후, 원격 저장소에 있는 호스트 백업
파일로 OS 복구
단순히 host-backup 만 원격 저장소에 보관하고 있는 경우, 현재 OS에 장애가
발생하여 OS booting 이 불가하면, host-restore 명령을 수행할 수 없다.
이 경우에는 XenServer install CD로 OS Upgrade 및 재설치를 하여 OS 접속이
가능하도록 조치한 후, 호스트 백업본을 복구하여 최종 OS 복구를 할 수 있다.
이 경우 sda3 장치를 이용하여 만든 Guest Storeage(SR)는 복원이 어려울 수
있다. 그렇기 때문에 sda3 에는 가급적 서비스에 해당하는 VM을 구성하지 않
도록 한다.
호스트 백업본으로 OS를 복구하면 모든 VM 및 장치 구성에 대한 설정을 그대로
복구가 가능하다.
만일 원격 저장소에 VM에 대한 export 백업 이미지를 보관하고 있다면 XenServer OS
을 새로 설치한 후, VM 역시 vm-import 로 새롭게 구성 가능하지만, 이 경우 복구에
많은 시간이 소요된다.
호스트 백업은 구성된 VM에는 아무런 문제가 없고, XenServer OS 자체에 문제가 발생
하여 복구가 필요할때 가장 빨리 복구가 가능한 방법이라 볼수 있다.
- XenServer VM 백업 및 복구
XenServer 에 운영중인 VM에 대한 백업과 복구 방법 역시 몇 가지 존재하는데
방법에 따라 복구 수준과 복구 시간의 차이가 존재한다.
각 방법에 따른 백업 및 복구 절차와 특징에 대해 간단히 설명하고자 한다.
2.1 VM-Copy 이용 방법
vm-copy 는 VM 자체를 같은 XenServer Host 에 존재하는 SR에 복제를 하는 방법입니다.
사용 방법은 아래와 같습니다.
먼저 VM을 저장할 SR 목록과 UUID를 확인한다.
# xe sr-list
그런 후 원하는 SR에 VM을 복제한다.
# xe vm-copy new-name-label=<copy_vm_name> vm=<org_vm_name> sr-uuid=<복제할 SR UUID>
장시간 VM을 운영하다보면 해당 VM의 OS에 문제가 발생할 수 있다.
VM에 장애가 발생하여 더이상 유지가 어려울 경우 해당 VM의 초기 복제본이 있다면
장애 VM을 shutdown 시키고, 바로 복제본을 start 하여 서비스 가동이 가능하다.
VM-Copy 와 비슷한 VM-clone 명령이 있는데, 이는 Fast Copy 와 같은 기능이다.
즉 VM OS 전체 데이터를 복제하는 것이 아니라, 원본 VM OS 데이터에서 해당 시점의
OS 상태를 snapshot 과 같이 보관하는 방법이다.
vm-clone 은 복제 시간이 매우 빠르다. (수초) 다만 VM의 원본 데이터와 변경 데이터를
별도로 관리하기 때문에 실제 운영되는 VM에 적용하기엔 안정성이나 성능 문제가 발생
할 수 있다. 테스트용 VM 유지에 적합하다고 판단된다.
vm-clone 방법은 아래와 같다.
# xe vm-clone new-name-label=<copy_vm_name> vm=<org_vm_name>
참고로, vm-clone은 org_vm과 copy_vm이 무조건 동일 SR에 존재해야 하는 제한이 있다.
2.2 VM-Export 이용 방법
vm-export 를 이용한 백업 방법은 VM 을 복구하는데 있어서는 가장 확실한 방법이라
볼수 있다. 다만 단점은 백업 및 복구에 상당 시간과 몇 가지 절차가 필요하다는 점이다.
vm-export 는 XenServer 내에서 운영되는 VM의 모든 정보와 데이터를 단일 파일 형태로
백업을 하는 방법이다. 해당 백업본을 원격 저장소에 별도로 보관하고 있다면, 해당 VM
에 문제가 발생하거나 해당 XenServer OS에 문제가 발생하여도 최종 복구가 가능하다.
vm-export 방법은 아래와 같다.
# xe vm-export vm=<vn_name> filename=<export_vm.xva>
export_vm.xva 파일은 가급적 원격 저장소에 별도로 보관하는 것이 좋다.
다만 export 절차에 발생하는 부하와 저장에 필요한 스토리지 용량등이 매우 크기
때문에 중요성이 낮은 모든 VM을 export 방법으로 보관, 운영하는데는 제약이 많다.
서비스 구성 요소중 중요한 VM 중심으로 해당 방법의 백업본을 보관하길 권장한다.
복구 방법은 아래와 같다.
# xe vm-import filename=export_vm.xva (sr-uuid=<sr_uuid>)
vm-import 로 복구하는 VM을 특정 SR에 배치하고 싶을 경우 sr-uuid 옵션에 해당
SR UUID를 지정해 주면 된다.
참고로, vm-export/vm-import 시 Xenserver OS에 많은 부하가 유발된다.
가급적 XenServer에 서비스 중인 VM을 모두 중지한 후 export 작업을 하길 권장하다.
2.3 VM-Export –metadata 이용 방법
vm-export –matadata 백업은 VM에 대한 OS 데이터는 제외하고 단순히 VM을 구성하는
meta 정보만을 백업하는 방법이다.
vm-export 로 VM의 모든 데이터를 백업하기 위해서는 VM OS 용량과 동일한 백업 저장
용량이 필요하다. 백업에 소요되는 시간 VM 용량에 따라 길게 소요된다. (수십분~수시간)
하지만 vm-export –matedata 를 통해 meta 정보만을 백업하면, 1MB 이하 용량과 수초
의 백업 시간만이 소요된다.
vm-export –matedata 백업방법은 VM OS데이터에는 아무 문제가 없지만 XenServer OS가
깨져서 XenServer OS 재설치가 필요할 경우, 재 설치된 XenServer OS 상에서 기존 VM
을 다시 살릴때 사용된다.
XenServer OS를 재설치하면 VM 구성에 대한 모든 정보는 사라진다. SR이 구성된 HDD
를 초기화 시키지 않아서 VM에 대한 데이터가 존재하더라도 VM을 구성하는 Meta 정보가
없기 때문에 VM을 복구 할 수 없게 된다.
이때 vm-export –metadata 가 존재한다면 새로 설치된 XenServer OS상에서도 기존
VM 복구가 가능하다. 단 XenServer 구성 시 Guest Storage 를 구성하면 안된다.
즉 기존 VM 데이터가 존재하는 Disk를 XenServer 재 설치 시 초기화 시키면 안된다는
의미이다.
vm-export –metadata 수행 방법은 vm-export 와 유사하다.
# xe vm-export vm=<vn_name> filename=<export_vm.xva> –metadata
vm-import –metadata 복구 방법 역시 vm-import와 거의 동일하다.
# xe vm-import filename=<export_vm.xva> sr-uuid=<sr_uuid> –metadata
그럼 실제 상황을 과정하여 vm-export –metadata 복구 절차에 대해 소개하겠다.
– 시나리오 :
XenServer OS 문제로 XenServer OS를 재설치 해야한다. 이때 가지고 있는 VM의 백업본은
metadata 밖에 없다.
– 복구방법 :
XenServer 설치 시 Guest Storage를 구성하지 않아 기존의 VM이 위치한 SR의 실제 데이터
는 보존하고, XenServer OS만 새로 설치한다.
XenServer OS 설치 후, 기존 XenServer SR 정보를 그대로 반영하여 SR 설정을 기존 상태로
복구한다.
그런 후 VM export meta 백업 파일을 해당 SR에 import 시켜서 VM을 복구 한다.
– 백업 및 복구절차
- XenServer 재 설치 전 작업
우선 물리적인 디스크 구성과 VM의 SR 정보에 대해 사전에 확인해 둔다.
# pvscan
# cat /proc/partitions
major minor #blocks name
7 0 52252 loop0
8 0 878542848 sda
8 1 41942033 sda1
8 2 41942033 sda2
8 3 794655727 sda3
8 16 878542848 sdb
8 32 878542848 sdc
8 48 878542848 sdd
252 0 4096 dm-0
252 1 4096 dm-1
252 2 4096 dm-2
252 3 4096 dm-3
# ls -al /dev/disk/by-id/
합계 0
drwxr-xr-x 2 root root 180 3월 25 19:04 .
drwxr-xr-x 8 root root 160 3월 25 19:04 ..
lrwxrwxrwx 1 root root 9 3월 25 19:04 scsi-36003005701bee8b01bcf61f197dd33e7 -> ../../sda
lrwxrwxrwx 1 root root 10 3월 25 19:04 scsi-36003005701bee8b01bcf61f197dd33e7-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 3월 25 19:04 scsi-36003005701bee8b01bcf61f197dd33e7-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 3월 25 19:04 scsi-36003005701bee8b01bcf61f197dd33e7-part3 -> ../../sda3
lrwxrwxrwx 1 root root 9 3월 25 19:04 scsi-36003005701bee8b01bcf61f197dd872b -> ../../sdb
lrwxrwxrwx 1 root root 9 3월 25 19:04 scsi-36003005701bee8b01bcf61f197ddd990 -> ../../sdc
lrwxrwxrwx 1 root root 9 3월 25 19:04 scsi-36003005701bee8b01bcf61f197de2d2c -> ../../sdd
# sr-uuid
uuid ( RO) : b701c6ab-7af3-a9e8-68b8-96170b6f8683
name-label ( RW): VDI Storage 1
uuid ( RO) : a8dcbd67-4832-cf1e-5c08-bbce854d2fa1
name-label ( RW): Local storage
uuid ( RO) : 520506ae-2830-7381-aa9c-7709f048d4b8
name-label ( RW): VDI Storage 2
uuid ( RO) : 986c14c2-6498-b5f3-b9aa-3ea7e6da13a7
name-label ( RW): VDI Storage 3
# xe vm-list name-label=<VM_NAME> params=all | grep SR-uuid
suspend-SR-uuid ( RW): b701c6ab-7af3-a9e8-68b8-96170b6f8683
# xe vm-export vm=<vm_name> filename=<vm_export_file> –metadata –multiple
;; 해당 VM이 소속된 SR-uuid와 SR name-label은 기억해 두길 ..
;; 가급적 XenCenter의 Storage 메뉴에서 직접 확인을 권장한다.
- XenServer 재설치
XenServer 설치
– Guest Storage는 절대 잡으면 안된다.
– XenServer 설치 시 sda 파티션이 새로 생성되기 때문에 sda3 에 적용된 SR은
복구가 힘들다. (????)
– xenserver update는XenServer 재 설치전 상태와 동일하게 맞춘다.
- XenServer 재설치 후 VM 복구
XenServer OS 가 재설치 된후 기존 디스크에 저장된 SR 정보를 재 확인한다.
XenServer SR의 경우 LVM으로 구성되어 있기 때문에 LVM의 PV 구성정보는 OS가 재설치되더라도
초기화를 하지 않는 이상 유지가 되어진다.
# pvscan
PV /dev/sdd VG VG_XenStorage-986c14c2-6498-b5f3-b9aa-3ea7e6da13a7 lvm2 [837.83 GB / 837.83 GB free]
PV /dev/sdc VG VG_XenStorage-520506ae-2830-7381-aa9c-7709f048d4b8 lvm2 [837.83 GB / 837.83 GB free]
PV /dev/sdb VG VG_XenStorage-b701c6ab-7af3-a9e8-68b8-96170b6f8683 lvm2 [837.83 GB / 386.93 GB free]
Total: 3 [2.45 TB] / in use: 3 [2.45 TB] / in no VG: 0 [0 ]
아래 부분을 기억함. VG_XenStorage-<기존 SR-uuid>
VG_XenStorage-b701c6ab-7af3-a9e8-68b8-96170b6f8683
확인된 SR-uuid를 통해 새로이 SR 설정을 추가한다. sr-introduce는 sr-create 와 달리 SR을 초기화 시키지
않고 논리적 설정 정보만을 생성하는 것이다.
[root@XS-EDU00 ~]# xe sr-introduce uuid=b701c6ab-7af3-a9e8-68b8-96170b6f8683 type=lvm name-label=”VDI Storage 1″ content-type=user shared=false
b701c6ab-7af3-a9e8-68b8-96170b6f8683
[root@XS-EDU00 ~]# xe sr-introduce uuid=520506ae-2830-7381-aa9c-7709f048d4b8 type=lvm name-label=”VDI Storage 2″ content-type=user shared=false
520506ae-2830-7381-aa9c-7709f048d4b8
[root@XS-EDU00 ~]# xe sr-introduce uuid=986c14c2-6498-b5f3-b9aa-3ea7e6da13a7 type=lvm name-label=”VDI Storage 3″ content-type=user shared=false
986c14c2-6498-b5f3-b9aa-3ea7e6da13a7
SR에 구성에 필요한 disk partition 장치 정보를 확인한다.
# ls -l /dev/disk/by-id/
합계 0
lrwxrwxrwx 1 root root 9 3월 31 10:11 scsi-36003005701bee8b01bcf61f197dd33e7 -> ../../sda
lrwxrwxrwx 1 root root 10 3월 31 10:11 scsi-36003005701bee8b01bcf61f197dd33e7-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 3월 31 10:11 scsi-36003005701bee8b01bcf61f197dd33e7-part2 -> ../../sda2
lrwxrwxrwx 1 root root 9 3월 31 10:11 scsi-36003005701bee8b01bcf61f197dd872b -> ../../sdb
lrwxrwxrwx 1 root root 9 3월 31 10:11 scsi-36003005701bee8b01bcf61f197ddd990 -> ../../sdc
lrwxrwxrwx 1 root root 9 3월 31 10:11 scsi-36003005701bee8b01bcf61f197de2d2c -> ../../sdd
XenPBD를 생성한다.
# xe pbd-create sr-uuid=b701c6ab-7af3-a9e8-68b8-96170b6f8683 device-config:device=/dev/disk/by-id/scsi-36003005701bee8b01bcf61f197dd872b host-uuid=2fafca13-fdca-49b9-9a8b-7cffd172af3c
7aeeb3e7-b8a8-268d-f402-89b30372e261
# xe pbd-create sr-uuid=520506ae-2830-7381-aa9c-7709f048d4b8 device-config:device=/dev/disk/by-id/scsi-36003005701bee8b01bcf61f197ddd990 host-uuid=2fafca13-fdca-49b9-9a8b-7cffd172af3c
05b1bb92-93ca-b019-8a89-27ea0000b719
# xe pbd-create sr-uuid=986c14c2-6498-b5f3-b9aa-3ea7e6da13a7 device-config:device=/dev/disk/by-id/scsi-36003005701bee8b01bcf61f197de2d2c host-uuid=2fafca13-fdca-49b9-9a8b-7cffd172af3c
4d5951e5-e38b-fc8c-db88-529df45b7a4a
xe pbd-create 시 반환되는 pbd uuid를 통해 생성된 pbd 를 활성화 시킨다.
# xe pbd-plug uuid=7aeeb3e7-b8a8-268d-f402-89b30372e261
# xe pbd-plug uuid=05b1bb92-93ca-b019-8a89-27ea0000b719
# xe pbd-plug uuid=4d5951e5-e38b-fc8c-db88-529df45b7a4a
이 단계가 마무리되면 기존 XenServer에서 구성된 SR과 동일한 SR 상태가 복원된 것이다.
최종적으로 기존에 백업 받아둔 VM 의 metadata 를 통해 기존 VM이 존재했던 SR에 복구 시킨다.
# xe vm-import –metadata filename=XENSERVER-TEST01.bak sr-uuid=b701c6ab-7af3-a9e8-68b8-96170b6f8683
f1305b54-1d23-af0a-a298-d3917a5d656d
2.4 VM-Migration 이용 방법
VM-imgration 은 특정 XenServer Host에 운영되는 VM 을 다른 XenServer Host로 옮기는 방법이다.
보통 vm-export 를 통해 원격 저장소에 해당 VM 을 백업한 후, 다른 XenServer에 옮기는 방법을
이용해도 가능하다. 하지만 이 경우 원격 저장소에 export 백업 파일을 만들고, 다시 다른 XenServer
에 import 과정을 통해야 해서 작업 절차와 시간에 소요되는 시간이 길다.
VM-migration은 이러한 절차를 거치지 않고 특정 XenServer Host에서 바로 다른 XenServer Host
로 바로 이전시킬 수 있기 때문에 효과적일 수 있다.
vm-migration은 XenServer 자체 xe 명령을 이용할 수도 있고, 외부 migration tool을
이용할수도 있다.
XenServer 자체 명령으로 제공되는 vm-migrate는 Pool 로 구성된 Host 간 VM 이전을
우선으로 설계된 기능인듯 하다.
Pool 구성과 상관없이 별개의 XenServer Host간 이전을 원할 경우 별도 tool을
이용하는 것을 권장한다. (자체 vm-migrate 명령은 테스트 과정중에 몇가지 불안요소가
발견되어 개인적으로 사용을 권장하진 않음)
– vm-migration tool 이용하는 방법 (Halted 상태)
# yum install glibc.i686
# wget http://djlab.com/stuff/migratevm-1.0.1.tar.gz
# tar zxf migratevm-1.0.1.tar.gz && cd migratevm-1.0.1
# ./migratevm
migratevm 1.0.1 started
Enter source host name/IP (blank = localhost):
Enter username for localhost (blank = root):
Enter password for localhost: *******
Enter source vm name or uuid on localhost: RNTIER27-04b
Enter destination host name/IP (blank = localhost): 192.168.123.72
Enter username for 192.168.123.72 (blank = root): root
Enter password for 192.168.123.72: *******
Destination SR on 192.168.123.72 (blank for default):
Connecting to source host
Connecting to destination host and Starting transfer
…… 1.9%, 7440.59 (KB/sec))
주요 옵션
-sh : source host
-su : source user (usually root)
-sp : source pass
-sv : source VM label or UUID
-dh : destination host
-du : destination user
-dp : destination pass
-ds : destination SR (optional)
# ./migratevm -sh localhost -su root -sp xxxxx -sv WIN7X02 \
-dh 192.168.123.72 -du root -dp xxxxx -ds f956e313-d403-9c21-62eb-b5ada58f7a87
- XenServer Pool 백업 및 복구
마지막으로 Pool 구성을 백업하는 방법이다. Pool 백업은 Pool을 구성하는 meta정보를
백업하는 방식이여서 백업과 복구 절차는 단순하다.
다음의 명령으로 풀 메타 데이터를 백업 할 수 있다.
# xe pool-dump-database file-name=<backup>
백업한 데이터를 이용해 복구하려면 다음과 같이 한다.
# xe pool-restore-database file-name=<backup>
# xe-toolstack-restart
실제로 복구를 실행하지 않고 테스트만 하려면 dry-run 옵션을 붙인다.
# xe pool-restore-database file-name=<backup> dry-run=true