qcow2 kvm 게스트 백업


13

qcow2 kvm 게스트 백업에 대한 좋은 정보를 찾을 수 없습니다. 게스트 실행 상태, 파일 시스템에만 관심이 없습니다. 이 질문 은 사용을 제안 savevm하지만 스냅 샷을 만듭니다. 파일 시스템을 원격으로 백업하고 싶습니다.

다음보다 더 좋은 방법이 있습니까?

  1. virt_machine 일시 중지 # 가상 머신 일시 중지
  2. rsync --sparse /home/vm/image.qcow2 /tmp/image.dec_14_2010.qcow2 # 이미지를 동일한 드라이브에 복사
  3. virt_machine을 재개
  4. rsync --sparse /tmp/image.dec_14_2010.qcow2 ssh : // backup @ backupmachine : / vmbackups

이것에는 몇 가지 단점이 있습니다. 먼저, 큰 이미지 파일을 복사하는 데 시간이 오래 걸립니다. 둘째, 항상 컴퓨터를 백업하기에 충분한 공간이 있는지 확인해야합니다. 이것은 이상적이지 않습니다. KVM 백업을 관리하는 다른 더 좋은 방법이 있습니까?

감사.

답변:


7

qemu-nbd의 스냅 샷 기능을 제안합니다.

qemu-nbd --snapshot --connect=/dev/nbd0 image.qcow2

그런 다음 / dev / nbd0p1 (파티션 1), rsync, 마운트 해제 및 마지막으로 분리하십시오.

qemu-nbd-연결 끊기 / dev / nbd0


5

이 이미지가 더러워진 경우 (일시 중지가 도움이 될 수 있지만 여전히 일관되지 않을 수 있음)

qcow2 스파 스 파일을 보유한 LVM 파일 시스템에서 스냅 샷을 수행하십시오 (LVM 스냅 샷을위한 공간이 있다고 가정).

LVM 스냅 샷을 마운트하십시오.

sshfs를 사용하여 원격을 마운트하십시오.

스파 스 복사를 사용하여 sshfs 마운트 지점에 복사 (cp --sparse = always src dest)

복사 시간은 단축되지만 이미지가 대부분 가득 찬 경우에도 여전히 최대 시간이 걸립니다.

VM 내에서 데이터를 백업하는 것이 더 좋은 아이디어 일 것입니다 (공간 / 시간이 적음). 개별 vm을 백업 / 복원 할 일반 호스트로 취급합니다. 즉, 필요한 것을 가져오고 데이터없이 스텁 vm 세트를 유지하여 빠르게 백업 및 실행합니다.


재미 있네요 단순화를 위해 파일 시스템 위에 LVM이 없습니다. 전체 이미지를 복사하는 것이 좋습니다. 그러면 어느 시점에서든 시스템 오류가 발생할 경우 대기 장애 조치를 수행 할 수 있습니다.
EightyEight

1
문제 없어요. LVM을 사용하면 VM을 일시 중지하지 않아도되며 계속 실행되는 동안 스냅 샷을 만들 수 있습니다.
ax25

3

개인적으로, 나는이 문제로 매우 어려운 시간을 보냈으며 Quiesce 상태에서도 게스트 백업이 비정상적이라는 것을 알았습니다. 이러한 백업을 정기적으로 복원하려고 시도하지 않으면 실제로 작동하는지 전혀 알 수 없습니다.

많은 실험을 거친 후 이미지 백업을 완전히 펀칭하고 베어 메탈 서버에 사용할 수있는 기존의 네트워크 백업 솔루션을 사용했습니다. 필자의 경우 BackupPC를 사용했지만 오래되었지만 매우 안정적이었습니다. 각 서버에서 사용중인 특정 응용 프로그램에 대한 백업 솔루션을 구성했습니다. 예를 들어 MySQL의 경우 sqldump, Joomla의 플러그인 등이 있습니다.

PIA이지만 훨씬 빠르고 안정적입니다.


감사합니다 @ hdave. 이 접근 방식을 사용하면 VM의 주요 이점 중 하나 인 격리를 잃고있는 것 같습니다. 복원하려면 모든 것을 수동으로 다시 설치하고 구성해야합니다. 실제로 내가 원하는 접근법은 아닙니다. 그러나 어쨌든, 그것은 유효한 기술입니다.
EightyEight

100 %가 왕의 고통이라는 데 동의합니다. 이 너트에 금이 간 경우 어떻게했는지 알려주십시오!
hdave

@EightyEight : Chef 또는 Puppet과 같은 구성 관리 소프트웨어를 적극 권장합니다. 동일한 두 번째 서버를 설정하려는 경우 훨씬 유연하고 고통도 적습니다 (물리적 또는 가상의 문제는 중요하지 않음). Chef에는 거의 모든 하이퍼 바이저를위한 플러그인이 있으며 호스트를 프로비저닝 및 구성하는 데 도움을 줄 수 있습니다. 이렇게하면 백업에 더 적은 공간을 사용하고 (전체 VM이 특정 데이터 세트에 비해 더 큼) 새로운 환경에서 더 빠른 배포 시간을 활용할 수 있습니다. 또한 CM은 코드의 인프라 문서와 같습니다.
Rafael Bugajewski

2

어디에서 스냅 샷을 수행하든 (LVM 또는 qcow2) VM을 생성하기 전에 정지해야합니다. 그렇지 않으면 데이터가 손실되고 이미지가 손상됩니다.


그래도 전원 코드를 뽑으면 더 이상 그렇게 할 수 없습니까?

1
더 이상은 물론입니다. :)
dyasny

이것에 대해 좀 더 생각하고, 도메인을 정지 시키면 아무것도 추가되지 않습니다.

errr, "충돌 일관성"을 정의하십시오. 게스트 OS에 v-disk로 향하는 일부 기내 데이터가있을 수 있으며, 플러그를 뽑으면 손실됩니다. 이론적으로이 데이터는 스냅 샷이 게시 된 후 기록 될 수 있지만 모든 virt 플랫폼의 라이브 스냅 샷에는 게스트 에이전트의 중지 / 해동이 포함됩니다. 또한, 데이터가 손실되지 않으면 데이터는 여전히 기본 이미지 대신 스냅 샷으로 표시되어 PIT의 목적을
상실합니다.

"충돌 일관성"은 단지 "충돌에서 예상 한대로 일관성"을 의미합니다. 즉, 저널 등에 의존하고 적시에 fsync가 부족하여 일부 데이터 손실을 수용합니다. "모든 virt 플랫폼의 라이브 스냅 샷에 게스트 에이전트에서 정지 / 해동이 포함되는 것이 좋은 이유가 있습니다."내가 알기로는 그 이유는 LVM 스냅 샷을 생성하는 것과 정확히 동일합니다. LVM 스냅 샷보다 정지하기 전에 KVM이 fsync하지 않는 것 같습니까? 물론, 스냅 샷을 위해 LVM을 사용하지 않는다면, 정지하지 않는 것은 어리석은 일입니다. 그러나 그것은 다르고 당신이 말하는 것이 아닙니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.