[ 데브위키 개발자를 위한 쉬운 도커 #2 ] 하이퍼바이저 가상화

김수호·2024년 8월 6일
0
post-thumbnail

가상화 기술은 크게 하이퍼바이저 가상화컨테이너 가상화 가 있다.

이번 내용에서는 하이퍼바이저 가상화에 대해서 알아보자.

하이퍼바이저 가상화

  • 전통적인 가상화 기술이다.
  • 하이퍼바이저는 단일 하드웨어에서 여러 다른 가상 머신을 호스팅할 수 있는 프로그램이다.
  • 하이퍼바이저는 특정 제품이 아닌 기술의 종류이므로, 하이퍼바이저 역할을 수행하는 VirtualBox, VMware, RHEV 등 다양한 소프트웨어들이 존재한다.
    • 우리는 가상화 기술을 사용하기 위해 다양한 회사의 하이퍼바이저 제품을 활용한다.
    • VirtualBox 는 오픈소스이기 때문에, 테스트나 학습 환경에서 많이 사용되는 하이퍼바이저이다.
    • 기업에서는 일반적으로 VMwareRHEV 를 많이 사용한다.
  • 하이퍼바이저를 사용해서 가상 OS를 만들거나, 가상 OS를 실행시키고 종료할 수 있다.
    • 위 그림을 보면, 하이퍼바이저에서 가상환경1, 가상환경2, 가상환경3을 만들었고, 가상환경1과 가상환경2만 실행한 상태이다.
      • 가상환경은 일반적인 프로그램과 비슷하다. 가상환경을 만들때마다 프로그램을 설치하는 것 처럼 디스크 공간을 차지한다.
      • 가상환경을 실행하면, 프로그램을 실행시키는 것과 마찬가지로, 사용자가 지정한 만큼의 CPU와 메모리를 사용한다.
      • 위 그림을 보면 가상환경3은 아직 실행되지 않고있다. 실행 전에는 저장 용량만 차지하고 있다가, 하이퍼바이저에서 실행 버튼을 클릭하면, 환경이 실행되면서 CPU와 메모리를 사용한다.
    • 용어 정리
      • 물리적인 서버에 설치된 OS: 호스트 OS(Host OS)
      • 가상 머신(가상 환경)에 설치된 OS: 게스트 OS(Guest OS) ( 경우에 따라 인스턴스라고 부른다. )
      • 엔터프라이즈 운영 환경에서는 물리적인 서버에 호스트 OS를 설치하고, 가상화를 사용하기 위해서 하이퍼바이저를 설치한 다음에, 가상 머신을 만들어서 게스트 OS를 실행하고, 게스트 OS에서 실제 실행을 원하는 프로세스를 운영한다.

 

하이퍼바이저 가상화 동작 원리

  • 참고)
    • 프로세스는 정상적으로 실행되기 위해서 CPU나 메모리같은 리소스를 사용해야 한다.
    • 프로세스가 하드웨어를 사용하기 위해서는 OS를 통해서만 사용할 수 있다.
    • OS는 하드웨어를 사용하기 위해서, 커널이라는 중요한 도구가 설치되어 있다.
      • 일반적인 프로그램인 웹 브라우저나 문서 편집 프로그램을 실행할 때도, 실행되어 있는 프로세스들은 OS의 커널에게 하드웨어 리소스를 요청한다.
      • 이렇게 커널이라는 중간 다리를 거쳐서 요청이 가는 이유는, 하드웨어의 리소스를 사용하는 것은 아주 복잡하고 조심히 다뤄야 하기 때문이다.
      • 그래서 커널은 하드웨어에 이 사용 요청을 대신 전달해주는 시스템 콜(System Call)이라는 표준을 정해놓았다. (중요한 업무를 처리하는 소통 창구를 따로 만들어 놓은 것이다.)
        • 따라서 프로세스들은 커널에 시스템 콜을 보내서, 하드웨어의 자원을 사용할 수 있다.
    • OS는 대표적으로 Window, Linux, macOS 가 있다. 그리고 각각의 OS는 다른 종류의 커널을 사용한다. 그렇기 때문에 시스템 콜(System Call)도 다르다.
      • 따라서 위 그림의 3개의 OS는 마치 대화가 전혀 불가능한 외국인 3명이 모인 것과 똑같다.
      • 여기서, 가상화 기술을 사용해서 윈도우 호스트 OS에서, (게스트 OS로) macOS나 리눅스를 실행해야 한다고 가정해보자.
        • 게스트 OS의 커널은, 실제로 물리적인 하드웨어가 없기 때문에, 리소스를 사용하려면 호스트OS의 커널로 리소스 사용을 요청해야 한다.
        • 하지만 위와 같이 호스트 OS와 게스트 OS의 종류가 다르면, 이 호스트 OS는 게스트 OS에서 전달받은 시스템 콜을 처리할 수 없다.
        • 여기서 하이퍼바이저가 바로 다른 커널 간의 언어를 통역해주는 통역가 역할을 수행한다.
        • 그래서 하이퍼바이저를 사용하면 격리된 공간을 만들면서, 호스트 OS와 다른 종류의 게스트 OS도 사용할 수 있게 되는 것이다.

 

✔️ 참고

  • 윈도우 환경에서 리눅스 가상머신을 실행하기 위해서 VirtualBox 를 사용한 실습 참고
    • 윈도우 OS에서 리눅스 가상머신을 실행한 것을 확인할 수 있다.

 

이번 내용에서는 하이퍼바이저 가상화에 대해서 알아보았다.

다음 내용에서는 컨테이너 가상화에 대해서 알아보자.


강의를 듣고 정리한 글입니다. 코드와 그림 등의 출처는 데브위키 강사님께 있습니다.
( https://inf.run/Apgvc )

profile
현실에서 한 발자국

0개의 댓글