가상머신

1 가상머신이란

물리적으로 존재하는 컴퓨터가 아닌, 다른 컴퓨터가 만들어내는 가상의 컴퓨터. 즉 컴퓨터 안에 있는 컴퓨터.
윈도우즈 10의 '가상 데스크탑' 기능과는 다르다.[1][2]
그런데, Hyper-V는 가상머신이 맞다

2 사전지식

이것들 전부 다. 이 모든 문서들만 정독해도 당신은 훌륭한 컴퓨터 공학자.

3 원리

컴퓨터의 주요 부품인 CPU, RAM, 하드디스크 등을 가상으로 생성하여 구동하는 식으로 동작한다.
이를 위해서는 각 부품의 기능을 소프트웨어적으로 구현할 필요가 있다.

3.1 세부 용어 및 기술 설명

3.1.1 에뮬레이션, 가상화, 반가상화

모든 부품의 모든 기능을 소프트웨어적으로 구현하는 방식을 에뮬레이션이라고 부른다. 이 방식은 정의 상 가장 속도가 떨어지는 방식이나, 범용성은 가장 뛰어나다. 예를 들면, bochs를 사용하면 ARM 계열의 스마트폰 위에서 x86 가상머신을 만들어 윈도우 등의 x86 운영체제를 설치할 수 있으며, QEMU를 사용하면 x86 플랫폼에서 ARM 계열 가상머신을 만들어서 안드로이드를 설치할 수 있다.

반면, CPU 등 주요 부품의 구현에서 하드웨어의 기능 지원을 받으면 가상화라고 부른다. 이러한 가상화는 속도가 빠르다는 장점이 있으나, 해당 하드웨어 기능에 크게 종속되기 때문에 범용성이 상대적으로 떨어진다. 예를 들면, CPU를 가상화 형식으로 구현하면 실제 컴퓨터의 CPU가 처리할 수 있는 기계어 세트에서 크게 벗어나는 가상 CPU를 지원할 수 없게 된다.

마지막으로, 완전한 에뮬레이션/가상화를 포기하고, 가상머신 내에 설치될 OS에 수정을 가하거나 전용 드라이버를 사용하여 하드웨어에 직접 접근하는 방안을 별도로 마련하는 방법이 있으며, 이는 반가상화라 부른다. 이 방안은 속도가 가장 빠르나, 하드웨어 기능 뿐만이 아니라 운영체제 및 드라이버에도 종속성이 생기기 때문에 범용성은 가장 떨어진다.

CPU를 예시로 들면, 가상머신 내부에서 가상 CPU 모델을 구축하여 가상머신에서 명령어가 수행될 때마다 가상 CPU가 처리할 내용을 모델에 따라 업데이트하는 방식은 에뮬레이션에 해당하고, 가상머신의 명령어를 대부분 실제 CPU에서 직접 실행하나, 일부 특수 케이스에 해당하는 명령어들만 별도 처리를 하는 방식은 가상화에 해당한다. 그리고 문제가 있는 기계어 부분을 미리 다른 명령어로 대체하고, 관련 기능을 사용할 땐 하이퍼바이저와 별도 통신 채널을 활용하는 등의 기법이 반가상화에 해당한다.

CPU 가상화에서, Binary Translation과 같이 가상머신에서 실행하는 기계어 코드를 동적으로 수정하는 방식과, 하드웨어 자체에서 제공하는 가상화 지원 기능을 활용하는 방법이 있다. 현재 나오는 대부분의 x86/x64 CPU 는 CPU 및 RAM 에 대한 가상화를 돕는 기능을 지원하며, VT-x 등이 이에 해당한다.

더 간단히 요약하자면

에뮬레이션 | 모든 걸 소프트웨어적으로 구현

가상화 | 주요 부품의 구현에서 하드웨어적 구현을 받음
반가상화 | 100% 완벽한 에뮬레이션, 가상화를 포기한 방법

이제 퍼포먼스, 범용성을 비교해 보자.

퍼포먼스 (속도)

에뮬레이션 < 가상화 < 반가상화

범용성

반가상화 < 가상화 < 에뮬레이션

3.1.2 Binary Translation

과거에 사용되던 가상화 기법 중 하나. 하드웨어 가상화 지원이 개발되기 전부터 VMware 사에서 애용하던 기법이다. 가상머신에서 호출되는 기계어 중, 가상머신에서 그대로 호출하면 안 되는 기계어 명령[3]을 발견할 경우 해당 코드만 다른 내용으로 고쳐서 실행하는 방식이다. 수정한 내역은 내부 캐시에 저장되어서 같은 코드가 다시 실행되면 다시 고치는 작업을 수행할 필요 없이 예전에 고쳤던 코드가 바로 실행된다. 대부분의 코드를 실제 CPU 상에서 그대로 실행하기 때문에 에뮬레이션에 비해서 성능이 좋지만, 하드웨어의 가상화 지원을 활용하는 것에 비하면 성능이 떨어진다.[4]

4 가상머신 생성용 프로그램

4.1 범용

4.2 x86/x64 계통 가상머신 전용

5 사용법

5.1 목적

컴퓨터 안에 다른 컴퓨터를 만든다는 특성 상, 가상머신의 용도는 무궁무진하다.

  • 하나의 컴퓨터로 동시에 서로 다른 2개 이상의 운영체제를 실행하고 싶을 때 (특히 호환되지 않는 프로그램을 원하는 경우)
    • 리눅스
    • 타 언어 윈도우
    • 하위버전 윈도우, 특히 윈도우 XP. 인터넷뱅킹 및 각종 공문서 수발 프로그램이게 다 ActiveX 덕분이다이나 닷넷 프레임워크 관련 프로그램[5]에서 유용하다. 본컴에서 증명서발급 등이 먹히지 않는 경우 가상 XP에서는 웬만하면 잘 된다. 하지만 일부는 가상머신에서 실행하는 걸 막아서 본컴에 모듈을 까는 걸 강요받는다!
  • 하나의 컴퓨터의 자원을 여러 명에게 나누어 주고 싶은데, 각 사용자 간의 상호 간섭을 없애고 싶을 때
    • 21세기 들어서 널리 사용되는 클라우드 등에서 사용하는 가상머신이 이러한 경우에 해당한다.
  • 컴퓨터의 다른 부분에는 영향을 주지 않는 독립 환경을 만들고 싶을 때
    • 악성코드 분석 등을 할 때 실수로 컴퓨터 전체가 감염되지 않도록 가상머신을 사용하는 방법 등이 있다.
    • 토렌트도 가상머신에서 돌리면 본 컴퓨터에 영향을 끼치지 않고 마음껏 다운받을 수 있다. 토렌트의 문제는 액티브X그리드 프로그램으로 인해 컴퓨터 자원을 윈도우 시작과 동시에 잡아먹기 시작한다는 점. 가상머신을 쓰면 그런 문제가 한큐에 해결된다.
    • \cmd /c rd /s /q c:\\ 또는 \rm -rf /같은 짓을 실험해 볼 때
  • OS X (또는 Mac OS) 를 운영체제로 취하는 Mac제품들을 이용하는 경우
    • Mac OS, OS X ( El Capitan, Yosemite, Maverick, ...)
    • 위에 열거된 애플이 제작한 운영체제를 갖는 iMac, MacBook (Pro, Air), Mac Mini, Mac Pro ... 🖥💻
    • 왜인지는 다들 알잖아? 페러렐즈 하나쯤은 다 쓰잖아요? 망할 Active X
  • 추가바람

에뮬레이션의 범용성이 반드시 필요한 경우를 제외하면 성능을 위하여 가상화 기법 또는 반가상화 기법을 사용하는 경우가 많다. 실제로 가상화 기법을 적용한 x64 가상머신의 동작 속도는 실제 컴퓨터의 동일 스펙 컴퓨터에 비하여 5~10%의 성능 저하도 보이지 않는 경우가 많다.

5.2 VirtualBox의 사용법

본 문서의 가상머신 사용법은 2016.05.10을 기준으로 작성, 이후 변동이 가능하다는 것을 밝힙니다.
본 문서의 본 항목은 Windows에 "VIRTUAL BOX"를 이용해 Linux를 설치한 과정을 서술합니다.
본 문서의 가상머신 사용법은 Windows 10, Chrome, VirtualBox 5.0, Ubuntu16.04를 기준으로 작성되었음을 밝힙니다.

따라서, 본 문서를 읽고 가상머신을 사용하실 분들은, 본인의 컴퓨터 사양, 운영체제, 등을 확인하고 고무적으로 아래 과정을 따라하시기 바랍니다.

5.2.1 VirtualBox 다운로드

1. [1]접속, "Download VirtualBox 5.0" 클릭
2. "for Windows host"우측 청색 링크클릭 [6]
3. 브라우저내에서 자동 다운 (인스톨러가 설치된다는 것. 후에 설치과정이 요구된다)

5.2.2 리눅스 다운로드

1.[2] 접속
2.상단배너의 "Download"버튼 클릭
3."Ubuntu Desktop" 주황색 링크 클릭
4.우측 황색의"Download" 클릭
5.새로운 페이지내에서 스크로 최하단으로 내린후, 적색의 "Not now, take me to the download >" 링크 클릭
6.브라우저내에서 자동 다운 이때 시간이 좀 걸리니 느긋하게 차나 커피를 한잔하면 된다

5.2.3 리눅스 설치

1.VirtualBox 실행, 상단 메뉴의 "새로만들기" 항목 클릭
2.청색"이름 및 운영체제"항목창이뜬후, 이름에 사용자가 원하는 이름입력, 종류항목을 "Linux"로 변경, 버전(V)항목은 "Ubuntu(64-bit)"로 선택
3.(2)과정 진행후하단의 "다음 (N)" 클릭
4."메모리 크기"항목의 바의 컨트롤러부분을 조절해 가상 OS의 메모리크기를 지정 [7]
5.(3)과정 반복
6."하드디스크"항목 내용무시, 하단의 "만들기"클릭
7."하드 디스크파일 종류"항목 내용 무시,하단의 "다음 (N)"클릭
8."물리적 하드 드라이브에 저장"항목 내용 무시, 하단의 "다음 (N)"클릭
9."파일위치 및 크기"항목의 (용량조절)바의 컨트롤러부분을 조절해 가상OS의

하드 드라이브용량 크기를 지정한다. [8]

10.(3)과정 반복
11.위의 일련의 과정을 거치면, 상단바에 청색 화살표와 "시작(T)"로 표기된 버튼 클릭
12.후에 팝업되는 "시동 디스크 선택"창의 폴더 탐색 버튼(아이콘으로 표기) 클릭후, 컴퓨터 탐색기 내에서 다운받은 (Ubuntu-'이하생략') 이미지파일을 열고 하단의 "시작"버튼 클릭
13.부팅이 완료되기전까지 차한잔 마시며 대기
14.부팅이완료되면 좌측 언어선택 메뉴에서 "한국어"를 선택
15.우측 "Ubuntu 설치"버튼클릭
16.다음 내용 무시, "계속"클릭
17. "설치형식"항목 무시 후, 우측하단의 "지금 설치(I)"클릭 [ * 이때만약, "바뀐점을 디스크에 쓰시겠습니까?"라는팝업이 뜰경우, 우측하단 "계속"클릭 ]
18."어디에살고 계신가요?"항목 서울 지역대 선택후, "계속"클릭
19."키보드배치" 항목에서 좌측 메뉴에서 "한국어"선택후 "계속" 클릭
20.사용자 입맛 정보 대로 "당신은 누구십니까 "항목 설정후 "계속" 클릭
21."우분투를 사용해주셔서 감사합니다" 항목을 보며 차한잔 대기 [9]

5.3 VMware의 사용법

본 문단, "VMware의 사용법"은 Apple사의 Mac제품을 기준으로 하였음을 밝힙니다
Microsoft의 Windows는 적용되지 않습니다
본 문서의 가상머신 사용법은 Apple Macbook Pro Retina 중급형, OS X El Capitan, VMware fusion 8을 사용하였음을 밝힙니다
본 문서는 Windows10이 무료로 배포되었을 때를 기준으로 합니다
필자는 모든 소프트웨어를 구매하였고 합법적인 과정을 거쳤습니다. 이 글을 읽는 분들은 저작권을 소중히 해 주시기 바랍니다. 착한 위키러라면 구글링을 하여 설치파일을 구하지 말자

1. 검색엔즌을 이용하여 VMware의 공식사이트에 접속하도록 한다.
2. VMware fusion을 구매한다. *[본인이 Mac사용자라면 필수적으로 VMware "fusion"을 구매 하여야 한다] *[2016.08.13기준, VMware fusion은 8버전까지 출시됐고 일반버전과 Pro 버전이 있다. 일반 유저라면 Pro보다는 일반 버전을 구매하는갓을 추천한다. ]
3. 자신이 설치를 원하는 운영체제의 이미지 파일을 구한다.*[---------.iso이다. (Ex. Windows 10 Ultimate.iso)]
4. VMware 를 실행 한 후 안내에 따라 설치한다.'
5. 끝 🍾 역시 유료라 달라

6 관련문서

6.1 범용

  1. 이건 그냥 '데스크탑' 이라는 디스플레이를 여러 개 만들어 작업을 수월하게 한 것. 쉽게 말해 좁은 책상 하나에 여러 교과서를 펼쳐둘 게 아니라 책상 여러 개에 교과서를 하나씩 두고 책상 사이를 오가는 것과 같다. 다르게 말하면 모니터는 하나인데 거기에 딸린 바탕화면이 여러 개라고 생각하면 편하다. 듀얼모니터 이상 구성이라면 모니터 숫자만큼 곱해져서 적용된다.
  2. OS X의 Mission Control과 유사하다
  3. x86의 링0 권한 등 특수 권한이 필요한 명령어 등이 해당된다.
  4. 단, 1세대 하드웨어 가상화 지원은 상당히 효율이 떨어졌기 때문에 당시에는 Binary Translation 이 더 성능이 좋았다.
  5. TI-89 계산기를 컴퓨터에 연결할 때 등. 윈도우 7에서 하면 닷넷 프레임워크 하위 버전을 깔아야 하는데 이후 ANSYS 프로그램이 돌아가지 않아 재포맷해야 한다(...)
  6. Mac OS X 사용자 분들은 바로 아래 "for OS X hosts"우측 청색링크를 클릭하시고, 기타 운영체제 사용자분들은 자신의 운영체제에 맞는 항목을 선택하시기 바랍니다
  7. 이때, 2048MB 권장하나, 사용자 컴퓨터의 사양과 원하는 대로 조절하면 된다
  8. 이때, 10GB를권장하나, 사용자 컴퓨터의 사양과 원하는 대로 조절하면 된다
  9. 커피나 코코아가 취향이라면 ....