온프레미스 서버를 클라우드로!
VirtualBox OVA 이미지를 AMI로 변환하기

안녕하세요. 오늘은 온프레미스 환경에서 운영하던 가상 머신(VM)을 AWS EC2로 그대로 옮겨오는 마이그레이션(Migration) 과정을 정리해 보려 합니다.

‍

보통 로컬 테스트 환경이나 기존 데이터센터에서 VirtualBox, VMware 등을 사용하다가 이를 AWS로 옮겨야 할 때가 있죠? 이때 사용하는 것이 바로 VM Import/Export 기능입니다.

‍

0. 사전 준비물

작업을 시작하기 전, 아래 3가지는 꼭 준비해 주세요.

‍

OVA 이미지를 추출할 PC: VirtualBox가 설치되어 있어야 합니다.

AWS 계정: 당연히 필요하겠죠?

AWS CLI가 설치된 PC: 터미널에서 명령어로 제어해야 합니다. (aws configure로 자격 증명 설정까지 완료된 상태)

‍

1. S3 버킷 생성 (이미지 업로드용)

가장 먼저 로컬에 있는 대용량 VM 이미지를 AWS로 올릴 '저장소'가 필요합니다.

‍

AWS 콘솔에 로그인 후 S3 서비스로 이동합니다.

[버킷 만들기] 버튼을 클릭합니다.

버킷 이름은 식별하기 쉬운 이름(예: mc-svr-image)으로 짓습니다.

이 버킷은 임시 저장소 용도이므로, 퍼블릭 액세스 차단 설정 등은 편의에 맞춰 설정하고 버킷 생성을 완료합니다.

‍

2. VirtualBox에서 OVA 이미지 추출하기

이제 로컬 PC의 VirtualBox에서 운영 중인 서버를 파일로 만들어낼 차례입니다. 화면을 보듯 설명해 드릴게요.

‍

VirtualBox 실행: 마이그레이션 할 가상 머신(VM)은 반드시 전원 꺼짐(Power Off) 상태여야 합니다.

‍

내보내기 메뉴 진입:

상단 메뉴 바에서 [파일(F)] > **[가상 시스템 내보내기(E)...]**를 클릭합니다. (단축키 Ctrl+E)

대상 선택: 목록에서 내보낼 가상 머신을 선택하고 [다음]을 누릅니다.

‍

포맷 설정 (중요!):

형식(Format): 반드시 Open Virtualization Format 1.0 (또는 2.0)을 선택해 주세요. AWS는 OVF/OVA 형식을 지원합니다.

파일: 저장할 경로와 파일명(예: aws-drs-test.ova)을 지정합니다.

MAC 주소 정책: AWS에 올라가면 새로운 네트워크 어댑터를 받게 되므로 **'모든 네트워크 어댑터 MAC 주소 제외'**를 선택하는 것이 깔끔합니다.

내보내기 실행: [다음]을 누르고 설정을 확인한 뒤 [내보내기]를 클릭하면 변환 게이지가 차오르며 .ova 파일이 생성됩니다.

‍

3. AWS 권한 설정 (CLI 작업)

이 단계가 가장 중요합니다! AWS가 내 S3에 있는 파일을 가져다가 AMI로 만들 수 있도록 **vmimport라는 권한(Role)**을 줘야 합니다.

PC에서 메모장이나 코드 에디터를 열고 아래 JSON 파일들을 만들어주세요.

‍

3-1. 신뢰 정책 파일 생성 (trust-policy.json)

AWS의 vmie.amazonaws.com 서비스가 내 계정의 역할을 수행할 수 있게 허락하는 내용입니다.

‍

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "vmie.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "vmimport" } } } ] }

‍

3-2. 역할(Role) 생성 명령어 실행

터미널(CMD)을 열고 위에서 만든 파일을 이용해 역할을 만듭니다. (파일 경로는 본인 환경에 맞게 수정하세요)

‍

aws iam create-role --role-name vmimport --assume-role-policy-document "file://D:vmimporttrust-policy.json"

‍

3-3. 인라인 정책 파일 생성 (role-policy.json)

이제 vmimport 역할이 S3에서 파일을 읽고, EC2 스냅샷을 만들 수 있는 구체적인 권한을 정의합니다. Resource 부분의 버킷 이름(mc-svr-image)은 아까 1번 단계에서 만든 본인의 버킷 이름으로 바꿔야 합니다.

‍

{ "Version":"2012-10-17", "Statement":[ { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::mc-svr-image", "arn:aws:s3:::mc-svr-image/*" ] }, { "Effect": "Allow", "Action": [ "ec2:ModifySnapshotAttribute", "ec2:CopySnapshot", "ec2:RegisterImage", "ec2:Describe*" ], "Resource": "*" } ] }

‍

3-4. 역할에 정책 연결

작성한 정책을 방금 만든 역할에 붙여줍니다.

‍

aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document "file://C:importrole-policy.json"

‍

4. 이미지 업로드 및 변환 수행

이제 모든 준비가 끝났습니다. 실제로 파일을 올리고 변환해 봅시다.

‍

4-1. S3로 OVA 파일 업로드

AWS CLI를 이용해 로컬에 있는 OVA 파일을 S3 버킷으로 올립니다. (파일 크기에 따라 시간이 좀 걸립니다.)

‍

aws s3 cp D:임시aws-drs-test.ova s3://mc-svr-image/

‍

4-2. 컨테이너 정의 파일 생성 (containers.json)

AWS에게 "어떤 버킷에 있는 무슨 파일을 변환할지" 알려주는 명세서입니다.

‍

[ { "Description": "My Test Linux Server OVA", "Format": "ova", "UserBucket": { "S3Bucket": "mc-svr-image", "S3Key": "aws-drs-test.ova" } } ]

‍

4-3. 변환 작업 시작 (Import Image)

드디어 변환 명령을 날립니다!

‍

aws ec2 import-image --description "My Test Linux Server OVA" --disk-containers "file://D:vmimportcontainers.json"

‍

Tip: 라이선스 관련 주의사항
Windows Server: 기본적으로 AWS 라이선스로 전환됩니다.
Linux / Windows Client: 기본적으로 BYOL (Bring Your Own License) 모델이 적용됩니다. 기존 라이선스를 그대로 쓴다는 의미니 참고하세요.

‍

5. 진행 상황 확인 및 완료

변환은 금방 끝나지 않습니다. 진행 상황이 궁금하다면 아래 명령어로 확인해 보세요. ImportTaskId는 4-3 단계 명령어를 실행했을 때 출력된 값(예: import-ami-xxxx)을 넣으시면 됩니다.

‍

aws ec2 describe-import-image-tasks --import-task-ids import-ami-0c05de569a44631df

‍

상태 메시지(Status) 변화 과정:

   active / pending: 작업 대기 중

   converting: 변환 진행 중 (오래 걸림)

   completed: 완료!

‍

완료(completed) 상태가 뜨면, 출력 결과에 **ImageId (ami-xxxxxxxx)**가 함께 표시됩니다. 이게 바로 우리가 만든 AMI ID입니다!

‍

6. 결과 확인 및 인스턴스 생성

이제 AWS 콘솔로 돌아가서 확인해 볼까요?

‍

EC2 콘솔 > 좌측 메뉴의 **[AMI]**를 클릭합니다.

방금 생성된 AMI가 리스트에 보일 겁니다. (상태가 Available인지 확인하세요.)

해당 AMI를 선택하고 [인스턴스 시작(Launch Instance)] 버튼을 누릅니다.

이후 과정은 일반적인 EC2 생성과 동일합니다. 인스턴스 유형(t2.micro 등)과 키 페어를 선택하고 서버를 띄우면 끝!

마치며

과정이 조금 복잡해 보일 수 있지만, 핵심은 **"VirtualBox에서 OVA로 굽고 -> S3에 올리고 -> CLI로 변환 명령을 내린다"**입니다. 이 과정을 통해 로컬에서 쓰던 환경 그대로 클라우드에서 서비스를 확장해 보세요.

  • 사전 준비물

  • S3 버킷 생성 (이미지 업로드용)

  • VirtualBox에서 OVA 이미지 추출하기

  • AWS 권한 설정 (CLI 작업)

  • 이미지 업로드 및 변환 수행

  • 진행 상황 확인 및 완료

  • 결과 확인 및 인스턴스 생성

관련 키워드
클라우드
관련 키워드
클라우드
관련 콘텐츠