가상머신이란?

고리·2022년 7월 28일
0

CS

목록 보기
1/6
post-thumbnail
post-custom-banner

42서울에서 born2reboot란 과제를 진행하다가 가상머신에 대해 공부할일이 있었다. 생각해보니 집에서는 wsl2를 사용하고 학교 과제를 진행할 때는 VMware를 사용한다. 설치 중에 "Hyper-V 설정 체크"란 말도 몇번 봤던 것 같다.

또 예전에 django를 찍먹할 때는 가상환경을 사용했고, 요즘 클라우드가 대세라 도커 정도는 알아야 한다고 해서 유튜브에서 개념강의를 찾아볼 때 가상화 도구란 말을 들었던 것 같다.

가상화 기술, 가상 머신, 가상 환경 누가 이게 무슨 차이냐고 물어봤는데 버벅거리는 나를 발견했다.
그래서 도대체 이게 다 뭘까??

한 게시글에 전부 정리하려했으나 생각보다 어렵고 내용이 많아서 챕터별로 나눴다.

간단히 개념을 먼저 살펴보자

가상화란 물리적 컴퓨터 자원인 CPU, MEMORY, DISK등을 추상화 하는 것으로. 추상화된 자원들을 사용해 가상의 컴퓨터를 만들면 이 컴퓨터가 바로 가상머신이다.

과제용으로 사용중인 vmware.com의 설명에는 다음과 같이 적혀있다.

가상 머신은 물리적 컴퓨터와 동일한 기능을 제공하는 소프트웨어 컴퓨터입니다. 가상 머신은 물리적 컴퓨터처럼 애플리케이션과 운영 체제를 실행합니다. 그러나 가상 머신은 물리적 컴퓨터에서 실행되고 물리적 컴퓨터처럼 작동하는 컴퓨터 파일입니다. 다시 말해 가상 머신은 별도의 컴퓨터 시스템처럼 작동합니다.

그니까 컴퓨터 안의 컴퓨터이지만 실제로(물리적으로) 존재하지 않는 컴퓨터이다.
VMware가 나의 윈도우 운영체제로 돌아가는 노트북안에, Ubuntu 운영 체제로 돌아가는 별도의 컴퓨터 시스템을 작동시키는데, 그렇다면 Vmware는 가상머신인가? 라는 의문이 생겼다. VMware는 가상머신을 구동하는것을 도와주는 소프트웨어지 가상머신이 아니다.

이렇게 가상화를 도와주는 소프트웨어는 세가지 유형이 있다. 첫 번째, 두 번째 유형을 Hypervisor라 묶어 부르는데 후에 설명하겠다 :)

그렇다면 이게 어떻게 가능할까?

별도의 컴퓨터 시스템처럼 작동하기 위해서는 CPU, MEMORY, DISK 등 물리적으로 존재하는 하드웨어를 소프트웨어로 구현할 필요가 있다.

위의 사진에서는 Host OS와 Guest OS가 나뉘어져 있고 그 중간에Hypervisor가 햄버거처럼 껴있다. 바로 이 Hypervisor가 Host의 하드웨어 자원을 가상화해주고 이를 Guest OS에 할당해 준다. 내가 사용해본 Hypervisor는 VMware, Hyper-V, VirtualBox 이렇게 3가지인데 앞의 2개가 윈도우 운영체제에서 주로 사용되는 유형 1에 속하고 마지막 VirtualBox가 mac운영체제에서 사용되는 유형 2에 속한다.

이처럼 Hypervisor는 두가지 유형으로 나뉜다.

Type 1 (Native or Bare Metal)

These hypervisors run directly on the host's hardware to control the hardware and to manage guest operating systems.

Type1 Hypervisor는 Host의 하드웨어 자원을 제어하고 Guest OS를 관리하기 위해 하드웨어 위에서 독립적으로 실행된다. 때문에 한 OS의 문제가 다른 OS에게 영향을 주지 않는다.

Type 2 (Hosted)

These hypervisors run on a conventional operating system (OS) just as other computer programs do. A virtual machine monitor runs as a process on the host. Type-2 hypervisors abstract guest operating systems from the host operating system.

Type2 Hypervisor는 Host의 운영체제 위에서 실행된다. 때문에 Host의 프로세스 중 하나처럼 동작하고 Guest OS들은 Host OS에게 많은 영향을 받는다.

이 두개의 유형을 보면서 WSL이 나오지 않아서 좀더 찾아봤는데 WSL이 가상머신이라고 하기엔 어렵다고 한다..! 이에 대해서 정리해둔 한 게시글에서는 WSL을 이렇게 말한다.

Microsoft에서 발표한 WSL은 Windows 운영체제에서 경량화된 가상화 기술을 사용하여 Linux 운영 체제를 구동할 수 있도록 해 주는 기술이다.

WSL의 개념은 기본적으로 최근의 Cloud 개념들과 비슷하여 가까우며, 과거 방식의 VM(Virtual Machine) 개념과는 살짝 거리가 멀다. 가상화(Virtualization)이라는 개념은 같으나, 과거 VM 방식대로 운영체제 하나를 통째로 복사해서 작동시키는 방식이 아니라, 필요한 부분만 별도로 실행시키는 방식을 사용하고 있다. 이를 「경량화(Light-Weight)」 방식이라고 표현한다. 이런 경량화 기술이 나오기 전에는 Linux 등 다른 운영체제를 사용하기 위해 Windows 위에서 VM(Virtual Machinge)을 설치하여 사용하거나, Linux 전용 노트북을 구입했다.

wsl2를 사용해 개인 프로젝트를 할때와 Vmware를 사용해 학교 과제를 할때 느낀 차이점이 이 부분에서 오는 듯하다. Vmware는 무겁고 실행 중에 다른 작업을 하면 속도가 느려지고 인터넷설정도 따로 해줘야 했지만, wsl2는 일반 윈도우 환경에서 작업하는 것과 별다른 차이를 못느꼈다.

요즘은 Hypervisor보단 Container가 대세라고 하던데 다음글에서는 도커에 대해서 알아보겠다.

세줄 요약
1. 가상 머신은 말그대로 실체가 없는 또다른 컴퓨터다.
2. Hypervisor가 핵심 역할을 한다.
3. Hypervisor는 리소스를 나눠주는 소프트웨어다.


ref
https://www.trustradius.com/buyer-blog/top-3-virtual-machine-software
https://azure.microsoft.com/en-us/resources/cloud-computing-dictionary/what-is-a-virtual-machine/#overview
https://en.wikipedia.org/wiki/Hypervisor

profile
Back-End Developer
post-custom-banner

0개의 댓글