본문 바로가기
[Cloud & Infrastructure]/[Docker]

[Docker] Virtualization(가상화)란?

by 코드몽규 2022. 3. 3.
반응형

가상화란

 가상화는 소프트웨어를 사용하여 프로세서, 메모리, 스토리지 등과 같은 단일 컴퓨터의 하드웨어 요소를 일반적으로 가상 머신(VM)이라고 하는 다수의 가상 컴퓨터로 분할할 수 있도록 해주는 컴퓨터 하드웨어 상의 추상화 계층을 구축합니다. 실제 기반 컴퓨터 하드웨어의 단지 일부에서만 실행됨에도 불구하고, 각각의 VM은 자체 운영체제(OS)를 실행하며 마치 독립적인 컴퓨터인 것처럼 작동합니다.

가상화의 작동 원리


가상화의 작동방식

 

[가상화란]

 

 


가상화의 장점 

  • 리소스 효율성 : 가상화 이전에 각각의 애플리케이션 서버에서는 자체 전용의 물리적 CPU가 필요했습니다. 또한 실행하고자 하는 애플리케이션마다 별도의 서버를 구매하여 각각 따로 구성해야 했습니다. (IT 직원은 신뢰성 문제 때문에 컴퓨터마다 1개의 애플리케이션과 1개의 운영체제(OS)를 두고자 했습니다.) 따라서 언제나 각각의 물리적인 서버는 효율적이게 사용될 수 없었습니다. 이에 반해, 서버 가상화를 사용하면 신뢰성은 그대로 유지하면서도 단일한 물리적 컴퓨터(일반적으로 x86 서버) 상에서 가상 환경의 OS를 통해 각각 다수의 애플리케이션을 실행할 수 있습니다. 따라서 물리적 하드웨어의 컴퓨팅의 리소스를 최대한 활용할 수 있다는 장점이 있습니다.

 

  • 관리 편의성(서버 및 응용 프로그램 관리 간소화) : 관리자는 가상화 서버의 리소스를 대시보드를 통해 손쉽게 확인할 수 있습니다. CPU, Memory, 저장소 사용 가능 용량, VM등을 한눈에 쉽게 파악할 수 있어 기존의 사용 서버들을 일일이 확인하는 것보다 쉽게 관리할 수 있게 되었습니다.

 

  • 가동시간 및 가용성 향상 : 하드웨어 장애가 일어났을 때 HA나 FT기능을 활용하여 물리적 서버간에 가상 서버(VM)들을 원활하게 이동하여 가동 중지 시간을 최소화시킬 수 있습니다.

 

  • 재해 복구 및 비즈니스 연속성 구현 : 가상화 환경에서는 얘기가 달라집니다. 가상 서버(VM) 이미지 백업이 되고 있는 상황이라면, 클릭 몇 번으로 백업이 된 시점으로 복원이 가능합니다. 또한 가상화 서버가 장애인 상황이면 가동되고 있는 나머지 서버에서 서비스를 하고 장애 서버 조치를 한 뒤 정상화 시키면 서비스 중단 없이 장애조치가 가능합니다. VMware를 예로 들자면 호스트 장애 혹은 VM장애 발생 시 VM을 다른 호스트에서 자동 재 시작함으로써 효과적인 고가용성을 보장한다고 합니다.

 

  • 프로비저닝 고속화: 각 애플리케이션의 하드웨어를 구매, 설치 및 구성하려면 많은 시간이 필요합니다. 하드웨어가 이미 배치되어 있다면, 모든 애플리케이션을 실행하기 위한 가상 머신의 프로비저닝이 훨씬 빨라집니다. 관리 소프트웨어를 사용하여 이를 자동화하고, 기존 워크플로우에 이를 빌드할 수도 있습니다.


하이퍼바이저(the Hypervisor)

- VMM(Virtual Machine Monitor, or Manager)라고도 불려진다.
  하이퍼바이저는 여러 개의 OS가 단일 하드웨어 호스트를 공유할 수 있도록 하는 프로그램이다.
각 OS는 호스트의 프로세서, 메모리 및 기타 자원들을 모두 스스로 나타낸다. 하이퍼바이저의 역할은 높은 수준의 관리 및 모니터링 도구에 대한 인터페이스를 제공하는 것 이외에, OS 간 서로를 방해하지 못하도록 VM에 대한 자원 및 메모리 할당 등을 처리하는 것이다.
  • 호스트 시스템에서 다수의 게스트 OS를 구동할 수 있게 하는 소프트웨어.
  • 하드웨어를 가상화하면서 하드웨어와 각각의 VM을 모니터링하는 중간 관리자. VMM(Virtual Machine Monitor)이라고도 불림.

 

하이퍼바이저의 유형

하이퍼바이저의 유형

 

Type 1 (Bare-metal기반)

Type 1 하이퍼바이저는(Native or Bare-Metal)

하드웨어 제어 및 Guest OS 모니터로 호스트의 하드웨어에서 직접 실행하는 소프트웨어 시스템이다.

 

 

 

Type 2 (Host기반)

Type 2 하이퍼바이저는(Hosted) 기존의 OS 환경에서 실행되는 소프트웨어 응용 프로그램이다. 

 

 

하이퍼 바이저 정리

  하이퍼바이저 라는 소프트웨어가 물리 리소스를 필요로 하는 가상 환경으로부터 물리 리소스를 분리합니다. 하이퍼바이저는 노트북 등의 운영 체제에 배포하거나 서버 등의 하드웨어에 직접 설치할 수 있으며 대부분의 기업들은 이러한 방식으로 가상화합니다. 하이퍼바이저가 물리 리소스를 분할하여 가상 환경에서 사용할 수 있도록 합니다.

  리소스는 필요에 따라 물리 환경에서 여러 가상 환경으로 파티셔닝 됩니다. 사용자가 가상 환경(일반적으로 게스트 머신 또는 가상 머신이라고 함)과 상호 작용하고 가상 환경 내에서 계산을 실행합니다. 가상 머신은 단일 데이터 파일처럼 작동합니다. 디지털 파일과 같이 한 컴퓨터에서 다른 컴퓨터로 이동할 수 있고 어느 쪽 컴퓨터에서든 열어 동일하게 작동할 수 있습니다.

  가상 환경이 실행 중이고 사용자 또는 프로그램이 물리 환경에서 추가 리소스를 요구하는 명령을 내리면 하이퍼바이저가 그 요청을 물리 시스템에 전달하고 변경사항을 캐시 합니다. 이 모든 작업은 네이티브 속도에 가깝게 이루어집니다.(특히 요청이 커널 기반 가상 머신(KVM)상에서 오픈소스 하이버파이저를 통해 전송되는 경우).

출처: RedHat

가상화의 유형

  지금까지는 서버 가상화에 대해 설명했지만, 다른 많은 IT 인프라 요소들 역시 가상화를 사용할 수 있다.

  • 데스크톱 가상화
  • 네트워크 가상화
  • 스토리지 가상화
  • 데이터 가상화
  • 애플리케이션 가상화
  • 데이터 센터 가상화
  • CPU 가상화
  • GPU 가상화
  • Linux 가상화
  • 클라우드 가상화

데스크톱 가상화

데스크탑데스크톱 가상화를 사용하면 동일 컴퓨터의 자체 VM에서 각각 다수의 데스크톱 운영체제를 실행할 수 있습니다.

두 가지 유형의 데스크탑 가상화가 존재합니다.

  • 가상 데스크탑 인프라(VDI)는 중앙 서버의 VM에서 다수의 데스크톱을 실행하며, 씬 클라이언트 디바이스에서 로그인한 사용자에게 이를 스트리밍 합니다. 이러한 방식으로, VDI는 기업이 디바이스에 OS를 설치하지 않고도 디바이스에서 다양한 OS에 액세스 할 수 있는 권한을 자체 사용자에게 제공할 수 있도록 합니다. 보다 자세한 설명은 "가상 데스크탑 인프라(VDI)의 정의"를 참조하세요.
  • 로컬 데스크탑 가상화는 로컬 컴퓨터에서 하이퍼바이저를 실행함으로써, 사용자가 해당 컴퓨터에서 하나 이상의 추가적인 OS를 실행함은 물론 기본 OS에 대한 변경 없이도 필요시에 한 OS에서 다른 OS로 전환할 수 있도록 허용합니다.

가상 데스크탑에 대한 자세한 정보는 "DaaS(Desktop-as-a-Service)를 참조하세요.

네트워크 가상화

네트워크 가상화는 소프트웨어를 사용하여 관리자가 단일 콘솔에서 네트워크를 관리하기 위해 사용할 수 있는 네트워크에 대한 "뷰"를 구축합니다. 이는 하드웨어 요소와 기능들(예: 연결, 스위치, 라우터 등)을 추상화하며, 이를 하이퍼바이저에서 실행 중인 소프트웨어로 추상화합니다. 네트워크 관리자는 기반 물리적 컴포넌트를 전혀 건드리지 않고도 이러한 요소들을 수정 및 제어할 수 있으며, 이를 통해 네트워크 관리가 엄청나게 간소화됩니다.

네트워크 가상화의 유형에는 네트워크 트래픽 라우팅("제어 플레인"이라고 함)을 제어하는 하드웨어를 가상화하는 소프트웨어 정의형 네트워킹(SDN)이 포함되어 있습니다. 또한 네트워크 기능 가상화(NFV)도 함께 포함되어 있으며, 이는 특정 네트워크 기능(예: 방화벽, 로드 밸런서 또는 트래픽 분석기)을 제공하는 하나 이상의 하드웨어 어플라이언스를 가상화함으로써 해당 어플라이언스의 구성, 프로비저닝 및 관리가 보다 간편해집니다.

스토리지 가상화

스토리지 가상화를 사용하면, 개별 서버에 혹은 독립형 스토리지 유닛에 설치되었는지 여부와 무관하게 네트워크의 모든 스토리지 디바이스를 단일 스토리지 디바이스로서 액세스 및 관리할 수 있습니다. 특히, 스토리지 가상화는 모든 스토리지 블록을 단일한 공유 풀로 통합하며, 이로부터 해당 스토리지는 필요시에 네트워크의 임의의 VM에 지정될 수 있습니다. 스토리지 가상화를 이용하면 VM의 스토리지를 보다 손쉽게 프로비저닝 할 수 있으며, 네트워크의 모든 가용 스토리지를 최대한으로 이용할 수 있습니다.

스토리지 가상화에 대해 보다 자세히 알아보려면 "클라우드 스토리지의 정의"를 참조하세요.

데이터 가상화

오늘날의 기업들은 클라우드에서부터 온프레미스 하드웨어와 소프트웨어 시스템에 이르기까지, 다수의 위치에서 다수의 파일 형식을 사용하여 다수의 애플리케이션의 데이터를 저장합니다. 데이터 가상화를 사용하면 애플리케이션이 소스, 형식 또는 위치에 상관없이 해당 데이터 모두에 액세스할 수 있습니다.

데이터 가상화 툴은 데이터에 액세스하는 애플리케이션과 이를 저장하는 시스템 간의 소프트웨어 계층을 구축합니다. 계층은 필요시에 애플리케이션의 데이터 요청이나 쿼리를 변환하며, 여러 시스템에 관여될 수 있는 결과를 리턴합니다. 데이터 가상화는 기타 통합 유형이 실현 가능하지 않거나, 바람직하지 않거나 혹은 허용되지 않을 경우 데이터 사일로를 중단하는 데 도움이 될 수 있습니다.

애플리케이션 가상화

애플리케이션 가상화는 사용자의 OS에 직접 설치하지 않고도 애플리케이션 소프트웨어를 실행합니다. 애플리케이션만 가상 환경에서 실행되고 일반 사용자 디바이스의 OS는 평상시처럼 실행되므로, 이는 (위에서 언급한) 완벽한 데스크톱 가상화와는 차이가 있습니다. 세 가지 유형의 애플리케이션 가상화가 존재합니다.

  • 로컬 애플리케이션 가상화: 전체 애플리케이션이 엔드포인트 디바이스에서 실행되지만, 원시 하드웨어가 아닌 런타임 환경에서 실행됩니다.
  • 애플리케이션 스트리밍: 필요 시에 일반 사용자의 디바이스에서 실행될 수 있도록, 애플리케이션이 소프트웨어의 소형 컴포넌트를 전송하는 서버에 상주합니다.
  • 서버 기반 애플리케이션 가상화: 사용자 인터페이스만 클라이언트 디바이스에 전송하는 서버에서 애플리케이션이 전적으로 실행됩니다.

데이터 센터 가상화

데이터 센터 가상화는 대부분의 데이터 센터의 하드웨어를 소프트웨어로 추상화함으로써, 효율적으로 관리자가 단일한 물리적 데이터 센터를 서로 다른 클라이언트의 다수의 가상 데이터 센터로 분할할 수 있도록 허용합니다.

각각의 클라이언트는 동일한 기반 물리적 하드웨어에서 실행되는 자체 IaaS(Infrastructure as a Service)에 액세스 할 수 있습니다. 가상 데이터 센터는 클라우드 기반 컴퓨팅에 대한 간편한 진입로(on-ramp)를 제공함으로써, 기업이 인프라 하드웨어를 구매하지 않고도 완벽한 데이터 센터 환경을 빠르게 셋업 할 수 있도록 지원합니다.

CPU 가상화

CPU(Central Processing Unit) 가상화는 하이퍼바이저, 가상 머신 및 운영 체제를 가능하게 해주는 기반 기술입니다. 이를 이용하면 다수의 VM에서 사용할 수 있도록 하나의 CPU를 다수의 가상 CPU로 분할할 수 있습니다.

최초의 CPU 가상화는 전적으로 소프트웨어 정의형 가상화였지만, 오늘날의 많은 프로세서에는 VM 성능을 개선하는 CPU 가상화를 지원하는 확장형 명령 세트가 포함되어 있습니다.

GPU 가상화

GPU(Graphical Processing Unit)는 매우 중요한 그래픽 또는 수학적 처리를 대신 처리함으로써 전체 컴퓨팅 성능을 향상시키는 특수 멀티 코어 프로세서입니다. GPU 가상화를 사용함으로써, 다수의 VM은 보다 빠른 동영상, 인공지능(AI) 및 기타 그래픽 또는 수학 중심의 애플리케이션을 위해 단일 GPU의 프로세싱 파워 중 전부 또는 일부를 사용할 수 있습니다.

  • 패스쓰루 GPU는 단일 게스트 OS에서 전체 GPU를 사용할 수 있도록 합니다.
  • 공유 vGPU는 서버 기반 VM에서 사용할 수 있도록 다수의 가상 GPU(vGPU) 간에 물리적 GPU 코어를 분할합니다.

Linux 가상화

Linux에는 Linux 호스트 OS 내에서 x86 기반 VM을 구축할 수 있도록 Intel 및 AMD의 가상화 프로세서 확장 기능을 지원하는 커널 기반 가상 머신(KVM)이라고 하는 자체 하이퍼바이저가 포함되어 있습니다.

오픈 소스 OS인 Linux는 고급 맞춤형 기능을 보유하고 있습니다. 보다 민감한 애플리케이션의 경우, 특정 워크로드나 보안 강화형 버전에 맞게 조정된 Linux의 버전을 실행하는 VM을 구축할 수 있습니다.

클라우드 가상화

위에서 언급한 대로, 클라우드 컴퓨팅 모델은 가상화를 기반으로 합니다. 서버, 스토리지 및 기타 물리적 데이터 센터 리소스를 가상화함으로써, 클라우드 컴퓨팅 제공자는 고객들에게 다음을 포함한 다양한 서비스를 제공할 수 있습니다.

  • IaaS(Infrastructure as a Service): 해당 요구사항에 맞게 구성이 가능한 가상화된 서버, 스토리지 및 네트워크 리소스입니다.
  • PaaS(Platform as a Service): 클라우드 기반 애플리케이션과 솔루션의 구축에 사용할 수 있는 가상화된 개발 툴, 데이터베이스 및 기타 클라우드 기반 서비스입니다.
  • SaaS(Software as a service): 클라우드에서 사용되는 소프트웨어 애플리케이션입니다. SaaS는 하드웨어에서 대부분 추상화된 클라우드 기반 서비스입니다.

 

출처: IBM

 


 

 오늘은 가상화의 개념과, 작동원리 (하이퍼바이저) , 유형에 대해 알아보았다.

아마 이 글을 읽고 접하시는 분들은 '가상화'만 궁금하시진 않을 것이다. 

정확히는 '가상화'와 '컨테이너'의 차이점에대해 더 궁금해하실 거 같다.

 

물론 나 또한 그점이 궁금해서 가상화에 대해 정리한 것이다. 

 

다음 포스팅에서는 가상화와 컨테이너의 차이점에 대해서 공부해보자!

반응형

댓글