검수요청.png검수요청.png

"가상머신"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
잔글 (같이 보기)
49번째 줄: 49번째 줄:
 
* [[자바 가상머신]](JVM)
 
* [[자바 가상머신]](JVM)
  
{{하드웨어|토막글}}
+
{{하드웨어|검토 필요}}
  
 
[[분류:컴퓨터]]
 
[[분류:컴퓨터]]
 
[[분류:프로그램]]
 
[[분류:프로그램]]

2021년 1월 26일 (화) 21:11 판

가상머신(VM, virtual machine)이란 실재하는 컴퓨터상에 가상으로 컴퓨터를 구동시키는 것이다. 물리적인 하드웨어를 가상화하여, 하나의 하드웨어에서 여러 대의 컴퓨터가 구동되는 것처럼 에뮬레이션 하는 것이다.[1] 가상기계 또는 브이엠(VM)이라고도 한다.

개요

가상머신은 소프트웨어를 이용하여 특정한 컴퓨터 시스템을 에뮬레이션한 것을 말한다. 에뮬레이션(emulation)이라는 소프트웨어 기술을 사용하여, 하나의 컴퓨터가 다른 기종의 컴퓨터와 동일한 방식으로 작동하는 것처럼 보이도록 만드는 것을 말한다. 가상머신 기술을 이용하면 하나의 물리적 하드웨어(H/W) 시스템 위에 다수의 가상 환경을 구성하여, 복수의 운영체제(OS)나 시스템을 운영할 수 있다. 자바 가상머신JVM(=Java Virtual Machine)이라고 한다.

특징

이전에는 중앙 처리 장치(CPU), 메모리 등의 한계로 가상 머신이 특별한 경우에만 사용되었지만, 시간이 갈수록 컴퓨터 사양이 높아져, 서버와 개인용 데스크톱에서 사용하는 경우도 많아졌다. 현재는 서버용 운영체제에 거의 필수적으로 가상화 기술이 포함되어 있다.[1] 가상머신의 중요한 특징은 내부에서 작동하는 소프트웨어가 가상머신이 정해놓은 환경과 자원에 대한 제약을 받아서 결국 가상 세계를 벗어날 수 없다는 것이다.

장점

가상 머신은 호환성이 높아 일반적인 컴퓨터처럼 작동하기 때문에, 기존 PC 또는 서버에서 하던 작업들을 그대로 할 수 있다. 그렇지만 가상 머신은 격리성을 띄고 있어 컴퓨터와는 엄연히 다르기 때문에, 하나의 가상 머신이 바이러스에 감염되더라도 다른 곳에는 피해가 가지 않는다. 한 번 구성된 가상머신은 캡슐화를 통해 복제되어 여러 컴퓨터 또는 하나의 컴퓨터에서도 여러 개로 복제하여 슬 수 있다. 이는 컴퓨터에 운영체제를 다시 설치할 필요를 줄여준다. 가상머신은 여러 종류의 하드웨어에서 사용하더라도 문제가 없기 때문에, 다양한 환경에서 사용된다. 일반적인 데스크톱 환경은 가상 머신의 격리성과 캡슐화의 큰 도움을 받을 수 있다. 새로운 프로그램이나, 금융 관련 프로그램을 설치하여 어떤 문제가 생길지 모를 경우, 가상머신을 사용하면 그런 위험에서 벗어날 수 있다. 서버환경에서는 앞에서 언급한 모든 장점을 사용할 수 있다. 기존 하드웨어에 구동되던 운영체제를 그대로 가상 머신으로 바꾸어 구동할 수 있고, 하나의 서버에 여러 가상 머신을 구동하여 하나의 하드웨어를 여러 서버로 구동시킬 수도 있다. 이러한 점들을 이용하여, 하드웨어에 영향을 받지 않고 서버를 쉽게 늘리거나 줄이고, 문제가 발생하였을 때 가상 머신을 손쉽게 복제하거나 수정하는 것으로 서버 환경을 관리할 수 있다는 장점을 갖고 있다. [1] 하나의 컴퓨터에서 여러 개의 가상 머신을 사용할 수 있기 때문에, 물리적 하드웨어 시스템에 대한 요구가 줄어 비용이 절감된다. 비슷한 맥락으로, 하드웨어를 보다 효율적으로 사용할 수 있고, 하드웨어 유지, 보수비용이 절감되고, 전력, 냉각의 수요가 감소한다. 가상화 하드웨어에는 장애가 발생하지 않기 때문에, 관리자는 가상 환경을 활용하여 백업, 재해복구(DR), 새로운 시스템 구축 및 기본 시스템 관리 작업을 간소화하여 수행할 수 있다.

단점

  • 하나의 하드웨어의 중단으로 인해서 자원이 과도하게 사용되거나 여러 가상머신(VM)에서 운영이 중단되는 등 통합에 따른 위험이 존재한다.

종류

가상머신은 시스템 가상머신과 프로세스 가상머신으로 나뉜다.

시스템 가상머신

시스템 가상머신(system virtual machine)은 각 운영체제를 실행하는 가상머신 사이의 기초가 되는 물리 컴퓨터를 다중화한다. 가상화를 제공하는 소프트웨어 계층은 가상머신 모니터 또는 하이퍼바이저라고 한다. 하이퍼바이저는 하드웨어 또는 호스트 운영 체제 위에서 실행할 수 있고 여러 가지 운영체제를 제공하기 위해서 멀티부팅의 어려움을 겪지 않아도 되고 각각은 서로 독립되어 있어서 서로 영향을 미치지 않는다. 또한 시스템 가상머신은 완전한 운영체제(OS) 실행을 지원한다.

프로세스 가상머신

프로세스 가상머신(process virtual machine)은 운영체제 안에서 일반 응용 프로그램을 구동하고 단일 프로세스를 지원한다. 프로세스가 시작하고, 끝내기되어 파괴될 때 만들어진다. 목적은 어떤 플랫폼에서나 동일한 방식으로 실행되는 프로그램을 허용하고, 기초가 되는 하드웨어나 운영체제의 상세한 부분을 가져오는 독립 프로그래밍 환경을 제공하기 위함이다. 또한 프로세스 가상머신은 하나의 단일 프로세스를 지원한다.

프로그램

VMware, Virtualbox, Parallels, Microsoft Virtual PC(가상 머신 또는 가상화를 제공하는 소프트웨어)

활용

가상머신은 자바 등 다양한 프로그래밍 언어와 블록체인 기반의 암호화폐 플랫폼에서 활용되고 있다.

비교

컨테이너

컨테이너화를 이끄는 두 가지 주도적인 힘은 컨테이너 가동에 널리 사용되는 툴인 도커, 그리고 여러 컨테이너를 관리하는 데 도움이 되는 구글 쿠버네티스다. 컨테이너는 호스트 OS의 커널을 공유하는 독립적인 코드 실행 환경이다. 컨테이너는 중복 게스트 OS 및 관련 시작 오버헤드를 건너뛰므로 가상머신에 비해 더 능률적이고 가볍다. 개발자는 동일한 하드웨어에서 가상머신에 비해 6~8배 더 많은 컨테이너를 실행할 수 있다. 컨테이너에도 단점은 있다. 비교적 새로운 접근 방법이므로 성숙한 기술에서 흔히 볼 수 있는 풍부한 관리 툴이 없고 따라서 설정과 유지보수 작업이 많이 필요하다. 또한 보안에 대한 우려도 있다. 가상머신에서는 게스트 이미지를 사용해서 호스트에서 호스트로 손쉽게 워크로드를 옮길 수 있지만 베어 메탈은 업그레이드와 이동이 더 어렵다. 베어 메탈 서버에서는 머신 상태 롤백이 쉽지 않은 일이다.

서버리스 컴퓨팅

전통적인 IaaS 클라우드 환경에서 고객은 먼저 가상머신, 스토리지, 데이터베이스, 관련 보안 및 관리 툴을 프로비저닝한 다음 가상머신에 애플리케이션을 로드한다. 서버리스 컴퓨팅에서는 개발자가 코드를 쓰고 클라우드 서비스 제공업체가 나머지 모든 부분을 처리한다. 개발자는 서버, 운영체제, 프로비저닝 또는 관리에 대해 생각할 필요가 없다. 물론 코드를 실행하는 실제 서버가 있지만 이는 클라우드 서비스 제공업체의 책임이다. 모놀리식 애플리케이션 대신 코드는 구체적인 함수로 세분화된다. 그 함수를 트리거하는 이벤트가 발생하면 서버리스 서비스(아마존 람다(Lambda) 등)가 함수를 실행한다. 서버리스 제공업체는 함수별로 고객에게 비용을 청구한다. 마이크로서비스/컨테이너 시나리오와 마찬가지로, 서버리스 컴퓨팅은 가상머신 계층을 건너뛰며 함수는 베어 메탈에서 실행된다. 현재 시점에서 서버리스 컴퓨팅은 비교적 미성숙한 기술이며 사용 사례도 제한적이다.[2]

각주

  1. 1.0 1.1 1.2 Namu(南無), 〈가상 머신이란 무엇인가, 그 장점이 무엇이길래?〉, 《시사공작소》, 2013-01-18
  2. Neal Weinberg , 〈서버 가상화의 미래 : 컨테이너 및 서버리스 비교 진단〉, 《아이티월드》, 2018-07-13

참고자료

같이 보기


  검수요청.png검수요청.png 이 가상머신 문서는 하드웨어에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.