CS

[OS] 서버 가상화

chocoji 2024. 6. 27. 10:46

가상화(Virtualization)

컴퓨팅 리소스를 추상화시켜서
1️⃣ 하나의 물리 리소스를 여러 개의 논리 리소스처럼 기능시키거나
2️⃣ 여러 개의 물리 리소스를 하나의 논리 리소스처럼 기능하게 하는 것

 

  • (가상화를 관리하는) 소프트웨어를 사용하여 컴퓨터 하드웨어 상의 추상화 계층을 구축한다.
  • 일반적으로 물리적 머신에서 가상 머신(VM)이라는 다수의 가상 컴퓨터로 만드는 프로세스로 만들고, 각각의 VM은 자체 운영체제를 실행하며 마치 독립적인 컴퓨터인 것처럼 작동한다.
  • 물리적 컴퓨터 하드웨어를 보다 효율적으로 활용할 수 있도록 하는 프로세스

 

VM(Virtual Machine, 가상머신)

물리적 하드웨어 시스템에 구축되어 자체 CPU, 메모리, 네트워크 인터페이스 및 스토리지를 갖추고 가상 컴퓨터 시스템으로 작동하는 가상환경
  • 실제 컴퓨터의 가상 표현 또는 에뮬레이션
  • 가상 머신을 이용하면 하나의 물리적 시스템에서 각각 자체 운영 체제와 애플리케이션을 지닌 가상 머신을 만들 수 있다.
  • VM과 기본적인 실제 하드웨어 간의 조정을 위해 `하이퍼바이저`라고 하는 경량 소프트웨어 계층이 필요하다.
    • 하이퍼바이저는 실제 컴퓨팅 리소스를 각 VM에 할당한다. 서로 간에 간섭하지 않도록 VM을 각각 분리한다.

https://www.redhat.com/en/topics/virtualization/what-is-virtualization

🆚 컨테이너

  • 모두 가상화 기술을 사용하여 애플리케이션을 실행할 수 있는 환경을 제공한다.
  • 가상머신은 하이퍼바이저를 이용하여 리소스 전체를 가상화하는 방법 ➡️ 다양한 OS 사용 시 적합
  • 컨테이너는 OS 수준에서 프로세스를 컨테이너 형태로 격리하는 방법 ➡️ 경량화, 빠른 배포에 유리

 

가상화 특징

서버 통합

  • 여러 물리 서버를 관리하는 대신, 하나의 물리적 서버에서 여러 가상 머신을 실행한다.
  • 전력 및 냉각 비용, 하드웨어 비용 등을 절감할 수 있다.

리소스 효율성

  • 물리적 자원의 활용도를 극대화하여 서버의 과도한 자원 낭비를 줄일 수 있다. 

격리 및 보안

  • 각 VM은 독립적으로 동작하기 때문에 하나의 VM에서 발생한 문제가 다른 VM에 영향을 미치지 않는다.

성능 저하

  • 가상화 계층이 추가되어 약간의 성능 저하가 발생할 수 있다.

격리 및 보안

  • 가상화 인프라의 설정 및 관리가 복잡할 수 있다.

 

가상화의 유형

서버 가상화(Server Virtualization)

단일 물리 서버를 여러 대의 가상 서버로 분할하여 각각의 가상 서버가 독립적 환경에서 운영체제를 실행할 수 있도록 한다.
  • ex. VMware, Hyper-V, Xen 등

데스크톱 가상화(Desktop Virtualization)

사용자의 데스크톱 환경을 가상 머신으로 제공하여 어디서든 동일한 환경을 사용할 수 있게 한다.
  • ex. VDI, RDS 등

\

네트워크 가상화(Network Virtualization)

물리적 네트워크 자원을 논리적으로 분리하여 여러 가상 네트워크를 생성한다.
  • 특정 기능을 새로운 네트워크에 함께 패키지화한다. ➡️ 네트워크 인프라의 유연성과 관리 효율성을 높인다.
  • ex. VPN, VLAN, VXLAN 등

스토리지 가상화(Storage Virtualization)

  • 여러 물리적 데이터 스토리지를 단일 대규모 가상 스토리지 장치로 액세스 및 관리할 수 있다.
  • ex. SAN, NAS, DAS 등

 

서버 가상화

하이퍼바이저(Hypervisor)

가상화 계층을 구현하여, 가상머신과 물리적 하드웨어 간의 인터페이스 역할을 수행한다.

  • 각 가상 머신에 물리적 리소스(CPU, 메모리, 스토리지 등)를 할당하고, 이러한 가상 머신들이 물리적 하드웨어 위에서 독립적으로 운영될 수 있도록 관리한다. ➡️ `가상 머신 매니저(VMM, Virtual Machine Manager 또는 Monitor)`라고 불리기도 한다.
  • VM 위에 올라간 OS들의 명령을 하드웨어가 이해할 수 있게 하나의 명령어로 번역해 주고, 반대로 각 OS들에게 하드웨어의 리소스를 나눠주면서 조율해주는 역할을 수행한다.
  • Host OS에서 여러 가상의 Guest OS가 실행된다.
    • `Host OS`: 물리적인 하드웨어 위에서 직접 실행되는 운영체제. 가상머신을 생성하고 관리하는 역할
    • `Guest OS`: 가상 머신 내에서 실행되는 운영체제

 

하이퍼바이저형 가상화(Type1(베어 메탈) 하이퍼바이저)

하드웨어 위의 OS가 프로그램을 제어하듯 하이퍼바이저도 하드웨어 위에서 게스트 OS를 제어한다.

  • `베어메탈(Bare Metal)`: 원래 하드웨어 상에 어떤 소프트웨어도 설치되어 있지 않은 상태
    • `베어메탈 서버`는 가상화를 위한 하이퍼바이저 OS 없이 물리 서버를 그대로 제공하는 것으로, 하드웨어에 대한 직접 제어 및 OS 설정이 가능하다.
  • 하이퍼바이저가 OS에 종속되지 않고 하드웨어 위에 직접 설치되어 통신한다.
  • 별도의 `Host OS`가 없다.
  • 강력한 격리덕분에 보안 수준이 높으며, 다양한 보안 정책과 기술을 적용하기 용이하다.
  • ex. VMWare ESXi, Microsoft Hyper-V 등

 

전가상화(Full Virtualization)

하드웨어를 완전히 가상화하는 방식. Hardware Virtual Machine이라고도 불린다.

  • Guest OS가 하드웨어 자원을 요청하기 위해서는 반드시 하이퍼바이저를 거쳐야 한다. ➡️ Guest OS에서 물리 자원에 직접적으로 접근할 수 없다.
  • 하드웨어 전체를 가상화하므로 Guest OS 운영체제를 수정할 필요가 없다. ➡️ 다양한 OS를 사용할 수 있고 유지보수도 쉽다.
  • 하이퍼바이저가 모든 명령을 중재하기 때문에 오버헤드로 인해 성능 저하가 발생한다.

 

반가상화(Para-Virtualization)

하드웨어를 완전히 가상화하지 않는다.

  • 전가상화의 성능 문제를 개선하기 위한 방식
  • Guest OS는 `하이퍼 콜(Hyper Call)`이라는 인터페이스를 통해 하이퍼바이저에게 직접 요청할 수 있다.
  • 이를 위해서는 Guest OS의 일부를 수정해야만 하기 때문에, Guest OS는 리눅스와 같은 오픈소스 OS만 가능하다.

 

호스트 OS형 가상화(Type 2 하이퍼바이저)

일반적으로 사용하는 가상화 방식으로, 기존 운영체제를 사용하는 시스템에 손쉽게 VM을 구축할 수 있다.
일반 OS에다가 가상 머신용 프로그램을 설치한 것

 

  • 하이퍼바이저는 일반 프로그램과 같이 Host OS 위에 설치되며, Guest OS는 하드웨어에서 세 번째 수준으로 실행된다.
  • 기존 컴퓨터 환경에서 하이퍼바이저를 활용하므로 설치가 용이하고, 구성하기 쉽다. 
  • 가상 머신이 호스트 운영 체제와 추가적인 계층(가상화 소프트웨어)을 거쳐야 하므로, 하드웨어 리소스에 대한 접근과 성능이 직접적인 Type 1 하이퍼바이저에 비해 떨어질 수 있다.
  • ex. VMware Workstation, Oracle VirtualBox 등

 

컨테이너형 가상화

OS 수준의 가상화 기술로, 호스트 OS 위에서 여러 독립적인 컨테이너를 실행한다.

  • 각 컨테이너는 애플리케이션 실행에 필요한 라이브러리와 의존성을 포함하며, 호스트 OS와 커널을 공유한다.
  • 가상 머신과 같이 격리된 환경을 제공하지만, 가상 머신과 달리 Guest OS를 실행하지 않으므로 오버헤드가 적다/
  • 리소스 효율성이 좋고, 가볍고, 빠른 시작 시간을 제공한다.
  • ex. Docker, Kubernetes 등
📌 정리
- 하이퍼바이저 가상화: 물리적 하드웨어 위에 직접 설치되어 여러 VM를 실행하는 방식 ➡️ 고성능과 보안이 중요할 때
- 호스트os형 가상화: Host OS 위에 가상화 소프트웨어(하이퍼바이저)를 실행하여 VM를 생성하고 실행하는 방식 ➡️ 개발 및 테스트할 때
-  컨테이너형 가상화: Host OS 위에 여러 독립적인 컨테이너를 실행하는 방식 ➡️ 빠른 배포와 경량화가 중요할 

 

Ref

https://www.ibm.com/kr-ko/topics/virtualization

https://www.ibm.com/kr-ko/topics/virtual-machines

https://www.redhat.com/en/topics/virtualization/what-is-virtualization

https://worlf.tistory.com/141

https://aws.amazon.com/ko/what-is/virtualization/

https://selog.tistory.com/entry/%EA%B0%80%EC%83%81%ED%99%94-Virtualization%EA%B0%80%EC%83%81%ED%99%94-%EA%B0%9C%EB%85%90-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

https://somaz.tistory.com/178

https://nice-engineer.tistory.com/entry/%EA%B0%80%EC%83%81%ED%99%94%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-Virtualization-%EA%B0%9C%EB%85%90-%EB%B0%8F-%EC%A2%85%EB%A5%98-%EC%A0%95%EB%A6%AC

https://blog.naver.com/sharedrecord/222633834165

https://library.gabia.com/contents/infrahosting/9300/

https://suyeon96.tistory.com/52