KVM qcow2 VPS 실행 백업


9

qcow2 파일의 KVM VPS 백업을 실행하는 동안 강력한 방법을 원합니다. 오랫동안 검색 한 후 라이브 백업에 rsync 를 사용할 수 있음을 발견했습니다 . rsync에 다음 명령을 사용했습니다.

rsync -avh /vms/base.qcow2 /backup/backup.qcow2

제대로 작동했습니다. 그러나 쓰기 및 삭제 작업으로 인해 VPS가 변경되는 동안 백업을 수행하면 백업 qcow2 이미지가 손상 될 수 있습니다 (새 소프트웨어 설치 또는 업데이트처럼).

따라서 라이브 VPS의 스냅 샷에서 백업을 수행하는 것이 더 흥미로운 옵션으로 보입니다.

VPS 실행 백업을 위해 다음 명령을 사용했습니다.

1. 스냅 샷 생성 :

qemu-img create -f qcow2 -b base.qcow2 snapshot.qcow2

2. Raw 이미지 형식 (.img)으로 스냅 샷 변환 :

qemu-img convert -O raw snapshot.qcow2 /backup/backup.img

VPS를 복원하려면

qcow2 이미지에서 3.raw 이미지 변환 :

qemu-img convert -O qcow2 /backup/backup.img base.qcow2

그런 다음 virsh create base.xml명령으로 VPS를 시작할 수 있습니다 .

이 방법도 완벽하게 작동하지만 VPS 실행 백업을 수행하는 데 적합한 방법인지 여전히 확실하지 않습니다. 나는 여기여기 에 qemu-img 명령에 대한 훌륭한 문서를 발견 했습니다 . 그러나 그들은 원시 이미지에서 라이브 VPS의 스냅 샷을 변환하는 것에 대해서는 언급하지 않았습니다.

라이브 VPS 백업에 어떤 방법이 더 적합합니까? 원시 이미지에서 스냅 샷을 변환하는 것이 안전합니까?

특정 조건에서 스냅 샷 및 기본 파일이 어떻게 작동하는지에 대한 자세한 문서를 얻을 수 있다면 매우 유용합니다.

어쩌면 기본 qcow2 이미지를 스냅 샷을 변환하는 대신 원시 백업 파일로 변환 할 수도 있습니다. 따라서 명령 흐름은 다음과 같습니다.
1. 스냅 샷 생성
2. 기본 qcow2를 백업 원시 이미지로 변환
3. 스냅 샷 변경 사항을 기본 이미지로 커밋
4. 스냅 샷 삭제

나는 이것을 시도했고 5GB의 작은 VPS에서 잘 작동했습니다. 그러나 VPS 크기가 클 때 오류나 VPS 손상의 가능성이 있습니까?

미리 감사드립니다 ...


2
이것이 가상 머신이 논리 볼륨에 상주하는 이유 중 하나입니다. 고유 한 스냅 샷 지원 기능이 있습니다.
Halfgaar

답변:


12

유일하게 누락 된 것은 스냅 샷을 작성하기 전에 게스트 파일 시스템을 정지하여 일관성을 유지하는 것입니다. virsh domfsfreezelibvirtd를 사용 하는 경우이 작업을 수행 할 수 있습니다 .

예를 들어, 작업 순서는 다음과 같습니다.

# Freeze guest filesystems
virsh domfsfreeze $VM_NAME

# Create snapshot
qemu-img create -f qcow2 -b $VM_NAME.qcow2 snapshot.qcow2

# Thaw guest filesystems
virsh domfsthaw $VM_NAME

# Take backup from snapshot
qemu-img convert -O raw snapshot.qcow2 /backup/backup.img

이것은 요구 것을 잘 참고 qemu-guest-agent설치 및 VM에서 실행. 배포 및 설치 선택에 따라, 그렇지 않을 수도 있습니다.

qemu-guest-agent확장 가능; 특정 소프트웨어를 지원하기 위해 스크립트를 추가 할 수 있습니다. 예를 들어, MySQL을 일관된 상태로 만드는 샘플 스크립트가 포함되어 있습니다.


이 답변에서 누락 된 것은 백업 후 스냅 샷 제거입니다. :)
dyasny

2
@ BoscoD'mello 하드 드라이브가 매우 나쁜 경우가 아니면 1 초 미만이어야합니다. 걱정할 가치가 없습니다.
Michael Hampton 5

1
아아, 스냅 샷이 작동하지 않았습니다. 을 시도 할 때 virsh domfsfreeze $VM_NAME게스트 파일 시스템에 대한 권한이 거부되었습니다. 내 게스트 파일 시스템은 암호화되어 있습니다.
코더

2
@ Edward_178118 워크로드가 1 초 동안 중단 될 수 있는지 여부에 따라 다릅니다.
Michael Hampton

2
@ Edward_178118 지연 시간이 매우 짧은 네트워크 작업일까요? 나는 문제가 된 것을 결코 본 적이 없다.
Michael Hampton

1

백업 중에 임시 스냅 샷을 생성 한 후 나중에 다시 커밋하는 다른 방법이 있습니다.

# Create a temporary backup snapshot which records changes during backup
virsh snapshot-create-as vm backup-tmp --disk-only --atomic --quiesce --no-metadata --diskspec sda,file=/tmp/sda_temp.qcow2
# Now the main image is frozen and the changes are going into /tmp/sda_temp.qcow2

# Do your backup here
...

# Now we commit back data from temp snapshot into the main image
virsh blockcommit vm sda --active --pivot
# Remove the temporary snapshot file
rm /tmp/sda_temp.qcow2

자세한 내용은 https://wiki.libvirt.org/page/Live-disk-backup-with-active-blockcommit를 참조하십시오.


1
나중에 실행중인 vm에서 나온 백업 디스크가 다시 필요한 경우 어떻게 복원 하시겠습니까? 복원을 위해 램 내용도 필요하지 않습니까?
Adrian Zaugg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.