체크포인트는 게스트의 일부를 되돌리고 다른 모든 시스템은 있던 자리에 그대로 둔다. 게스트를 떠난 것, 즉 배달된 메시지, 호스트로 복사된 파일, 웹사이트가 받아들인 계정 작업은 그것을 받은 시스템에 속하며 체크포인트에 속하지 않는다. 롤백에는 정해진 국소 범위가 있고, 그것을 삭제라고 부르면 복구 계획이 거짓 진술이 된다. 아래 표는 복원이 실제로 어디까지 닿는지에 대한 점검 목록이다.

데스크톱은 돌아오지만 원격 세션은 아니다

흔한 불만은 사후에 찾아온다. 가상 머신은 지난주 상태로 부팅되고 브라우저 기록은 사라졌는데, 사용자가 로그인했던 서비스는 여전히 세션을 활성으로 나열한다. 아무것도 고장 나지 않았다. 두 시스템은 같은 트랜잭션에 있었던 적이 없다.

Where the effect landedWho owns undoing itHow you verify it is gone
Guest virtual diskThe hypervisor, through the checkpoint you restoreThe disk state matches the checkpoint's timestamp
Guest memoryOnly a checkpoint type that saved memoryThe guest resumes or cold-boots, as that type dictates
Host share or clipboardThe owner of that host pathThe copied file is absent at its destination
Remote account or sessionThe service that accepted the actionThe session list shows nothing active for that account
Mail or message queueThe mail system that delivered itThe message is gone from the recipient's mailbox, not from the guest

그 불일치가 교훈이다. 체크포인트는 하이퍼바이저가 추적하는 것, 곧 게스트의 가상 하드웨어와 종류에 따라 그 메모리를 복원한다. 웹 애플리케이션의 세션 테이블, 메일 서버의 전달 대기열, 동료의 다운로드 폴더는 추적하지 않는다. 복원 전에 종류를 읽어야 한다. 종류가 복원이 애초에 무엇을 되찾을 수 있는지를 결정하기 때문이다.

하이퍼바이저가 실제로 저장한 것

Microsoft의 Hyper-V 문서는 가상 디스크와 함께 메모리도 캡처하는 표준 체크포인트와, 데이터 일관성 메커니즘을 사용하고 메모리를 건너뛰는 운영 체크포인트를 구분한다. 표준 체크포인트는 게스트가 실행하던 명령에서 재개하고, 운영 체크포인트는 대신 일관된 디스크에서 부팅한다. 이 차이가 복원이 실행 중인 프로세스를 돌려주는지 아니면 깨끗한 시작을 돌려주는지를 결정한다. 한 하이퍼바이저의 동작을 다른 하이퍼바이저로 옮기지 마라. 용어와 일관성 메커니즘이 제품마다 다르다.

Microsoft는 또한 체크포인트가 백업이 아니라고 경고하며, 그 경고는 중요하다. 한 볼륨의 체크포인트 사슬은 그 볼륨의 운명을 공유하므로, 잃어버린 호스트가 아니라 나쁜 변경으로부터 보호한다.

게스트 디스크 밖에 사는 파일

공유 폴더는 게스트에게 제시되는 호스트의 파일 시스템이며, 게스트를 되돌린다고 그것이 되돌아가지 않는다. 사용자가 게스트 안에서 파일을 내려받아 공유 경로로 밖에 복사했다면, 그 두 번째 사본은 고유한 수명 주기와 고유한 소유자를 가진다. 게스트를 복원하면 첫 번째 사본은 사라지고 두 번째는 놓인 자리에 그대로 남는다.

롤백을 약속하기 전에 각 경로의 소유자가 누구인지 물어라. 호스트 공유, 클립보드 전송, 클라우드 디스크 업로드는 세 개의 목적지이며, 하이퍼바이저의 저장소 옆에 있을 수 있는 것은 첫 번째뿐이다.

사본을 정말로 제거해야 한다면 목적지에서 제거하고 그 단계를 따로 기록하라. 스냅샷만 나열한 복구 계획은 사본이 발견되기 전까지 아무도 알아차리지 못하는 방식으로 불완전하다. 같은 주의가 게스트가 실행되는 동안 호스트가 쓴 로그에도 적용된다.

하이퍼바이저가 본 적 없는 계정

서비스가 게스트로부터 받아들인 모든 것은 서비스의 기록이지 게스트의 기록이 아니다. 하이퍼바이저는 그 트랜잭션을 본 적이 없으므로 되돌릴 수 없다. 비밀번호 변경, 구매, 게시된 메시지, API 호출은 모두 그것을 처리한 시스템에 남는다. 디스크 이미지 복원은 그 시스템에 닿지 않는다.

브라우저 상태가 불일치를 구체화한다. 복원된 게스트는 그 사이 세션을 교체한 서비스의 옛 쿠키를 보유할 수 있어, 사용자는 로그인한 것처럼 보이지만 조용히 거부된다. 또는 로그아웃한 것처럼 보이는데 서비스는 여전히 세션을 유효하다고 여긴다. 서비스에서 세션을 폐기하는 것만이 그것을 끝내는 작업이다.

복원이 되돌릴 수 없는 것

체크포인트는 승인된 시험이나 범위를 이해한 구성 실험에 유용하다. 그것은 국소 상태에 대한 국소적 되돌리기이며, 들리는 것보다 좁은 약속이고, 호스트나 하이퍼바이저 또는 어떤 외부 시스템이 깨끗하게 남았다는 증거가 아니다. VPN은 패킷이 지나는 경로를 바꾼다. 게스트 안의 소프트웨어를 실행해도 안전한 것으로 만들지는 않는다. 두 주장은 별개이고 그중 하나만 터널에 관한 것이다.

$cp = Get-VMSnapshot -VMName lab-desktop -Name baseline
Get-VMHardDiskDrive -VMSnapshot $cp | Select-Object ControllerType, ControllerNumber, ControllerLocation, Path

첫 줄은 체크포인트를 객체로 해석하고, 둘째 줄은 그것이 포함하는 디스크를 나열한다. 이는 범위 질문에 기억이 아니라 증거로 답한다. 노출된 비밀은 그것을 소유한 서비스에서 교체하고 폐기하라. 알려진 악성 코드가 관련된 경우에는 스냅샷이 실행을 안전하게 만든다고 가정하지 말고 승인된 조사 환경과 조직의 대응 절차를 사용하라.

복원 전에 세 가지를 적어라. 어떤 게스트 상태를 되찾는지, 어떤 외부 시스템이 아직 그 효과를 보유하는지, 그 뒤 어떤 시점을 신뢰할지. 그 계획은 다시 익숙해 보이는 기계보다 강한 주장이다. 다음 복원이 같은 목록에서 시작하도록 티켓과 함께 보관하라.

관련 글