ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [가상화] 가상화 종류 및 구조
    CS 응용 지식 2023. 9. 18. 11:29

    서론

    작년 이맘때쯤 회사에서 정리한 글을 가져왔다.
    가상화를 공부하면서 VM과 Container의 차이에 대해 간략하게 정리한 내용이다.

    사실은 미완이다.
    중간 중간 깨진 사진들도 있고...
    이 개념도 정리해야지, 저 개념도 정리해야지 하면서 자료를 찾아보다가 점점 방대해져서 중간에 정리를 그만뒀다.

     


    목차

       


      1. 가상화(Virtualization)란?

      1.1. 정의

      컴퓨터 리소스의 추상화

      물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호 작용하는 방식으로부터 감추는 기술 (위키피디아)

      cf.)
      시뮬레이션(Simulation): 내부 동작 과정까지 구현하지 않고 외부 동작만 재현하는 것
      에뮬레이션(Emulation): Host 머신에 존재하지 않는 하드웨어 및 아키텍처 등 내부 동작까지 재현하는 것

       

      1.2. 종류 및 예시

       

       

      2. Hardware 수준의 가상화

      2.1. Type 1 Hypervisor (Native/Baremetal Hypervisor) vs Type 2 Hypervisor (Hosted Hypervisor)

      2.1.1. Type 1 Hypervisor (Native/Baremetal Hypervisor)

      Host의 물리적 하드웨어에서 직접 실행되는 하이퍼바이저이다.

      • Hyper-V: 윈도우에서 지원하는 가상화 기술
      • KVM(Kernel-based Virtual Machine): 리눅스에서 지원하는 가상화 기술, 커널 기반 가상 머신. 리눅스를 Type 1 하이퍼바이저로 전환, 같은 종류의 CPU 아키텍처만 가상화 가능
      • VMware ESXi

       

      2.1.2. Type 2 Hypervisor (Hosted Hypervisor)

      Host OS의 위에서 실행되는 하이퍼바이저이다.
      호스트 OS를 거쳐 실행되므로 Type 1 하이퍼바이저보다 느리다.

      • QEMU: 에뮬레이션 가능
      • Virtualbox

       

       

      2.2. 전가상화(Full Virtualization) vs 반가상화(Paravirtualization)

      2.2.1. 전가상화(Full Virtualization)

      • 게스트 OS나 커널이 수정되지 않음
      • 게스트 OS는 하드웨어를 요청하는 명령어를 그대로 사용하고 Hypervisor가 이를 처리함
      • 반가상화에 비해 속도가 느림

       

      2.2.2. 반가상화(Paravirtualization)

      • 반가상화는 게스트 OS가 수정된 커널을 사용
      • 게스트 OS는 수정된 명령어(Hypercall)로 Hypervisor에 직접 요청함
      • 전가상화에 비해 속도가 빠름

       

      2.2.3. 표로 정리

       

       

      3. OS 수준의 가상화

      • 애플리케이션 컨테이너: Docker
      • 커널 관련
        • chroot: 루트 디렉토리 격리
        • namespaces: 커널에서 제공하는 프로세스 별 리소스 분리 기능
      • 오케스트레이션: Amazon ECS(Elastic Container Service), k8s

       

       

      4. Application 수준의 가상화

      • Dalvik: 안드로이드

      cf.) JVM vs DVM, ART(Android RunTime)

       

       

      5. Network 가상화

      • OpenvSwitch
      • VXLAN

       

       

       

       Virtual Machine vs Container

      Openstack vs Docker(or k8s)

      Container: OS 수준의 가상화

      OpenShift: 오픈소스인 k8s로부터 파생된 RedHat의 유료 솔루션으로 추가 기능 제공

       

       

       

      VM vs Container

      VNF(Virtual Network Functions) / CNF(Container Network Functions)

      CNI

      SDN(Software Defined Network): 네트워크의 트래픽 전달 동작을 소프트웨어 기반 컨트롤러에서 제어 및 관리

      NFV(Network Functions Virtualization)

      GRE(Generic Routing Encapsulation), DOVE(Distributed Overlay Virtual Ethernet)

       

       


      참고문헌

      Native/Baremetal Hypervisor, Hosted Hypervisor (링크1링크2)
      KVM이란 무엇인가? (RedHat, 2018.03.21 작성, 2022.08.26 확인)
      하드웨어 가상화의 종류 및 차이(전가상화, 반가상화) (티스토리, 2020.09.14, 2022.08.23 확인)
      What is deifference between Full Virtualization and Paravirtualization in cloud (2019.05.17 작성, 2022.09.01 확인)
      Full Virtualization vs Paravirtualization (네이버 블로그, 2014.09.24 작성, 2022.09.01 확인)
      Full Emulation vs Full Virtualization (stackoverflow)
      Difference between JVM and DVM (GeeksforGeeks, 2020.12.29 작성, 2022.09.01 확인)
      Difference between Dalvik and ART in Android (GeeksforGeeks, 2021.04.29 작성, 2022.09.01 확인)
      VNF와 CNF의 차이점은 무엇일까요? (RedHat, 2021.05.07 작성, 2022.08.23 확인)
      Red Hat OpenShift와 쿠버네티스 비교 (RedHat, 2020.07.30 작성, 2022.09.06 확인)
      컨테이너와 VM 비교 (RedHat, 2020.01.15 작성, 2022.09.06 확인)
      What is Container? (Docker, 2022.09.06 확인)
      SDN/NFV/VNF/CNF (티스토리, 2021.07.28 작성, 2022.09.06 확인)


      개인적인 자료 정리이기 때문에 잘못된 부분이 있다면 지적해주시면 감사하겠습니다.

      댓글

    Designed by Tistory.