본문 바로가기

CS & IT trend/기타

가상 머신(VM)에 대하여

1. 가상 머신이란 무엇인가요? 💡

소프트웨어 기술만을 활용하여 만든 가상의 컴퓨터
보통 우리가 사용하는 일반적인 컴퓨터는 물리적 컴퓨터라고 한다. 물리적 컴퓨터는 사용자의 행동에 따라 데이터를 기록하고, 전력을 받아 실행되는 HardWare 부분(CPU, Disk, RAM)과 사용자에게 화면을 띄우고, 마우스를 보이게 하는 SoftWare 부분(OS, App)이 동시에 존재한다. 물리적 컴퓨터는 HardWare가 실재하고, 사용자의 동작에 따라 움직인다.
반면, 가상 머신의 경우, 해당 HardWare 부분이 실재하지 않고 SoftWare로 논리적으로 구현해 실재하는 것처럼 보이게 한다. 가상 머신으로 작업하면, 가상머신만의 Hardware에 따로 작업 내용이 기록되는 것처럼 보이지만, 그렇지 않고, 해당 가상 머신이 올라가 있는 물리적 컴퓨터의 HardWare 자원 중 할당 받은 일부 공간에 적히게 되는 것이다. 가상의 컴퓨터이긴 하지만, VM은 물리적 컴퓨터에서 할 수 있는 모든 작업을 90% 이상 똑같이 할 수 있다.

물리적 컴퓨터와 가상머신의 관계는 자연과 테라리움의 관계와 비슷하다.

테라리움은 나만의 작은 생태계를 만드는 취미이다. 테라리움 내에서도 생명이 나고 죽는 과정이 반복되지만, 이것은 진짜 생태계가 하나 더 만들어진 것이 아니라, 기존에 존재하던 자연의 자원 중 일부를 활용하여 진짜 생태계가 하나 더 있는 것처럼 보이게 하는 것이다.

2. 가상 머신은 왜 등장했나요? 🤷‍♂️

가상머신을 활용한 가상화 배포방식이 등장하기 전에, 서비스를 배포하던 방식인 전통적 배포방식을 예로 들어보자. 이는 우리가 사용하고 있는 컴퓨터의 환경과 일치한다. 하나의 HardWare에 하나의 OS를 설치하고 그 위에 작업해야할 어플리케이션들을 설치하는 방식이다.

이 방식에서는 여러 명의 작업자가 자신만의 계정을 가지고 있고, 이를 이용해 컴퓨터에 접속하여 작업을 한다. 이러한 방식은 다음과 같은 애로사항이 있었다.

  • 모든 어플리케이션이 하나의 HardWare를 공유하여 실행된다. 따라서 특정 어플리케이션이 CPU나 RAM을 많이 활용한다면 다른 어플리케이션의 퍼포먼스에 악영향이 간다.
  • 작업자간의 계정이 달라도 업무 내용은 공유가 된다. 따라서 다른 작업자의 작업 내용을 지우거나, 덮어쓰는 등의 행위가 가능해서 협업 시 문제가 발생할 가능성이 높다.

초창기 서비스를 만들던 IT 회사들은 위 2가지 문제 때문에 골머리를 썩혔다. 이를 개선하기 위해 고안한 해결방안은 처음부터 서로 간섭하지 못하는 환경을 만들자!였다. 이 해결방안을 실현하기 위해 VM이 등장했다.

개념에서 살펴본 바로는, VM은 가상화 컴퓨터로서 물리적 컴퓨터가 할 수 있는 작업의 90% 이상을 할 수 있었다. 이 특성을 활용해, 물리적 컴퓨터의 자원을 분할하여 여러 대의 가상 컴퓨터를 만들고, 가상 컴퓨터별로 프로그램을 따로 서비스하고 작업할 수 있도록 하는 것이다. 이에 따라

  • APP 별 독립적인 하드웨어 자원 할당: VM은 활용할 수 있는 물리적 자원을 정확히 할당 받기 때문에, APP 별로 활용할 수 있는 자원이 정해져 있다. 따라서 하나의 APP이 자원을 많이 잡아먹을 걱정을 하지 않아도 되고, 그 APP의 퍼포먼스가 다른 APP들에게 영향을 주지도 않는다.
  • APP 별 상호 독립적인 생태계 구축: APP 별로 별도의 생태계가 구축되기 때문에, 작업자별로 다른 사람의 작업에 악영향을 가게할 일이 없다. ➜ 협업 시 업무 효율을 높인다.

잠깐! HyperVisor는 뭔가요? 🤔

하이퍼 바이저는 물리적 컴퓨터 위에서 여러 대의 가상머신을 생성하고 관리하는 가상화 소프트웨어이다. 역할은 다음과 같다.

  • VM 생성, 삭제, 실행, 중지
  • 물리적 하드웨어 가상화: 각 VM은 자신만의 CPU, 메모리, 디스크, 네트워크가 실재한다고 인식하지만 실제로는 존재하지 않으며, 하이퍼 바이저가 물리적인 하드웨어를 분할하여 VM만의 논리적 하드웨어와 연결시키는 것이다. 이 작업을 물리적 하드웨어의 가상화라고 한다.
  • 자원 관리 및 분배: 각 VM 별로 물리적 하드웨어를 얼마나 활용할지 설정하는 역할을 한다. 만약 CPU 코어가 8개, VM이 4개라면 각 VM 별로 2개씩 할당하는 등의 작업을 하는 것이다.

하이퍼바이저의 종류에는 2개가 있다.

  • Type 1: 물리적 하드웨어 위에 직접 설치되는 것이다. 위에 나타난 그림이 바로 이 Type 1에 해당한다고 볼 수 있다.
  • Type 2: 기존에 사용하고 있던 운영체제 위에 설치되는 것이다. 그러니까 Hardware -> OS -> Hypervisor 순이고 그 위에 가상머신 여러 대가 설치될 것이다.

3. 가상 머신은 어떻게 실현되나요? 🔍

하이퍼바이저를 하드웨어 위에 설치하고, 하이퍼 바이저라는 소프트웨어를 활용해서 가상 머신을 생성, 삭제 및 관리하면 된다. 하이퍼바이저가 물리적 자원의 가상화, 각 VM 별 I/O 요청 관리, VM 별 자원 할당 및 관리, VM 별 보안 모두 신경써준다.

'CS & IT trend > 기타' 카테고리의 다른 글

2진수 10진수 변환  (0) 2022.11.17
1. AI란 무엇인가?  (0) 2022.11.17