Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

Contents

가상화에 대해서

기술적으로는 컴퓨터리소스의 추상화를 일컫는 광범위한 용어이지만, 여기에서는 시스템 구동을 위한 운영체제(:12)를 실행하고, 그 위에 가상화 솔류션을 이용하는 플랫폼 가상화로 범위를 축소한다.

가상화의 이유

  1. 서버 통합을 통한 비용절감
서버의 대다수는 사용율이 10%에 미치지도 못한다. CPU 뿐만 아니라 디스크, 메모리, 네트워크를 모두가 그렇다. 이는 엄청난 낭비다. 가상화 기술을 이용하면 하드웨어를 논리적으로 재구성 해서 효과적으로 서버를 통합시킬 수 있다.
  1. 유연성, 확장성, 기민성 (Agile)
인터넷(:12) 시장은 빠르게 변화하며 예측이 힘들다. 때문에 기민하고 유연하게 확대및 축소 할 수 있는 인프라의 구축이 중요하다.
  1. 통합
다수의 기업들이 자신들의 인프라를 다수의 기술과 다수의 플랫폼으로 구성하는 것을 선호한다. 특정 기술과 특정 업체에 종속되는걸 지양한다는 얘기다. 리눅스, 윈도, 유닉스와 다양한 기술들이 통합되는 환경의 통합을 원하고 있다.

가상화 솔류션

  1. XEN : 오픈소스 소프트웨어로. 2003년 출시되었으며, 2010/1/21 일 현재 3.4.2가 최신버전이다.
  2. VirtualBox : 선에서 개발하고 있는 가상화 솔류션이다. 오픈소스(:12)정책을 따르는 virtuaBox OSE 버전, Closed-source (제한된 GPL) 버전, 상용 버전이 존재한다. OSE버전의 경우 RDP, USB 지원, USB over RDP 기능이 빠져있다.
  3. VMWare : 윈도우용 가상화 소프트웨어. 오랜 역사를 자랑한다. 99년도에 VMware workstation이 나왔다고 한다. 내가 처음 VMware를 들었던게 아마 2002년 쯤이였던 것 같다. 물론 그때는 관심이 없어서, "이런 신기한게 있구나 하고 넘어갔지만"
  4. Parallels : 특히 맥에서 많이들 사용하는 것 같다. 물론 나는 사용해본적이 없다.
  5. KVM
일반적으로 XEN, VMWARE, VirtualBox를 많이 사용하는 것 같다. 어떤 제품을 사용해도 큰 문제는 없을 거라는 생각이 든다. 각 솔류션의 장단점을 찾아봐야 할 것 같다.

virtualbox 4.2

2014년 3월 현재 virtualbox 버전은 4.2.16 이다. 선에서 개발했으나 지금은 오라클에서 배포하는 가상머신 프로그램이다. 자유롭게 사용할 수 있는 VirtualBox Open source Edtion과 몇 개의 기능이 추가된 상용 버전이 있다. 상용 버전을 구매할 경우 RDP와 원격 USB 장치 지원, 가상 하드 디스크의 iSCSI 지원기능을 사용할 수 있다. 개인이 사용하기에는 오픈 에디션 버전으로 차고 넘친다.

초기에는 다른 가상화 프로그램 (특히 VMware나 Paralles)에 비해서 성능과 기능 모두가 좋지 않았으나, 지금은 불편함이 없는 수준까지 올라왔다. 어차피 난 리눅스만 사용할 거라서 Paralles나 VMware를 사용할 일도 없어서, VB와 비교해서 얼마나 좋은지는 모른다. 어쨋든 불편함 없이 사용하는 중.

보낸 사람 Linux

Virtualbox 기본 사용

쾌적한 데스크탑 가상화 환경을 위한 요구사항

쾌적한 데스크탑 가상화를 위해서 다음의 것들이 준비되면 좋다. 중요하다고 생각되는 것부터 적었다.
  1. SSD : 데스크탑 가상화 화면 빵빵한 CPU와 넉넉한 memory가 우선이라고 생각하겠지만, 디스크가 가장 큰 영향을 미친다. 먼저 SSD를 구입한다. 말 그대로 네이티브 운영체제를 돌리는 것 같은 느낌이든다.
  2. Memory : 4G 정도면 부족함이 없겠는데, 나처럼 VM을 많이 띄워야 하는 개발자라면 8G는 되야 할 것 같다. 요즘엔 네트워크 환경도 데스크탑에서 시뮬레이션 하는데, 8개 이상의 vm을 한번에 띄워야 하기도 한다. 4G는 좀 부족하다.
  3. CPU : 막상 CPU는 그닥 중요하지 않은 것 같다. i3 2core(hyper thread 4core)로 8개의 vm을 잘도 띄운다.:"

네트워크 환경

Guest 운영체제가 사용할 다양한 네트워크를 설정할 수 있다.

NAT

Guest 운영체제에 NAT(:12) 환경을 구축한다. Gateway를 통하여 외부로 나갈 수 있지만 호스트 운영체제와 직접 통신할 수는 없다. 게스트 운영체제와 통신하기 위해서는 포트 포워딩 설정을 해야 한다.
  • Gateway : 10.0.2.2
  • DHCP : 10.0.2.3
포트 포워딩 설정
보낸 사람 Linux

호스트 전용 네트워크

Host 운영체제에 가상 네트워크를 만든다. Guest 운영체제의 네트워크 인터페이스는 가상 네트워크와 link 레벨에서 연결된다.

호스트 전용 네트워크 파일 > 네트워크에서 등록한다. 이제 Guest 운영체제의 네트워크 설정에서 호스트 전용 네트워크를 선택할 수 있다.
보낸 사람 Linux

호스트 전용 네트워크를 설치한 Guest 운영체제를 실행하면, 호스트 운영체제에 vboxnet0.. 인터페이스가 만들어진다.
# ifconfig
....
vboxnet0  Link encap:Ethernet  HWaddr 0a:00:27:00:00:00  
          inet addr:192.168.56.1  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::800:27ff:fe00:0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:1088 (1.0 KB)

ISO 이미지 설치하기

굳이 CD로 굽거나 할 필요 없다. "메뉴 > 장치 > CD/DVD 드라이브 마운트 > CD/DVD-ROM 이미지"로 리눅스 운영체제에 위치하는 ISO파일을 직접 마운트 해서 설치할 수 있다.

폴더 공유하기 - shared folder

윈도우 guest에서 공유

리눅스의 폴더를 guest 운영체제와 공유할 수 있다. 다음과 같이 공유할 폴더를 지정한다.

https://lh5.googleusercontent.com/-ALn8RY3w5i8/UQ9ppm0ncKI/AAAAAAAACyc/xdXLAT6c69I/s800/%25EC%258A%25A4%25EB%2583%2585%25EC%2583%25B72.png

윈도우에서 "내 컴퓨터 > 네트워크 드라이브 연결"로 리눅스에서 설정한 공유 폴더를 네트워크 드라이브 형태로 추가할 수 있다.

폴더 공유기능을 사용하려면 게스트 확장이 설치돼 있어야 한다. 만약 게스트 확장이 설치돼 있지 않다면, virtualbox 메뉴의 장치 > 게스트 확장 설치로 설치하자.

리눅스 guest 에서 공유

우분투 리눅스를 기준으로 한다. 리눅스 게스트에서 호스트 운영체제의 공유 폴더를 mount 하려면 virtualbox 게스트 확장을 설치해야 한다.
# apt-get install virtualbox-ose-guest-utils

이제 공유 폴더를 사용할 수 있다.
# mkdir /mnt/folder
# mount -t vboxsf shared_folder /mnt/folder

Virtualbox 게스트 확장을 설치하지 않으면, vboxsf 파일 시스템을 찾을 수 없다는 에러가 떨어진다.

사용소감

업무및 개발용으로는 이보다 좋은 툴이 없어 보인다. GPL 라이센스를 따르며, 안정적이고 빠르다. 듀얼 모니터에 한쪽에 전체화면으로 띄어놓으면 두대의 컴퓨터로 작업하는 느낌이다.

기타 VirtuaBox 설정 및 기능들

가상 미디어 관리자

"파일" > "가상 미디어 관리자"를 선택한다. 현재 virtualbox에서 관리 중인 VM 이미지에 대한 복사, 수정, 등의 작업을 할 수 있다.

가상 시스템 가져오기

가상 이미지를 import 할 수 있다. OVF(Open Virtualization Format) 형식의 가상화 이미지를 지원한다.

가상 시스템 내보내기

가상 이미지를 export 한다. export한 가상 이미지는 다른 Virtualbox뿐만 아니라, OVF를 지원하는 다른 가상화툴에서도 사용할 수 있다. VMware, Oracle VM, RHEV 등에서 사용할 수 있다. KVM의 경우 virt-convert와 같은 외부 프로그램을 이용해서 변환 후 사용할 수 있다.

환경 설정

Virtualbox의 "파일" > "환경 설정"을 클릭한다. 전체 VirtualBox에 적용되는 값들을 설정할 수 있다. 중요하지 않은 설정은 건너뛴다.

입력 호스트키를 설정할 수 있다. 여기에서 설정한 키를 입력하면, 게스트 운영체제에서 호스트 운영체제로 마우스와 키보드입력을 넘길 수 있다. 기본 값은 오른쪽 Ctrl 키다.

네트워크 VM에서 사용할 호스트 전용 네트워크를 만들 수 있다. 호스트 전용 네트워크의 이름은 vboxnet0, vboxnet1의 규칙을 따른다. 호스트전용 네트워크에서 사용할 subnet 정보와 DHCP 서버사용 유무를 결정할 수 있다. DHCP 서버 사용을 활성화하면, 호스트운영체제가 DHCP 서버의 역할을 한다. VirtualBox를 설치하면 dnsmasq 소프트웨어가 함께 설치되는데, dnsmasq가 dns 서버겸 DHCP 서버로 작동한다.

virtualBox 특징

  1. 공개 소프트웨어다.
  2. 약 30메가 정도의 작은 설치 크기.
  3. 하드웨어 가상화
  4. 사운드 지원
  5. USB 연결장치 필터링

성능비교자료

가상화가 이슈다보니 이런 저런 가상화 툴도 많다. 어떤 가상화 툴을 사용해야 하나라는 고민이 들 것 같은데 그래서 성능비교 자료를 찾아봤다. 자세한 내용은 원문을 읽어보면 될 것 같다. 약 20개 항목에 대한 테스트를 진행했는데, 내용을 정리하자면 다음과 같다.
  1. VirtualBox와 VMware가 모든 분야에 걸쳐서 높은 성능을 보여줬다. 좋은 CPU/Memory 성능을 보여줬으며, 디스크 접근 시간도 빨랐다. 네트워크 레이어 속도도 좋았다.
  2. VirtualBox는 공개 소프트웨어로 데스크탑용 지금껏 가상화 도구로 알려져 왔다. 그러니까 개인이 취미 혹은 개발 용도로 사용하는 수준이지 기업에서 사용할 수 있는 수준은 아니라는 것. 그러나 상용 못지 않은 성능과 기능을 보여주고 있다. 거기에 QT(:12)를 기반으로한 훌륭한 사용자 인터페이스를 제공한다. 정말 쉽게 사용할 수 있다.

관련글