VirtualBox에서 OVA 파일을 가져올 때 E_INVALIDARG(0x80070057) 오류가 발생하는 문제를 만나셨나요? 이 글에서는 오류 코드를 하나하나 디버깅하는 대신, OVA 파일 없이 가상 머신을 수동으로 이전하는 확실한 방법을 소개합니다.
최근 필자도 가상화 작업 중 새로운 문제에 직면했습니다. 리눅스 가상 머신을 다른 호스트에서 사용하기 위해 내보내려던 것이죠. 이론상 VirtualBox에는 이 기능이 이미 포함되어 있습니다. 파일 > 어플라이언스 내보내기(File > Export Appliance) 메뉴를 열고, 원하는 가상 머신을 선택한 뒤, 형식과 MAC 주소 옵션을 설정하고 VirtualBox가 OVA 파일을 생성하도록 하면 됩니다. 그리고 대상 호스트에서 이 어플라이언스를 가져오기만 하면 되는 것이죠.
하지만 실제로 시도해 보니 오류가 발생했습니다. GUI에는 세부 정보도 거의 없이 E_INVALIDARG 0x80070057이라는 메시지만 표시되었습니다. VirtualBox 포럼의 여러 티켓을 살펴보니, 가져오기 실패의 원인은 매우 다양할 수 있었습니다. 잠재적 문제를 하나씩 해결해 나가기보다는, 저는 완전히 다른 방법을 선택했습니다. 바로 OVA 과정을 거치지 않고 가상 머신을 수동으로 가져오는 것입니다. 지금부터 그 방법을 알려드리겠습니다.
OVA는 그저 하나의 압축 파일일 뿐이다
기술적으로 어플라이언스(appliance)란 가상 머신 데이터 전체를 하나의 파일로 깔끔하게 묶어 놓은 것입니다. 그 안에는 가상 디스크(및 스냅샷), 가상 머신 매니페스트 등이 들어 있습니다. 크게 신비로운 것은 없습니다. 가져오기 과정은 단순히 이 파일들의 압축을 풀고, 구성 파일(.vbox)을 파싱하며, 가상 CD 드라이브 경로나 공유 폴더 경로처럼 스스로 해결할 수 없는 오류가 있으면 중단될 뿐입니다.
따라서 우리는 같은 작업을 수동으로 할 수 있습니다.
1단계: 가상 머신 복제(Clone) 생성
복제를 권장하는 이유는 다음과 같습니다. 스냅샷을 사용 중이라면 최신 스냅샷만 복제하여 새 가상 머신의 용량을 줄일 수 있습니다. 또한 새 호스트로 데이터를 복사할 때 고려해야 할 스냅샷 수도 줄어듭니다. 물론 이 단계는 필수는 아닙니다.
최신 상태만 복사하는 것이 좋은 이유는 머신 관리가 단순해지고 전송해야 할 데이터 양이 줄어들기 때문입니다. 네트워크를 통해 내보낼 경우, LAN 환경이라 하더라도 그 차이가 상당할 수 있습니다.
2단계: 가상 머신 폴더 전체를 두 번째 호스트로 복사
VirtualBox 가상 머신 폴더의 구조는 다음과 같습니다. Logs, Snapshots라는 이름의 디렉터리, 하나 이상의 가상 디스크(보통 .vdi 형식), .vbox 확장자를 가진 구성 파일, 그리고 변경 사항이 있다면 .vbox-prev 확장자의 백업 구성 파일로 이루어져 있습니다.
.vbox 파일은 GUI에서 보이는 각종 설정이 선언된 XML 매니페스트입니다. 가상 머신이 실행 중일 때는 이 파일을 편집해서는 안 되지만, 종료 상태의 머신이라면 안전하게 편집할 수 있습니다. 변경 사항은 다음에 해당 머신을 시작할 때 반영됩니다. 예를 들어 Media 항목 아래의 HardDisks 섹션에는 모든 디스크와 스냅샷이 나열되어 있습니다:
...
<HardDisks>
<HardDisk uuid="{dfcda294-6feb-4ef8-8bc8-e67ad57e2cc6}"
location="Kubuntu-24.04.vdi"
format="VDI"
type="Normal">
<HardDisk uuid="{f062fe0b-578c-4461-9a10-8d65d28347ac}"
location="Snapshots/{f062fe0b-578c-4461-9a10-8d65d28347ac}.vdi"
format="VDI">
</HardDisk>
</HardDisk>
</HardDisks>
...
이 선언은 해당 머신이 Kubuntu-24.04.vdi라는 하드 디스크를 사용하며, 여기에 연결된 스냅샷이 두 개 있음을 알려줍니다. 감이 오시죠?
자, 이 데이터 전체, 즉 폴더 전체를 두 번째 호스트로 복사합니다.
3단계: 경로 확인 및 수정
가상 머신을 "가져오기" 전에, 텍스트 편집기로 vbox 파일을 열어 이상한 경로가 있는지 확인해야 합니다. 여기에는 마운트된 ISO 파일, 공유 게스트 경로 등 첫 번째 시스템에 하드코딩되어 있고 두 번째 시스템에는 존재하지 않을 수 있는 모든 항목이 포함됩니다. 이런 오류가 하나라도 있으면 새 가상 머신 추가가 실패합니다. OVA 아카이브를 사용할 때는 이 과정이 불투명하지만, 수동으로 진행하면 모든 내용을 투명하게 보고 제어할 수 있습니다.
예를 들어 두 시스템에서 서로 다른 공유 폴더 경로를 사용한다고 가정해 봅시다. 관련 선언을 찾는 가장 쉬운 방법은 첫 번째 시스템에서 사용했던 특정 경로를 검색하는 것입니다. 내용을 확인해 보면:
<SharedFolders>
<SharedFolder name="SHARED_FOLDER"
hostPath="G:\Virtual Machines\SHARED FOLDER"
writable="true"
autoMount="true"
autoMountPoint="SHPATH"/>
</SharedFolders>
여기서는 G: 드라이브(Windows)에 설정된 경로의 예시를 들었습니다. 하지만 이 경로는 두 번째 시스템에 존재하지 않거나, 다른 드라이브 문자로 설정되어 있을 수 있습니다. 따라서 다음과 같이 수정해야 합니다:
hostPath="P:\Different path\SHARED FOLDER"
두 번째 시스템이 리눅스라면 아예 다른 형태일 수 있습니다:
hostPath="/home/username/Shared-folder"
이렇게 하드코딩된 경로 외에도, 이 기회에 메모리 할당량, CPU 코어 수, 특정 그래픽 어댑터 사용 여부 등 다른 설정들도 조정할 수 있습니다. 다만 한 번에 하나씩 변경하고, 가상 머신을 추가해 보면서 오류가 발생하는지 확인하는 것이 좋습니다.
vbox 파일을 필요에 맞게 수정했다면, 그저 더블클릭하면 됩니다. 기본 설치 상태에서는 Windows와 Linux 모두 이 파일 유형이 VirtualBox 하이퍼바이저와 연결되어 있습니다. XML 구성이 유효하다면 가상 머신이 목록에 표시될 것입니다. 완료입니다!
3단계의 대안: XML 편집이 부담스럽다면
XML 파일을 직접 편집하는 것이 불편하다면, 다음 방법을 사용할 수 있습니다:
- 가상 머신을 복제합니다.
- VirtualBox GUI에서 해당 머신의 설정을 엽니다. ISO 파일, 공유 폴더 등 하드코딩된 경로를 모두 제거합니다.
- 가상 머신을 새 목적지로 복사합니다.
- vbox 파일을 더블클릭하여 하이퍼바이저에 추가합니다.
- 다시 설정을 열고, 두 번째 장치에 맞게 새 경로를 추가합니다.
- 가상 머신을 시작하고 작업을 진행합니다.
주의사항 및 라이선스 제약
위 과정에서 필자가 복사/마이그레이션에 리눅스 가상 머신을 사용한 이유를 눈치채셨을 겁니다. 정확히는 Kubuntu인데요, 이 배포판은 시스템 수나 "라이선스" 수에 제한이 전혀 없기 때문입니다.
반면 Windows 같은 독점 운영체제로 이 작업을 하면, 하드웨어 변경으로 인해 라이선스가 비활성화되거나 새 라이선스를 구매해야 할 수 있습니다. 또한 특정 호스트나 단일 실행 인스턴스에 라이선스가 묶여 있는 (유료) 프로그램을 사용 중이라면, 가상 머신의 새 복사본 생성이 해당 소프트웨어의 라이선스나 이용 약관에 문제를 일으킬 수 있으므로 반드시 고려해야 합니다.
마무리
자동화되어 잘 포장된 절차가 작동하지 않는다면, 수동 방법이 해답이 될 수 있습니다. 필자는 폴더 복사 + XML 변경 방식을 여러 가상 머신으로, Windows와 Linux 간 양방향으로 여러 차례 테스트했으며 결과는 매우 훌륭했습니다. 물론 설정을 한두 가지 조정해야 할 수 있지만, 그 후에는 순조롭게 진행됩니다. 물론 소프트웨어 라이선스 제한 범위 내에서 말입니다.
이 튜토리얼이 도움이 되기를 바랍니다. 특정 오류 코드를 디버깅하는 일은 지루할 수 있습니다. 거의 모든 가져오기 오류가 동일한 코드를 반환하는 반면, 실제 원인과 해결책은 무수히 많기 때문입니다. 수동 복사 절차는 견고하지만, 주로 구성 파일 속 하드코딩된 경로 등 몇 가지를 고려해야 합니다. 이러한 경로는 복사 전후로 수정하여 새 가상 머신이 매끄럽게 추가되도록 할 수 있습니다. 즐거운 가상화 되세요!