Hyper-V VMs를 내보내고 다른 호스트로 전송해야합니까? 개발 워크스테이션에서 VM을 프로덕션 Hyper-V 호스트로 내보내는 것은 어떤가요? 그렇다면, 당신은 옳은 장소에 왔습니다!
이 문서에서는 Hyper-V 관리자 및 PowerShell을 사용하여 가상 머신을 내보내고 가져오는 방법을 배웁니다. 준비되셨나요? 시작해봅시다!
전제 조건
이 문서는 튜토리얼입니다. 단계별로 따라하려면 다음이 필요합니다:
- PowerShell 7 또는 Windows PowerShell 5.1 – 이 튜토리얼은 PowerShell 7에 초점을 맞추지만, 명령은 Windows PowerShell 5.1에서도 작동합니다.
- A Windows Server with Hyper-V enabled – This tutorial is based on the insider preview released March 2021, but any Windows Server from 2012R2 onward will suffice.
- A virtual machine guest – This tutorial is using an Alpine Linux guest because it’s light on resources. You can use any guest Operating System you like.
- A local Windows user account in the local administrators group on the Hyper-V host.
Hyper-V VM 내보내기 단계
명령줄을 좋아하지 않거나 디스크에 저장할 VM이 하나뿐인 경우 Hyper-V 관리자는 좋은 선택입니다. Hyper-V 호스트에 있고 실행 중인 가상 머신이 있다고 가정합니다:
1. Windows 검색 메뉴에서 “hyper”를 입력합니다. Hyper-V 관리자 콘솔이 표시됩니다. 그렇다면 클릭하여 엽니다.
2. 내보낼 VM을 찾고 마우스 오른쪽 버튼을 클릭한 다음 내보내기를 클릭합니다.

3. 다음으로 VM과 구성을 저장할 폴더를 선택하고 내보내기를 클릭합니다.

저장할 위치는 내보낸 가상 머신의 충분한 저장 공간이 있어야 합니다. 이는 다양할 수 있습니다. 기억하세요, 디스크에 60GB가 할당되었다고 해도, 가상 머신 디스크가 60GB로 성장한 것은 아닙니다.
Hyper-V가 내보내기 프로세스를 시작하면, Hyper-V 관리자 창에서 내보내기 상태를 확인할 수 있습니다.

4. 이제 필요한 모든 파일이 있는지 확인하세요. 세 개의 하위 폴더가 보일 것입니다. 이 하위 폴더에는 가상 머신 시작에 필요한 모든 파일이 포함되어 있습니다. 스냅샷, 가상 하드 디스크, 가상 머신입니다.

- 스냅샷 폴더에는 가상 머신의 스냅샷 정보가 포함되어 있습니다. 만약 가상 머신에 스냅샷이 없다면, 이 폴더는 비어 있을 수도 있습니다. 이 폴더에서는 VMCX, VMRS, 그리고 VMGS 파일 확장자를 볼 수 있습니다. VMCX 이진 파일은 내보낸 가상 머신에 대한 구성 정보를 포함합니다. VMRS 이진 파일은 가상 머신의 실행 상태 정보를 포함합니다. 이 파일이 없으면 가상 머신을 부팅할 수 없습니다. 마지막으로 VMGS 파일이 있습니다. 이 파일이 어떤 용도인지는 잘 모릅니다. 알고 계시다면 댓글을 남겨주세요.
Hyper-V에 이전 경험이 있다면, 파일 확장자에 대해 뭔가 다른 점을 눈치챘을 것입니다. Windows Server 2016부터 Hyper-V는 구성 정보를 위해 더 이상 XML 파일을 사용하지 않고 이진 파일로 전환되었습니다. 새로운 파일 확장자에 대해 더 읽어보세요.
한 개 이상의 체크포인트가 있는 경우 VM에 대해 여러 VMCX, VMRS 및 VMGS 파일을 볼 수 있습니다.

- 가상 하드 디스크 폴더에는 VM의 모든 하드 디스크 이미지 파일 또는 *.vhdx 파일이 포함되어 있습니다. AVHDX 또는 자동 가상 하드 디스크 파일은 가상 머신 체크포인트에 사용되는 차이 디스크입니다. 가상 머신에 여러 체크포인트가 있는 경우 여러 AVHDX 파일을 볼 수 있습니다.

- 가상 머신 폴더에는 VM을 부팅하는 데 사용되는 VM 구성 파일이 포함되어 있습니다. 스냅샷 폴더와 마찬가지로 VMCX, VMRS 및 VMGS 이진 파일도 여기에서 볼 수 있습니다.

세 폴더가 모두 존재하고 파일이 포함되어 있다면 내보내기가 성공한 것입니다.
VM 내보내기에 PowerShell 사용하기
명령줄을 좋아하거나 많은 VM을 내보내야 하는 경우 PowerShell을 사용하여 VM을 내보내는 것도 좋은 옵션입니다. PowerShell을 사용하여 Hyper-V를 내보내려면 Export-VM
cmdlet을 사용하십시오. 이를 위해서는 Hyper-V 호스트에서 작업하고 VM이 오프라인인 것으로 가정합니다.
1. PowerShell 콘솔을 엽니다.
2. VM 인벤토리 및 내보낼 VM의 이름을 얻기 위해 Hyper-V 호스트에 쿼리합니다. 이 튜토리얼에서는 Alpine Linux 01
이라는 VM을 내보냅니다.

Export-VM
command3. VM을 내보낼 폴더를 만듭니다. 이 튜토리얼에서는 VM을 C:\Export_VM에 내보냅니다.
4. 이제 Export-VM
cmdlet을 사용하여 가상 머신을 내보냅니다. Name
매개 변수에 가상 머신의 이름을 제공하고, 저장할 폴더의 Path
및 PassThru
매개 변수를 지정합니다.
선택적으로
PassThru
매개 변수를 사용하여 내보낸 VM 개체를 반환할 수 있습니다. 그렇지 않으면Export-VM
은 출력을 반환하지 않습니다.

VM이 실행 중인 경우,
Export-VM
은 자동으로 메모리를 저장하지 않습니다. VM에서 실행 중인 메모리 내용을 저장하려면-CaptureLiveState CaptureSavedState
매개 변수를Export-VM
과 함께 사용하십시오. 메모리 저장 기술에 대해 자세히 알아보기.
5. 이제 Hyper-V에서 VM을 제거합니다. 걱정하지 마세요! 이미 저장되어 있습니다!
Hyper-V 관리자를 사용하여 VM 가져오기
VM을 내보냈으니 재앙이 발생하고 VM이 사라진 상황입니다. 걱정하지 마세요! 이미 디스크에 내보냈습니다. 이제 다시 Hyper-V 호스트에 있는 것으로 가정하고 다음을 수행합니다:
1. Hyper-V 관리자를 엽니다.
2. Hyper-V 관리자 창 오른쪽에 위치한 가상 머신 가져오기 메뉴 항목을 클릭합니다. 가상 머신 가져오기 마법사가 표시됩니다. 다음을 클릭합니다.

3. 다음으로, 가져오고자 하는 내보낸 가상 머신의 경로를 입력하고 다음을 클릭하세요. 이 튜토리얼에서 VM은 C:\Export_VM\Alpine Linux 01에 저장되어 있습니다.
PowerShell로 가져올 때와 달리, 마법사가 VM의 VMCX 파일을 자동으로 찾아줍니다.

4. Hyper-V가 폴더 내의 VM 구성 파일을 찾으면(이 예제에서는 C:\Exported_VM\Alpine Linux 01\Virtual Machines\), Hyper-V는 가져올 가상 머신을 선택하라고 요청합니다. 가져올 VM을 선택하고 다음을 클릭하세요.

5. 다음으로, 수행할 가져오기 유형을 선택하세요. 먼저, 세부 옵션을 자세히 살펴보겠습니다.
‘가상 머신을 현 위치에 등록(기존 고유 ID 사용)’ 옵션을 선택하면, 내보낸 VM 파일이 최종 위치에 있는 것으로 가정하고, VM을 새 폴더로 이동시키지 않습니다. 내보낸 VM 파일은 가상 머신의 실행 상태가 됩니다. UID는 변경되지 않습니다.
UID는 Hyper-V가 가상 머신을 식별하는 데 사용하는 값입니다. 만약 Hyper-V가 현재 등록된 동일한 UID를 감지하면 오류가 발생합니다.
가상 머신을 복원할 때, 위치를 선택하거나 내보낸 가상 머신 파일을 복사하기 위해 기본 Hyper-V 위치를 사용할 수 있습니다.
가상 머신을 복사하면 내보낸 VM을 복원하는 것과 유사하지만, 새로운 고유 ID (UID)가 생성됩니다. 새로운 UID를 사용하면 동일한 가상 머신을 동일한 또는 다른 Hyper-V 호스트에 여러 번 배포할 수 있습니다.
표시용으로 가져오기 유형을 선택하겠습니다. 가상 머신을 복사합니다. VM을 복사하면 새로운 고유 ID(UID)가 생성됩니다. 각 Hyper-V VM은 UID로 식별됩니다. 일단은 이 옵션이 적당하므로 다음을 클릭하세요.

6. 복사 옵션을 선택했으므로 가상 머신 파일이 저장될 위치를 변경할 수 있습니다. 이 튜토리얼에서는 기본 설정을 사용하기 위해 다음을 클릭하세요.

7. 마지막으로, VM의 위치인 스토리지 폴더를 선택하세요. 스토리지 폴더는 VHDX 및 AVHDX 파일이 저장되는 곳입니다. 이 튜토리얼에서는 기본 위치를 사용하기 위해 다음을 클릭하세요.

8. 요약 페이지를 검토하고 준비가 되면 완료를 클릭하여 가져오기 작업을 시작하세요.

Hyper-V가 가져오기를 완료하면 Hyper-V 관리자 창으로 돌아가고, 아래와 같이 가져온 VM이 표시됩니다.

PowerShell을 사용하여 VM 가져오기
Hyper-V 관리자를 통한 VM 가져오기가 원하는 방법이 아니라면 문제 없습니다. PowerShell을 사용하세요! PowerShell을 사용하여 VM을 가져오려면 Import-VM cmdlet을 사용해야 합니다. 다음 시나리오를 고려해 보세요:
당신은 VM을 내보냈고, 그것은 C:\Exported_VM\에 위치해 있습니다. 그리고 이 VM이 실수로 삭제되었거나 다른 Hyper-V 호스트에서 필요한 경우는 어떻게 해야 할까요? 이미 내보낸 VM이므로 사실상 백업되어 있으며 쉽게 가져올 수 있으므로 VM을 복원할 수 있습니다.
Export-VM
이 VM을 디스크에 저장하면 Import-VM
cmdlet은 그 반대로 작동합니다. 즉, VM을 디스크에서 읽고 Hyper-V로 가져옵니다.
1. PowerShell 콘솔을 이미 열어놓고 VM을 내보낸 디렉토리(C:\Exported_VM)에 있는 경우 다음 코드를 사용하여 Get-ChildItem
cmdlet을 실행하고 Recurse
스위치를 사용하여 모든 파일을 나열하고 *.vmcx 확장자를 가진 파일 이름을 메모해두세요.
스냅숏이 있는지 여부에 따라 여러 개의 .vmcx 파일이 표시될 수 있습니다. VM을 부팅하기 위해서는 Virtual Machines 폴더에 있는 VMCX 파일만 필요합니다.
다음과 같은 예시와 유사한 출력이 표시됩니다:

2. 다음으로, 이전 단계에서 얻은 VM의 구성 파일을 지정하기 위해 Import-VM
cmdlet을 Path
매개변수와 함께 사용하세요.
그게 다입니다! VM을 동일한 UID를 사용하여 등록했습니다.

3. 이제 VM을 내보낼 때 .vmcx 파일 이름과 동일한 UID인지 확인하세요. 다음 코드를 사용하여 WMI를 쿼리하여 확인할 수 있습니다:
아래 예시와 유사한 출력을 볼 수 있어야합니다:

위의 예제는 VM 구성 파일에서 직접 가져온 것이며, VM은 원래의 UID를 유지했습니다. 프로덕션 환경에서는 이전 VM이 새 VM으로 오해받지 않도록 새 UID를 생성하는 것이 좋습니다. 이것이 Copy
매개변수가 필요한 이유입니다.
Copy
매개변수를 사용하여 가상 머신을 가져올 경우 원래 위치 (C:\Exported_VM\)에서 파일을 Hyper-V 서버의 구성된 경로로 복사합니다.GenerateNewId
와 함께 사용하면 VM은 새 고유 식별자 (UID)로 동일한 Hyper-V 서버에 여러 번 가져올 수 있습니다.
이번에는 가져온 VM에 이전과 동일한 UID가 포함되어 있지 않습니다. 아래 스크린샷에서 이전 및 새 UID를 볼 수 있습니다:

Hyper-V는 이제 VM을 Hyper-V 관리자를 사용하여 VM을 가져오는 경우에 볼 수있는 기본 경로로 복사하지만 VM에 새 UID를 제공합니다.
다음 단계
이 가이드에서는 PowerShell 및 내장된 Hyper-V 관리자를 사용하여 Hyper-V VM을 내보내고 가져오는 방법을 배웠습니다.
이제 Hyper-V 가상 머신을 내보내고 가져오는 방법을 알았으므로 Hyper-V에서 호스팅되는 Windows Server 가상 머신을 활성화하기 위해 자동 가상 머신 활성화 (AVMA)를 설정해보세요.