운영체제 (5) - Virtualization, Hypervisor, Container

@JHSHIN·2023년 3월 21일
0
post-thumbnail

운영체제 수업을 수강하며 정리한 내용을 작성하려고 합니다.

3/21 가상화 장점

  • 용어

    • Host: 실제 물리 컴퓨터(하드웨어), 다수의 가상화된 컴퓨터를 실행하는 underlying machine을 의미
    • Guest: Host 위 생성되는 다수의 가상 인스턴스를 의미
  • 장점

    • Consolidation(여러 대의 물리적인 서버를 하나의 가상 서버로 통합하여 사용하는 것)

      • allow efficient provisioning(효율적인 프로비저닝)
        • provisioning : 필요한 자원을 미리 준비하고 공급하는 것
        • 보통 peak 사용량에 대비해서 자원을 준비
        • efficient provisioning : 필요에 따라 필요한 만큼 가상 머신을 제공(동적으로 할당)하여, 자원을 효율적으로 사용
      • reduce HW cost : 추가 하드웨어 비용 절감
    • Isolation(고립, 격리성)

      • 게스트 OS가 서로 격리됨
        • 시스템 신뢰성 증가
        • e.g. 디바이스 드라이버 실패가 다른 VM에 영향을 미치지 않음
        • 시스템 전체가 영향을 받지 않기 때문에 가상화의 안정성과 가용성을 보장
    • Dependency(의존성) 감소

      • 소프트웨어와 하드웨어 간 의존 감소
      • 소프트웨어의 이식성 증가
        • e.g. 어플리케이션이 수정 없이 새 하드웨어에서 동작

Hypervisor

게스트 OS와 하드웨어 사이에서 가상화된 컴퓨터 H/W 자원을 제공하기 위한 관리 계층

  • 게스트 OS : hypervisor가 제공하는 가상화된 H/W 자원을
    이용
    하는 운영체제, Hypervisor의 HW 에뮬레이션을 통해 실제 하드웨어가 제공되는 것처럼 인식함
  • 각 게스트 OS는 가상 머신으로 정의되고, 서로의 존재를 알지 못함
    • H/W에 대한 접근은 hypervisor 에게 할당 받은 자원(영역)에 대해서만 수행
  • Hypervisor는 각 게스트 OS간 CPU, 메모리 등 시스템 자원을 분배/제한하는 등의 역할을 수행(고립을 지원)

장점

  • 하나의 물리 컴퓨터에서 여러 종류의 게스트 OS 운용이 가능
    • 한 서버에서 다양한 서비스를 동시에 제공
  • 실제의 컴퓨터가 제공하는 것과 다른 형태의 명령어 집합 구조(Instruction Set Architecture)를 제공
    • 다른 H/W환경으로 컴파일 된 게스트 OS 및 응용 프로그램도 실행 가능

단점

  • H/W를 직접적으로 사용하는 다른 운영체제에 비해 성능이 떨어짐(오버헤드, 하드웨어 사용을 위해 한 단계(하이퍼바이저)를 더 거쳐야 함)
    • 기존에 하드웨어에서 직접 처리되던 것들을 Hypervisor가 대신 처리하기 때문

성능 개선 시도

  • 반가상화(Para-virtualization) → 게스트 OS를 수정

    • Guest OS가 자신이 가상화되었음을 알고 있음
    • 커널 기능 일부를 하드웨어가 아니라 하이퍼바이저에서 직접 제공받음 (hyper call)
    • 게스트 OS의 H/W 의존적인 코드에 대한 수정이 요구
      • 높은 기술적인 능력이 필요함
      • OS의 소스가 공개되지 않았다면 게스트 OS로 수정이 불가능
    • E.g. Xen(하이퍼바이저)
  • 하드웨어를 활용한 성능 가속 → 하드웨어를 수정

    • 반가상화 등 소프트웨어적인 기법 대신 하드웨어 자체가 Guest OS의 존재를 고려 → Hypervisor가 하드웨어에서 직접 작업을 처리
    • Intel VT-x, AMD-V 등
    • E.g. KVM (Linux 커널에 기본으로 탑재되어 있음)

Container

  • Light-weight virtualization
    • 기존 가상머신에서 OS가 빠진 개념, Host OS가 공유됨, 하이퍼바이저 없이 호스트 운영 체제와 커널을 공유
    • Guest OS가 커널까지 포함하여 isolation을 유지할 필요가 없는 경우(운영체제까지 가상화하지 않아도 될 때)
    • OS는 게스트에 포함되지 않음
  • 이 때, 각 게스트를 “컨테이너”라고 부르고 컨테이너를 생성하는 SW를 container runtime이라고 함
    • 대표적인 Container runtime: Docker
  • 장점
    • Image화가 용이함
      • 컨테이너가 실행될 때 필요한 실행 환경, 프로그램 등을 묶어둔 것
      • 컨테이너 이미지를 기반으로 새로운 컨테이너 생성이 가능
    • 배포의 용이성(이식성)
  • 단점
    • 호스트 OS에 종속적
    • 보안성
      • 컨테이너 내부에서 악성코드가 실행되면 호스트 시스템 및 다른 컨테이너에 영향(고립이 부족)
profile
We Need Better UX

0개의 댓글