본문 바로가기
IT_Engineer/DevOps_Cloud

[VM] Virtual Machine (가상머신) 에 대하여

by 좋은데이피치 2020. 12. 14.

분류

  • 하드웨어 가상머신 (시스템 가상머신)
  • 각 OS를 실행하는 가상 머신 사이의 기초가 되는 물리PC를 다중화하는 기법
  • 가상화를 제공하는 소프트웨어 계층 : '가상머신 모니터' or 'Hyper Visor'라고 함

장점

  • 여러 OS를 사용하는 환경은 완벽히 고립된 형태로 같은 PC 에 실행 가능
  • 가상 머신은 실제 PC가 제공되는 것과 다른 형태의 명령어 집합 구조(ISA) 제공
  • 명령어 집합구조(Instruct Set Architecture, ISA) : 마이크로 프로세서가 인식해서 기능을 이해하고 실행할 수 있는 기계어 명령어 명령어 집합 구조를 물리적으로 구현하는 방법 : 마이크로아키텍처 혹은 컴퓨터 조직

프로세스 가상 머신

  • VM은 응용 프로그램 가상머신이라고 부르며, OS 안에서 일반 응용 프로그램을 실행하고 단일 프로세스가 이를 지원하는 형태
  • 어떠한 플랫폼에서도 동일하게 실행하고자 하는 목적 + 한정된 자원의 효율적 사용
  • 고급 프로그래밍 언어로 구현되므로 해석기가 필요함

종류

  • JAVA의 인기↑ → JVM 대중화
  • 닷넷 프레임워크는 공통 언어 런타임 언어라는 가상머신을 실행

기술

  • 공통의 실질적인 HW에서의 네이티브로 실행되는 VM은 전가상화와 반가상화 2가지로 분류
  • 완전한 가상화 환경을 구축하기 위한 하이퍼바이저가 추가
  • 네이티브가 아닌 시스템 에뮬레이션의 경우, 다른 CPU를 위해 작성된 응용 SW나 OS가 동작할 수 있도록 하는 형태
  • ex) ARM 프로세서로 개발된 응용 프로그램을 X86 시스템 에뮬레이터로 실행하거나, DOS 환경에서 만들어진 응용프로그램을 현대의 PC에서 사용할 수 있도록 하는 방식

한계점

  • VM 시장 주도사(ESXi, Xen, VirtualBox, KVM)가 공통의 물리 PC를 하이퍼바이저를 통한 한정된 자원 공유 → 여러 개의 응용 애플리케이션을 운영하면서 단점 부각

 한계점 1) VM을 위한 비용 증가, 업무 효율성 저하

  • VM을 위해서 동작하는 호스트 OS는 일반적으로 사용하는 PC환경과 동일한 특성을 가짐
  • 각 애플리케이션의 사용목적에 따라 설치하는 수동적인 작업이 필수적, vm의 개수가 기하급수적으로 증가하게 되면 이를 수용하기 위한 H/W 성능이 높아지므로 비용증가에 따른 부담
  • 이를 관리하는 관리자 또한 증가하는 VM을 효율적으로 관리할 수 없으므로 업무 효율성 저하
  • 관리자의 효율성 증대를 위한 오케스트레이션 기술이 등장 (but, 초창기 오케스트레이션은 복잡성과 낮은 안전성)

 한계점 2) 동일한 VM 배포의 시간이 오래 걸림

  • 여러 app을 운영하여 하나의 시스템의 동작이 중단되는 사태가 일어나도, Fault Tolerant를 보장하기 위해 여러 app을 VM 환경에서 실행하는 것이 일반적 (Fault Tolerant (결함 감내) : 결함이 발생하여도 정상적 혹은 부분적으로 기능을 수행)
  • 같은 VM을 복제하고, 디플로이 시간이 오래걸림 (디플로이 : 프로그램 등을 서버와 같은 기기에 설치하여 작동가능하도록 만드는 일)
  • 처음부터 다시 서버를 세팅하는 경우, 각 서버의 환경설정이 100% 일치하다고 볼 수 없음

 한계점 3) 하나의 app 실행을 위해 너무 많은 자원을 사용

  • VM은 호스트 OS 위에서 특정한 app을 실행하는 구조를 채택
  • 적은 리소스를 사용하는 app이라고 가정하면, 호스트 OS가 사용하는 자원이 더 많을 경우도 있을 수 있음, 이는 app에 특화된 자원 할당을 할 수 없음을 의미

 

728x90

최근댓글

최근글