[기술] 가상화(Virtualization)란?
Programming

[기술] 가상화(Virtualization)란?

728x90

가상의 캐리어

가상화(Virtualization)란?

하나의 물리적 서버에서 여러 운영체제와 애플리케이션을 실행할 수 있도록 하는 소프트웨어 기술입니다. 

 

여러분은 만약 이런 상황에서 어떻게 하실건가요?

 

내부가 파란색인 락커와 빨간색인 락커가 있습니다. 그리고 물건이 여러가지가 있는데 파란물건은 내부가 파란색일때만 들어갈 수 있고 빨간물건도 내부가 빨간색일때만 들어갈 수 있습니다. 현재 빨간색 락커는 꽉찼는데 파란색 락커는 20%정도 밖에 안찼네요. 이런.. 빨간색 물건을 더 넣어야하는데.. 새로운 빨간색 락커를 빌려야할까요..? 파란색 락커를 반으로 나누고 반만 내부를 빨간색으로 칠해버리면 안될까요? 

 

비유가 와닿을지는 모르겠지만... ㅠㅡㅜ 이게 바로 가상화(Virtualization)가 각광받기 시작한 이유입니다. 위에서 색깔은 OS 그리고 물건은 특정 OS에 종속적인 애플리케이션이라고 보시면 될 것 같습니다!


개요

위의 비유처럼 가상화가 본격적으로 쓰이기전에는 일반적으로 하나의 물리적인 서버에서 1개의 OS, 1개의 task를 동작시켰습니다. 이렇게 된다면 모든 애플리케이션/프로그램은 독립적이고 서로에게 영향을 최소화할 수 있게되어 안정성이 높기 때문이죠. 또한 만약 Task가 서로 다른 OS에 종속적이라면 같은 서버에서 실행시킬 수가 없었겠죠.

하지만 하나의 서버에서 사용되는 리소스가 30% 이내이다보니, 따지고 보면 남은 리소스가 충분한데도 새로운 Task를 위해 새로운 서버를 열어야하고, 새로운 물리적인 서버가 생기면 냉각 및 유지관리 비용이 높아지는 현상이 생겼습니다. 역시 돈을 낭비하면 안되죠. 따라서 가상화를 사용하여 하나의 물리적인 서버를 2개의 고유한 서버처럼 동작하도록 분할해서 독립적인 Task를 처리하여 서버를 효율적으로 사용하는 방식이 쓰이기 시작했습니다.


가상화 기술의 역사

가상화라는 용어는 1960년대부터 등장한 오래된 개념이지만, 실질적으로 상용화가 되기 시작한건 2000년대부터 입니다. 이 가상화의 핵심기술로 쓰인것이 바로 하이퍼바이저 입니다. 

하이퍼바이저(Hypervisor)는 가상머신(Virtual Machine - VM)을 생성하고 구동하는 소프트웨어입니다. Virtual Machine Monitor - VMM 이라고도 불리는 하이퍼바이저는 운영체제와 가성머신의 리소스를 분리해서 VM의 생성과 관리를 지원합니다. 아까 위에서 설명했던 역할을 해줄 수 있는 것이죠.
하이퍼바이저로 사용되는 물리 하드웨어를 Host라고 하고, 리소스를 사용하는 여러 VM을 Guest라고 합니다.

처음 가상화 개념이 도입되었을때는 여러 사용자가 단일머신에서 작업할 수 있게 해주는 솔루션은 인기를 얻었지만, 실질적으로 물리적인 하드웨어를 가상화시키는 VM은 빛을 보지 못했습니다. 하지만 시간이 지나 1990년대에는 대부분의 기업이 물리 서버와 단일vendor IT 스택을 사용하고 있었기때문에 (특정 vendor와 OS에 종속되었다는 뜻이겠죠!) 다른 벤터의 하드웨어에서 레거시 애플리케이션을 실행할 수 없었습니다. 물리 하드웨어를 추가로 증설하는 방법도 있었지만, 비용이 많이 들기 때문에 가상화를 통해 이 문제를 해결할 수 있었습니다. 따라서 구매, 셋업, 유지관리와 관련된 비용이 줄어들게 되었습니다.


가상화 기술

위에서 설명한대로, 하이퍼바이저는 Host가 Guest를 여러개 만들어서 하나의 물리 하드웨어에 마치 여러개의 독립적인 하드웨어가 존재하는 것처럼 만들 수 있습니다. 어떻게 이게 가능할까요?

하이퍼바이저는 CPU, 메모리, 스토리지 등의 물리 하드웨어의 리소스를 처리하는 풀이되어서 기존 또는 새로운 VM에 리소스를 쉽게 재배치할 수 있습니다. 위 그림처럼 모든 하이퍼바이저는 모든 리소스에 대한 권한을 가지고 각 VM에 제공하고 VM 리소스의 일정을 관리합니다.


가상화 유형

하이퍼바이저가 가상화를 해서 리소스를 할당해주지만 어떤 레벨에서 가상화를 해주는지도 설정이 가능합니다. 지금부터 가상화의 유형에 대해 알아봅시다~!

 

데이터 가상화

데이터 가상화

분산되어 있는 데이터를 단일 데이터 소스로 통합하여 관리가 가능합니다. 실질적으로는 여러개의 단일 데이터가 독립적으로 존재하지만 가상화를 통해 마치 이 데이터들이 하나인것처럼 처리되게 함으로써 필요한 데이터를 필요한 형식으로 애플리케이션 또는 사용자에게 제공합니다


데스크탑 가상화

데스크탑 가상화

데스크탑 가상화는 시뮬레이션된 데스크탑 환경이 중앙관리자 (또는 자동화 관리툴)에 의해 수백 개의 물리 머신에 동시에 배포되도록 지원합니다. 즉 관리자 한명이 모든 가상의 데스트탑에서 구성, 업데이트, 보안 점검을 대규모로 수행할 수 있습니다.


서버 가상화 (운영체체 가상화 포함)

서버 가상화

서버 가상화는 하나의물리적인 서버를 여러개의 고유한 가상서버로 나누는 것입니다. 각 가상의 서버는 자체 운영 체제를 독립적으로 운용할수도 있습니다. 여기에는 3가지 유형이 있습니다.

  • 완전 가상화: 하이퍼바이저를 사용하여 물리 서버의 리소스를 사용합니다. 큰 제한사항중 하나는, 하이퍼바이저의 자체적인 처리 요구사항이 있기때문에 애플리케이션의 속도를 저하하고 서버성능에 영향을 미칠수 있다는 점입니다.
  • 반가상화: 반가상화에서는하드웨어를 완전히 가상화하지 않습니다. 완전가상화의 성능저하 문제를 해결하기 위해 HyperCall이라는 인터페이스를 통해 하이퍼바이저에게 직접 요청을 날릴 수 있습니다. 
  • OS 수준 가상화: 하이퍼바이저를 사용하지 않고 물리 서버 OS에 포함된 가상화 기능이 하이퍼바이저를 대신하여 모든 작업을 수행합니다.

오늘은 가상화에 대해 알아보았습니다! 항상 느끼는 것이지만, 원리가 복잡하고 이해가 어려울수록 우리가 사용하기에는 훨씬 간편하고 효율적이고, 원리가 쉬울수록 나중에 효율적으로 사용하기 어려운 것 같습니다.

 

오늘도 읽어주셔서 감사합니다!

 

출처:
- 가상화(Virtualization)란?
- IT 인프라 6편 가상화
- [소개] 가상화의 종류3가지
- 서버 가상화
728x90