IBM Cloud VPC 의 Windows 마이그레이션 시 고려 사항: 드라이버, 라이선스 및 준비 사항
IBM Cloud VPC 의 Windows 마이그레이션 시 고려 사항( VirtIO 드라이버 주입, sysprep 준비, 라이선스 요구 사항 등)을 검토하십시오.
운전자 과제
VMware 환경에서 Windows는 VMware 반가상화 드라이버(네트워크의 경우 vmxnet3, 스토리지의 경우 pvscsi 등)를 로드하여 특정 하드웨어 식별자에 바인딩합니다. 디스크를 VPC로 옮기면 하드웨어가 변경됩니다:
- 네트워크: VMware vmxnet3 → 가상 I/O ( VirtIO ) 네트워크 어댑터
- 스토리지(부팅): VMware PVSCSI → VirtIO SCSI 어댑터
- 스토리지(데이터): VMware PVSCSI → VirtIO 블록 어댑터
Windows 부팅 시 부팅 스토리지 컨트롤러의 하드웨어 ID가 다른 경우 부팅에 실패합니다(INACCESSIBLE_BOOT_DEVICE 블루 스크린).
해법 A: Sysprep 방식
Microsoft의 sysprep 유틸리티는 Windows 설치를 '일반화'하여 처음 부팅하는 상태로 초기화합니다. 이것:
- 드라이버 바인딩 해제
- Windows 보안 식별자(SID)를 재설정합니다
- 컴퓨터 관련 정보를 제거합니다
- 이미지 재배포를 위한 준비
sysprep 에 대해 다음 프로세스를 완료합니다:
-
VMware 에서 호스팅하는 동안 Windows 가상 머신에 VirtIO 드라이버를 설치합니다:
- RHEL 가상 서버 인스턴스(
/usr/share/virtio-win)에서 virtio-win ISO 파일을 다운로드합니다. - ISO를 마운트하고
virtio-win-gt-x64.exe및virtio-win-guest-tools.exe을 실행합니다. - OS 및 복구 파티션용 드라이버를 모두 설치합니다.
- RHEL 가상 서버 인스턴스(
-
Sysprep을 실행합니다:
C:\Windows\System32\Sysprep\sysprep.exe /generalize /oobe /shutdown -
내보내기 및 마이그레이션 방법 중 하나를 사용하여 마이그레이션( vCenter 전용인 VDDK 직접 추출 제외)을 수행합니다.
-
VPC에서 처음 부팅합니다:
- Windows에서 미니 설정 마법사 실행(OOBE)
- 새 하드웨어를 감지하고 VirtIO 드라이버를 로드합니다
- 제품 키를 다시 입력해야 할 수 있습니다
- 도메인에 다시 가입해야 할 수 있습니다
장점은 다음과 같습니다.
- 잘 문서화된 Microsoft 프로세스
- Windows 배포에 안정적으로 작동
단점은 다음과 같습니다.
- 머신 ID 재설정(도메인 조인 서버의 경우 문제)
- Windows 재활성화를 트리거할 수 있습니다
- 애플리케이션별 문제(일부 앱은 sysprep을 제대로 처리하지 못함)
- 첫 부팅 시 OOBE 완료 필요
설계 결정: 템플릿 기반 배포 또는 ID 재설정이 허용되는 개발 또는 테스트 가상 머신으로 마이그레이션할 때 sysprep을 사용하세요. 복잡한 앱 종속성이 있는 프로덕션 도메인 조인 서버는 사용하지 마세요.
해법 B: virt-v2v 드라이버 주입
Libguestfs virt-v2v 도구는 sysprep을 실행하지 않고도 VirtIO 드라이버를 Windows 설치에 삽입할 수 있습니다. 제공하는 사항은 다음과 같습니다.
- Windows 파일 시스템을 마운트합니다(Windows 부팅 없이)
- VirtIO 드라이버를 드라이버 스토어에 삽입합니다
- Windows에서 이러한 드라이버를 강제로 로드하도록 레지스트리를 수정합니다
- 머신 ID, 도메인 멤버십 및 애플리케이션 상태 유지
전제조건:
- 가상 머신이 깨끗하게 종료되어야 합니다(충돌이 발생하지 않고 강제 종료되지 않아야 함)
- Windows 버전이 지원되어야 합니다(Server 2008 R2 ~ 2025, Windows 7 ~ 11)
- Virtio-win 드라이버 패키지(RHEL 시스템에서 사용 가능:
/usr/share/virtio-win)
다음은 virt-v2v 드라이버 인젝션 프로세스입니다:
-
Windows 부팅 및 복구 파티션에 VirtIO 드라이버 설치(sysprep 접근 방식과 동일)
-
Windows 가상 머신을 깔끔하게 종료
-
이전 방법 중 하나를 사용하여 디스크를 작업자 가상 서버 인스턴스로 내보내거나 이전하십시오.
-
실행 virt-v2v:
virt-v2v -i disk windows-vm.img -o disk -os /target --block-driver virtio-scsi매개변수:
-i disk: 입력은 디스크 이미지 파일입니다-o disk -os /target: 디렉토리로 출력--block-driver virtio-scsi: 첫 번째 디스크에 SCSI 드라이버 사용(VPC 부팅 볼륨에 필요)
-
디바이스에 직접 쓰는 경우:
ln -fs /dev/vdb /target/windows-vm-sda virt-v2v -i disk windows-vm.img -o disk -os /target --block-driver virtio-scsi
장점 virt-v2v:
- 머신 ID 유지(재활성화, 재도메인 조인 없음)
- 첫 부팅 설정 마법사 없음
- 애플리케이션 상태 그대로 유지
- 프로덕션 서버에서 작동
단점은 다음과 같습니다.
- RHEL/ Ubuntu 하이브리드 설정 필요
- Sysprep보다 더 복잡한
- 클린 종료가 필요합니다(충돌/강제 종료된 가상 머신을 처리하지 않음)
디자인 결정: ID 보존이 중요한 프로덕션 Windows 서버에는 virt-v2v 을 사용하세요. 더 깔끔한 마이그레이션을 위해 추가 도구의 복잡성을 감수할 수 있습니다.
RHEL/ Ubuntu 의 과제
중요 사항: VPC Windows 가상 머신의 경우 ‘ --block-driver virtio-scsi ’ 옵션이 필수입니다(부팅 디스크는 VirtIO 블록이 아닌 Virtual I/O( VirtIO ) SCSI를 사용함). 그러나:
- RHEL virt-v2v 지원하지 않음
--block-driver virtio-scsi - Ubuntu virt-v2v 지원
--block-driver virtio-scsi - RHEL 라이브러리 게스트에는 다음 위치의 가상 윈 드라이버가 포함됩니다
/usr/share/virtio-win - Ubuntu libguestfs에는 가상 윈 드라이버가 포함되지 않습니다
임시 해결책
RHEL/ Ubuntu 문제에 대한 두 가지 해결 방법이 있습니다.
옵션 1: 다음에서 libguestfs 빌드하기 Ubuntu
첫 번째 옵션은 다음 명령을 실행하여 Ubuntu 에서 libguestfs 을 빌드하는 것입니다.
# On Ubuntu worker virtual server instance
apt-get install libguestfs-tools
# Copy virtio-win from a RHEL system
# On RHEL: tar czf virtio-win.tar.gz /usr/share/virtio-win
# Transfer to Ubuntu and extract:
tar xzf virtio-win.tar.gz -C /usr/share/
# Now virt-v2v on Ubuntu has both SCSI support and drivers
virt-v2v -i disk windows.img -o disk -os /target --block-driver virtio-scsi
옵션 2: 2단계 전환
두 번째 옵션은 다음 명령을 사용하여 2단계 변환을 수행하는 것입니다.
# On RHEL worker (has drivers, no SCSI support)
virt-v2v -i disk windows.img -o disk -os /tmp
# Transfer to Ubuntu worker
scp /tmp/windows-sda ubuntu-worker:/tmp/
# On Ubuntu worker (has SCSI support)
virt-v2v -i disk /tmp/windows-sda -o disk -os /target --block-driver virtio-scsi
VPC의 Windows 스토리지 드라이버 아키텍처
VPC가 Windows에 스토리지를 제공하는 방식을 이해하면 부팅 문제를 해결하는 데 도움이 됩니다:
첫 번째 볼륨(부팅 디스크):
- VirtIO SCSI 장치로 표시
- 버티오-sci 드라이버 필요
--block-driver virtio-scsi을 필수로 입력해야 하는 이유
후속 볼륨(데이터 디스크):
- VirtIO 블록 장치로 표시
- Virtio-blk 드라이버 필요
- 부팅 디스크와 다른 드라이버
두 드라이버를 모두 설치해야 합니다:
- 실행 중인 OS
- 복구 환경 ( WinRE )
복구 환경 드라이버 설치
Windows 복구 환경( WinRE )은 복구 작업을 수행하는 데 사용되는 별도의 미니 Windows 환경입니다. 가상 I/O( VirtIO ) 드라이버가 없다면, 마이그레이션 후 복구에 이를 사용할 수 없습니다.
위치 찾기 WinRE:
reagentc /info
복구 볼륨을 보고할 수 있지만 실제 WinRE 이미지가 있을 수 있습니다:
C:\Windows\System32\Recovery\winre.wim
에 드라이버 설치 WinRE:
-
마운트 버티오-윈 ISO
-
다음을 통해 WinRE 위치를 확인합니다
reagentc /info -
별도의 볼륨에 있는 경우 임시로 마운트합니다
-
DISM을 사용하여 드라이버를 주입합니다:
dism /mount-wim /wimfile:C:\Windows\System32\Recovery\winre.wim /index:1 /mountdir:C:\mount dism /image:C:\mount /add-driver /driver:E:\viostor\w10\amd64 /recurse dism /image:C:\mount /add-driver /driver:E:\netkvm\w10\amd64 /recurse dism /unmount-wim /mountdir:C:\mount /commit
GPT 파티션 고려 사항:
Windows 디스크가 MBR이 아닌 GPT를 사용하는 경우:
- 대신
list volume및select volume사용list partition - 볼륨 ID 설정은 다릅니다:
- 데이터 볼륨:
set id=ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 - 시스템 볼륨:
set id=c12a7328-f81f-11d2-ba4b-00a0c93ec93b
- 데이터 볼륨:
지원되는 Windows 버전
Red Hat 의 버티오-윈 패키지는 드라이버를 제공합니다:
Windows Server:
- 2008년 R2
- 2012년, 2012년 R2
- 2016년, 2019년, 2022년, 2025년
Windows 클라이언트:
- 7
- 8, 8.1
- 10
- 11
이전 버전(Server 2003, 2008 non-R2, Vista)은 지원되지 않습니다.
다음 표는 Windows용 디자인 결정 매트릭스입니다
| 시나리오 | 권장 접근 방식 |
|---|---|
| 개발/테스트 가상 머신 | Sysprep(간편, ID 재설정 허용) |
| 프로덕션 독립 실행형 서버 | virt-v2v (신원 유지) |
| 도메인 조인 프로덕션 서버 | virt-v2v (도메인 재가입 방지) |
| 템플릿 기반 배포 | Sysprep(템플릿에 적합) |
| 하드웨어 ID에 연결된 라이선스가 있는 서버 | virt-v2v + 면밀한 라이선스 검토 |
| 구형 Windows(2003, 2008 non-R2 ) | 마이그레이션이 지원되지 않음 |