[server] 가상 머신 스냅 샷은 어떻게 작동합니까?

드라이브 이미징 소프트웨어를 10 년 이상 사용해온 결과, 가상 머신을 몇 초 만에 스냅 샷하고 복원 할 수 있지만 드라이브 이미징에는 몇 시간이 걸리는 것이 당연합니다.

VM을 스냅 샷하고 다른 OS에 다시 설치 한 다음 복원을 수행하고 몇 초 내에 이전 VM이 이전 상태로 완벽하게 백업됩니다.

어떻게 이런 일이 일어날 수 있습니까? VM 호스트는 실제로이를 가능하게하는 VM에 어떤 역할을합니까?



답변

스냅 샷을 생성 할 때 초기 가상 디스크 이미지의 모든 변경 사항은 실제로 이미지 자체에 적용되는 것이 아니라 새로운 (스냅 샷) 디스크 파일에 기록됩니다. 이 조치는 전체 가상 디스크 이미지를 복사 할 필요가 없기 때문에 쓰기 속도로 복사 작업을 수행하기 때문에 가상 디스크 이미지를 복사 할 필요가 없으므로 매우 빠릅니다 . 스냅 샷 이미지는 원래 가상 디스크 이미지 (스냅 샷을 생성 한 순간 그대로 유지됨)에서 점점 더 많은 데이터를 변경함에 따라 커집니다. 원본 이미지보다 훨씬 작을 수 있지만 최악의 경우 정확히 동일한 크기입니다 (모든 블록이 변경된 경우).

이 새 스냅 샷 이미지로 수행 할 수있는 작업은 두 가지입니다.

  1. 스냅 샷 삭제 : 매우 빠른 동작. Virtual Machine Manager는 스냅 샷 이미지 파일을 삭제하고 원본 디스크 이미지 또는 일부 이전 스냅 샷으로 제어를 되돌립니다.
  2. 스냅 샷 병합 : 가상 시스템 관리자는 변경된 블록 (예 : 스냅 샷 이미지)을 원본 이미지와 병합합니다. 이 작업은 원본 이미지의 블록 수에 따라 시간이 걸립니다. 다시 최악의 시나리오는 스냅 샷을 만든 후 원본 이미지의 모든 블록을 쓴 경우 전체 원본 이미지를 덮어 쓰는 것입니다.

위에서 설명한 모든 절차는 여러 스냅 샷에도 적용됩니다. 이 경우 원본 이미지는 하나의 스냅 샷일 수 있으며 다음 스냅 샷은 해당 (첫 번째) 스냅 샷의 블록을 참조 할 수 있습니다. 이렇게하면 쉽게 삭제하거나 병합 할 수있는 많은 스냅 샷을 만들 수 있습니다.


답변

스냅 샷을 사용하면 가상화 소프트웨어가 CPU 상태, RAM, 구성 (VM의 네트워크 카드 수) 및 디스크의 네 가지 사항을 추적해야합니다. 대량의 데이터가 아니기 때문에 처음 세 가지를 무시하고 있습니다. 소프트웨어는 비교적 작은 데이터 구조의 복사본을 만들어 파일에 저장할 수 있습니다. 따라서 디스크 스냅 샷 만 설명합니다.

먼저 VM이 하드 디스크로 보는 것은 실제로 호스트 파일 시스템의 파일 세트 일뿐입니다. 스냅 샷을 수행하기 위해 가상 머신 소프트웨어는 특정 시점에 VM의 디스크를 가져 와서 보존하고 새로운 빈 디스크 파일을 열고 이후의 모든 디스크 액세스에 대해 기록 중 복사 구성표를 수행합니다.

디스크 파일이 BigVM.disk라고 가정 해 봅시다. 스냅 샷을 작성하면 이제 VM 소프트웨어가 디스크 이름을 BigVM-s1.disk로 바꾼 다음 비어있는 새 BigVM.disk를 만듭니다. VM이 실행 중이면 모든 읽기 요청이 BigVM.disk를 통과합니다. 해당 파일에 VM에서 원하는 디스크 부분에 대한 항목이 없으면 BigVM-s1.disk의 데이터가 반환됩니다. 쓰기시 데이터는 BigVM-s1.disk 대신 BigVM.disk에 기록됩니다. 나중에 같은 섹터를 읽으면 BigVM-s1.disk에 포함 된 원래 스냅 샷 대신 BigVM.disk의 데이터가 반환됩니다. BigVM-s1.disk에는 스냅 샷 시점의 VM 하드 디스크 상태가 포함되며 BigVM.disk에는 해당 스냅 샷 이후 디스크에 대한 모든 차이점이 포함됩니다.

오래된 스냅 샷으로 되 돌리면 어떻게됩니까? VM 소프트웨어는 여전히 BigVM-s1.disk를 가리키는 비어있는 새 BigVM.disk로 BigVM.disk의 컨텐츠를 버리고 다시 시작합니다.


답변

전체 가상 머신 디스크가 아니라 스냅 샷 시점에서 변경된 파일의 차이 만 기록합니다. 바이너리 수준에서 차이가 나고 가상 머신의 다른 세부 사항을 알고있는보다 정교한 버전을 제외하고는 유닉스 diff 및 패치와 같습니다.


답변

최소한 VMware 스냅 샷에서 발생하는 일은 스냅 샷이 기본적으로 VMX에 신호를 보내 디스크 쓰기 및 머신 상태에 대한 새로운 체크 포인트를 시작한다는 신호입니다. VM의 전원이 켜져 있는지 또는 켜져 있는지에 따라 스냅 샷을 복원하면 해당 체크 포인트 이후에 발생한 모든 내용을 간단히 처리 할 수 ​​있습니다. 그렇지 않으면 모든 VM의 디스크 섹터가 쓰기시 ​​복사가됩니다. 즉, 핫 스냅 샷 복원을 수행 할 때 스냅 샷을 만든 이후 변경된 섹터 만 다시 작성하면됩니다. 이것이 더 빠른 이유입니다.


답변

VMware 스냅 샷 및 해당 내부 작업은 http://www.pcclm.com/2012/02/virtual-machine-snapshots-in-vmware.html에서 가장 잘 설명됩니다 .


답변