답변:
스냅 샷을 생성 할 때 초기 가상 디스크 이미지의 모든 변경 사항은 실제로 이미지 자체에 적용되는 것이 아니라 새로운 (스냅 샷) 디스크 파일에 기록됩니다. 이 조치는 전체 가상 디스크 이미지를 복사 할 필요가 없기 때문에 쓰기 속도로 복사 작업을 수행하기 때문에 가상 디스크 이미지를 복사 할 필요가 없으므로 매우 빠릅니다 . 스냅 샷 이미지는 원래 가상 디스크 이미지 (스냅 샷을 생성 한 순간 그대로 유지됨)에서 점점 더 많은 데이터를 변경함에 따라 커집니다. 원본 이미지보다 훨씬 작을 수 있지만 최악의 경우 정확히 동일한 크기입니다 (모든 블록이 변경된 경우).
이 새 스냅 샷 이미지로 수행 할 수있는 작업은 두 가지입니다.
위에서 설명한 모든 절차는 여러 스냅 샷에도 적용됩니다. 이 경우 원본 이미지는 하나의 스냅 샷일 수 있으며 다음 스냅 샷은 해당 (첫 번째) 스냅 샷의 블록을 참조 할 수 있습니다. 이렇게하면 쉽게 삭제하거나 병합 할 수있는 많은 스냅 샷을 만들 수 있습니다.
스냅 샷을 사용하면 가상화 소프트웨어가 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의 컨텐츠를 버리고 다시 시작합니다.
VMware 스냅 샷 및 해당 내부 작업은 http://www.pcclm.com/2012/02/virtual-machine-snapshots-in-vmware.html에서 가장 잘 설명됩니다 .