VBoxManage (CLI로 VirtualBox 관리)
Vagrant를 통해서 개발 환경에서 VM 구성을 나름 편하게하고 있긴한데, ruby로 매번 스크립트를 작성하는 게 약간은 귀찮기도 하고, 회사의 환경에서는 보안 솔루션의 문제인지 Vagrant와 자꾸 알 수 없는 충돌이 일어나서 커맨드라인에서 간단히 VirtualBox를 제어하기 위해 정리 해 보았다.
참고자료
- https://www.virtualbox.org/manual/ch08.html - VirtualBox 공식 매뉴얼
- https://www.oracle.com/technetwork/articles/servers-storage-admin/manage-vbox-cli-2264359.html - Using Oracle VM VBoxManage
명령어 목록
VM 정보 조회
- VM 목록 조회
VBoxManage list vms
- 구동 중인 VM 목록 조회
VBoxManage list runningvms
- 조회 명령어는 -l 파라미터와 함께 사용하면 상세 정보를 함께 출력한다
VBoxManage list vms
VBoxManage list runningvms
VM 생성하기
- 설치 가능한 OS Type 확인
VBoxManage list ostypes
- 위 명령어의 출력 결과의 id를 VM 생성시 --ostype 파라미터로 활용
- VM 생성하기
- VBoxManage createvm --name VM명
- VM 생성시 필수 파라미터는 --name 뿐, 추가 파라미터는 다음과 같다
- --ostype OS종류 -> list ostypes에서 나온 id
- --register -> VM생성 즉시 등록
- CENTOS7_VM 이라는 이름으로 레드햇(CENTOS도 레드햇) 64비트 VM 생성 및 등록
VBoxManage createvm --name CENTOS7_VM --ostype RedHat_64 --register
- 이 때 생성되는 VM은 비어 있는 VM이다. --name 파라미터만 입력하고 추후 modifyvm 옵션을 통해서도 수정이 가능하다.
VBoxManage list ostypes
- 위 명령어의 출력 결과의 id를 VM 생성시 --ostype 파라미터로 활용
- VBoxManage createvm --name VM명
- VM 생성시 필수 파라미터는 --name 뿐, 추가 파라미터는 다음과 같다
- --ostype OS종류 -> list ostypes에서 나온 id
- --register -> VM생성 즉시 등록
- CENTOS7_VM 이라는 이름으로 레드햇(CENTOS도 레드햇) 64비트 VM 생성 및 등록
VBoxManage createvm --name CENTOS7_VM --ostype RedHat_64 --register
VM 정보 설정하기
- VM정보 출력
VBoxManage showvminfo VM_Name
- VM정보 수정
- VBoxManage modifyvm --cpus CPU숫자 --memory 램(MB) --vram 비디오메모리(MB)
VBoxManage modifyvm CENTOS7_VM --cpus 2 --memory 1024 --vram 16
VBoxManage showvminfo VM_Name
- VBoxManage modifyvm --cpus CPU숫자 --memory 램(MB) --vram 비디오메모리(MB)
VBoxManage modifyvm CENTOS7_VM --cpus 2 --memory 1024 --vram 16
네트워크 아답터 설정하기
- 네트워크 아답터는 8개까지 설정 가능하다
- N번 네트워크 아답터를 설정하기
- VBoxManage modifyvm --nicN 네트워크 타입
- 네트워크 타입 종류
- 자세한 사항은 https://www.virtualbox.org/manual/ch06.html#networkingmodes 참고
- none : 네트워크 아답터 없음
- null : 호스트에 연결하지 않음
- nat : Network Address Translation 사용 (가장 보편적으로 사용)
- natnetwork : VirtualBox 4.3부터 등장한 새로운 NAT Service 사용
- bridged : 브릿지 네트워크 사용, 물리적 머신에 설치된 NIC에 직접 연결
- intnet : 호스트 혹은 외부에는 노출되지 않는 내부 네트워크 사용
- hostonly : 물리적 인터페이스를 사용하지 않고 호스트에 가상 네트워크 인터페이스를 생성하여 연결
- generic : UDP터널이나 VDE(가상 분산 이더넷)에서 사용
- 네트워크 타입에 따른 HOST, VM, 인터넷 간 통신 가능 여부
VM -> HOST HOST-> VM VM <-> VM VM -> Internet Internet -> VM Host-only 가능 가능 가능 - Internal - - 가능 - Bridged 가능 가능 가능 가능 NAT 가능 포트포워딩 - 가능 NAT-service 가능 포트포워딩 가능 가능
- CENTOS7_VM의 1번 아답터를 브릿지로 설정하고 호스트의 eth0 인터페이스와 연결하기
VBoxManage modifyvm CENTOS7_VM --nic1 bridged --bridgeadapter1 eth0
- CENTOS7_VM의 1번 아답터는 NAT, 2번 아답터는 브릿지로 호스트의 eth0 과 연결하기
VBoxManage modifyvm CENTOS7_VM --nic1 nat -nic2 bridged --bridgeadapter2 eth0
- CENTOS7_VM의 1번 아답터는 NAT, 2번 아답터는 HostOnly로 연결하기
- HostOnly는 HostOnly interface 생성이 필요하다
- 관리자 권한으로 VBoxManage hostonlyif create
실행, 출력되는 아답터명을 기억
- VBoxManage modifyvm CENTOS7_VM --nic1 nat -nic2 hostonly --hostonlyadapter2 "VirtualBox Host-Only Ethernet Adapter #1"
- VirtualBox Host-Only Ethernet Adapter #1 은 hostonlyif create 의 실행결과로 사용자마다 다를 수 있음
- VBoxManage modifyvm --nicN 네트워크 타입
- 네트워크 타입 종류
- 자세한 사항은 https://www.virtualbox.org/manual/ch06.html#networkingmodes 참고
- none : 네트워크 아답터 없음
- null : 호스트에 연결하지 않음
- nat : Network Address Translation 사용 (가장 보편적으로 사용)
- natnetwork : VirtualBox 4.3부터 등장한 새로운 NAT Service 사용
- bridged : 브릿지 네트워크 사용, 물리적 머신에 설치된 NIC에 직접 연결
- intnet : 호스트 혹은 외부에는 노출되지 않는 내부 네트워크 사용
- hostonly : 물리적 인터페이스를 사용하지 않고 호스트에 가상 네트워크 인터페이스를 생성하여 연결
- generic : UDP터널이나 VDE(가상 분산 이더넷)에서 사용
- 네트워크 타입에 따른 HOST, VM, 인터넷 간 통신 가능 여부
VM -> HOST HOST-> VM VM <-> VM VM -> Internet Internet -> VM Host-only 가능 가능 가능 - Internal - - 가능 - Bridged 가능 가능 가능 가능 NAT 가능 포트포워딩 - 가능 NAT-service 가능 포트포워딩 가능 가능 - CENTOS7_VM의 1번 아답터를 브릿지로 설정하고 호스트의 eth0 인터페이스와 연결하기
VBoxManage modifyvm CENTOS7_VM --nic1 bridged --bridgeadapter1 eth0
- CENTOS7_VM의 1번 아답터는 NAT, 2번 아답터는 브릿지로 호스트의 eth0 과 연결하기
VBoxManage modifyvm CENTOS7_VM --nic1 nat -nic2 bridged --bridgeadapter2 eth0
- CENTOS7_VM의 1번 아답터는 NAT, 2번 아답터는 HostOnly로 연결하기
- HostOnly는 HostOnly interface 생성이 필요하다
- 관리자 권한으로VBoxManage hostonlyif create
실행, 출력되는 아답터명을 기억
-VBoxManage modifyvm CENTOS7_VM --nic1 nat -nic2 hostonly --hostonlyadapter2 "VirtualBox Host-Only Ethernet Adapter #1"
- VirtualBox Host-Only Ethernet Adapter #1 은 hostonlyif create 의 실행결과로 사용자마다 다를 수 있음
가상 미디어를 VM에 추가하기
- 새로운 가상 미디어 생성
- VBoxManage createmedium 미디어타입(disk,dvd,floppy, 필수값) --filename 파일경로 -size 크기(MB) --format(VDI,VMDK, VHD, 기본값 : VDI) --variant (Standard,Fixed,Split2G,Stream,ESX)
- /hdd_image/CENTOS7_VM_HDD.vdi 에 10기가 용량의 가변 용량 하드디스크 생성
VBoxManage createmedium --filename /hdd_image/CENTOS7_VM_HDD.vdi --size 10240 --variant Standard
- 파라미터 --variant가 Fixed면 고정 용량 (빠르지만 공간 비효율), Standard면 가변 용량(조금 느리지만 공간 효율)
- VDI와 VHD 포맷의 하드디스크는 modifyvm 명령어로 동적으로 용량을 할당할 수 있다
- VM의 스토리지 컨트롤러추가, 변경, 삭제
- 추가 : VBoxManage storagectl 대상VM명 --name 컨트롤러명 --add 버스타입(ide|sata|scsi|floppy|sas|usb|pcie) --controller 컨트롤러타입(LSILogic|LSILogicSAS|BusLogic|IntelAhci|PIIX3|PIIX4|ICH6|I82078|USB|NVMe) --portcount 포트개수(1~30) --hostiocache 호스트IO캐시사용(on|off) --bootable 부팅사용여부(on|off)
- 이름 변경 : VBoxManage storagectl 대상VM명 --name 컨트롤러명 --rename 변경할이름
- 삭제 : VBoxManage storagectl 대상VM명 --name 컨트롤러명 --remove
- CENTOS_7 VM에 부팅 가능한 Serial ATA 컨트롤러를 SATA Controller라는 이름으로 추가
- VBoxManage storagectl --name "SATA Controller" --add sata --bootable on
- VM의 스토리지 컨트롤러에 미디어 추가, 변경, 삭제하기
- VBoxManage storageattach VM명 --storagectl 스토리지컨트롤러명 --port 포트번호 --device 디바이스번호 --type 미디어타입 --medium 추가할미디어경로
- --username --password --passwordfile 은 인증이 필요할 경우 옵션으로 추가 가능
- 더 많은 옵션에 대해서는 https://www.virtualbox.org/manual/ch08.html#vboxmanage-storageattach 참고
- 위에서 생성한 SATA Controller의 0번 포트에 0번 디바이스로 hdd를 추가
VBoxManage storageattach CENTOS7_VM --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium /hdd_image/CENTOS7_VM_HDD.vdi
- 다른 VM 에서 이미 사용 중인 .vdi 파일만 가져와서 새로운 VM을 생성할 경우 (ex : 초기 환경을 구성한 VM 을 재사용) UUID 가 이미 존재한다는 에러를 발생시킨다. 이 때는 --setuuid "" 파라미터를 추가하여 random uuid를 다시 부여한다.
- 설치CD 혹은 VirtualBox Guest Addition 이미지가 필요한 경우를 위해 DVD 드라이브 추가하기
VBoxManage storagectl CENTOS7_VM --name "IDE Controller" --add ide --bootable off
로 IDE컨트롤러 추가VBoxManage storageattach CENTOS7_VM --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium emptydrive
으로 IDE Controller에 DVD 드라이브를 빈 미디어 삽입 상태로 추가
- VBoxManage createmedium 미디어타입(disk,dvd,floppy, 필수값) --filename 파일경로 -size 크기(MB) --format(VDI,VMDK, VHD, 기본값 : VDI) --variant (Standard,Fixed,Split2G,Stream,ESX)
- /hdd_image/CENTOS7_VM_HDD.vdi 에 10기가 용량의 가변 용량 하드디스크 생성
VBoxManage createmedium --filename /hdd_image/CENTOS7_VM_HDD.vdi --size 10240 --variant Standard
- 파라미터 --variant가 Fixed면 고정 용량 (빠르지만 공간 비효율), Standard면 가변 용량(조금 느리지만 공간 효율)
- VDI와 VHD 포맷의 하드디스크는 modifyvm 명령어로 동적으로 용량을 할당할 수 있다
- 추가 : VBoxManage storagectl 대상VM명 --name 컨트롤러명 --add 버스타입(ide|sata|scsi|floppy|sas|usb|pcie) --controller 컨트롤러타입(LSILogic|LSILogicSAS|BusLogic|IntelAhci|PIIX3|PIIX4|ICH6|I82078|USB|NVMe) --portcount 포트개수(1~30) --hostiocache 호스트IO캐시사용(on|off) --bootable 부팅사용여부(on|off)
- 이름 변경 : VBoxManage storagectl 대상VM명 --name 컨트롤러명 --rename 변경할이름
- 삭제 : VBoxManage storagectl 대상VM명 --name 컨트롤러명 --remove
- CENTOS_7 VM에 부팅 가능한 Serial ATA 컨트롤러를 SATA Controller라는 이름으로 추가
-VBoxManage storagectl --name "SATA Controller" --add sata --bootable on
- VBoxManage storageattach VM명 --storagectl 스토리지컨트롤러명 --port 포트번호 --device 디바이스번호 --type 미디어타입 --medium 추가할미디어경로
- --username --password --passwordfile 은 인증이 필요할 경우 옵션으로 추가 가능
- 더 많은 옵션에 대해서는 https://www.virtualbox.org/manual/ch08.html#vboxmanage-storageattach 참고
- 위에서 생성한 SATA Controller의 0번 포트에 0번 디바이스로 hdd를 추가
VBoxManage storageattach CENTOS7_VM --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium /hdd_image/CENTOS7_VM_HDD.vdi
- 다른 VM 에서 이미 사용 중인 .vdi 파일만 가져와서 새로운 VM을 생성할 경우 (ex : 초기 환경을 구성한 VM 을 재사용) UUID 가 이미 존재한다는 에러를 발생시킨다. 이 때는 --setuuid "" 파라미터를 추가하여 random uuid를 다시 부여한다.
- 설치CD 혹은 VirtualBox Guest Addition 이미지가 필요한 경우를 위해 DVD 드라이브 추가하기
VBoxManage storagectl CENTOS7_VM --name "IDE Controller" --add ide --bootable off
로 IDE컨트롤러 추가VBoxManage storageattach CENTOS7_VM --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium emptydrive
으로 IDE Controller에 DVD 드라이브를 빈 미디어 삽입 상태로 추가
VM 켜고 끄기
- VM 시작하기 (현재 Powered Off 나 Saved 상태인 VM에 대하여 적용 가능)
- VBoxManage startvm VM명 --type (gui | headless | sdi | separate)
- gui : 그래픽 유저 인터페이스 구동 (기본값)
- headless : GUI를 띄우지 않음, 머신에는 --vrde on 옵션을 줄 경우 RDP로 접속 가능
- sdi : 최소 기능의 간단한 GUI 구동
- separate 별도 프로세스의 유저 인터페이스로 구동되는 headless VM을 분리가능한 UI로 구동 (실험적 기능)
VBoxManager startvm CENTOS7_VM
- VM 종료하기
- 종료 신호를 보내고 ACPI POWER OFF 하기
VBoxManage controlvm CENTOS7_VM acpipowerbutton
- 반응 없는 VM을 강제로 종료하기
VBoxManage controlvm CENTOS7_VM poweroff
- VBoxManage startvm VM명 --type (gui | headless | sdi | separate)
- gui : 그래픽 유저 인터페이스 구동 (기본값)
- headless : GUI를 띄우지 않음, 머신에는 --vrde on 옵션을 줄 경우 RDP로 접속 가능
- sdi : 최소 기능의 간단한 GUI 구동
- separate 별도 프로세스의 유저 인터페이스로 구동되는 headless VM을 분리가능한 UI로 구동 (실험적 기능)
VBoxManager startvm CENTOS7_VM
- 종료 신호를 보내고 ACPI POWER OFF 하기
VBoxManage controlvm CENTOS7_VM acpipowerbutton
- 반응 없는 VM을 강제로 종료하기
VBoxManage controlvm CENTOS7_VM poweroff
기존에 생성된 VM Template 가져와서 사용하기
- Open Virtualization Format 을 따르는 OVF, OVA 파일을 사용 가능
- VBoxManager import 파일경로 (--dry-run : 구동 가능 여부 검사)
- 템플릿 파일이 사용 가능한지 확인하고 정보 출력하기
VBoxManage import /template/CENTOS7_VM_TEMPLATE.ova --dry-run
- 각 VM은 vsys 파라미터에 번호가 할당되어 출력되며, VM상의 주변기기들은 --unit 에서 할당할 수 있는 번호가 메겨진다. 해당 주변기기들은 VM 구성시 --ignore 로 무시하도록 할 수 있다.
- 템플릿 파일에서 VM 구성하기
VBoxManage import /template/CENTOS7_VM_TEMPLATE.ova --vsys 0 --memory 1024 --cpus 2 --eula accept
- --dry-run 에서 5: Sound card (appliance expects "ensoniq1371", can change on import) 와 같은 정보가 출력되었다면
VBoxManage import WindowsXp.ovf --vsys 0 --unit 5 --ignore
와 같은 형식으로 VM 구성시 사운드카드는 무시할 수 있다.
VBoxManage import /template/CENTOS7_VM_TEMPLATE.ova --dry-run
- 각 VM은 vsys 파라미터에 번호가 할당되어 출력되며, VM상의 주변기기들은 --unit 에서 할당할 수 있는 번호가 메겨진다. 해당 주변기기들은 VM 구성시 --ignore 로 무시하도록 할 수 있다.
VBoxManage import /template/CENTOS7_VM_TEMPLATE.ova --vsys 0 --memory 1024 --cpus 2 --eula accept
- --dry-run 에서 5: Sound card (appliance expects "ensoniq1371", can change on import) 와 같은 정보가 출력되었다면
VBoxManage import WindowsXp.ovf --vsys 0 --unit 5 --ignore
와 같은 형식으로 VM 구성시 사운드카드는 무시할 수 있다.
- --dry-run 에서 5: Sound card (appliance expects "ensoniq1371", can change on import) 와 같은 정보가 출력되었다면
'dev > Cloud & Infra' 카테고리의 다른 글
ElasticSearch Heap 사이즈 설정 (0) | 2019.02.03 |
---|---|
systemd 서비스 unit파일 작성에서 했던 실수 (3) | 2019.02.02 |
ElasticSearch 설치시 확인할 사항 (0) | 2018.12.30 |
VirtualBox로 설치한 VM에 LINUX 네트워크 설정하기 (0) | 2018.12.02 |
vagrant 에서 Encoding::CompatibilityError 에러가 발생할 경우 (5) | 2018.03.12 |