본문 바로가기

Cloud/가상화

[가상화] 가상화 기술 이해

728x90
반응형

가상화

  • 하나의 하드웨어(물리 자원)에 하나의 소프트웨어 서버만 구동을 하면 아깝고 비효율적이므로 하나의 하드웨어에 여러개의 소프트웨어 서버를 구동하는 것
    • 여러개의 소프트웨어 서버에 각각 운영체제를 설치하고 소프트웨어를 여러개를 돌려 하나의 서버에 서비스를 여러개 돌리자는 것이 가상화의 핵심!!

가상화 분야

  • 데이터 가상화
    • 다수의 이기종 데이터를 단일한 소스로 접근 가능하다
    • 클라우드 컴퓨팅은 범위 뿐만 아니라 수많은 디바이스들로 접속할 수 있다.
  • 네트워크 기능 가상화
    • NFV (Network Functions Virtulization)
  • 서버 가상화
    • 하이퍼바이저 (Hypervisor) : 서버 자체를 가상화 하는 것
  • 운영체제 가상화
    • 컨테이너 (Container)

가상화 기술

image

  • 가상화 기술 발전 이전
    • 기본적으로는 하나의 물리적인 서버에 하나의 운영체제가 설치되고 하나의 운영체제 사용자가 원하는 어플리케이션을 돌리게 된다.
      (과거에는 만약 다른 운영체제를 원할 경우 물리적인 서버를 하나 더 사용해야 했다.)
  • 가상화 기술 발전 이후
    • 하나의 물리적인 서버에 하나의 Virtualization Layer(Hypervisor)를 얹고 사용자가 원하는 수만큼의 운영체제와 어플리케이션으로 이루어진 가상 머신을 여러개 놓을 수 있다
    • 가상화 레이어가 하나 더 추가되어 어플리케이션이 구동되는 시간이 조금 더 오래걸린다

하이퍼바이저(Hypervisor)

  • 하나의 물리적인 서버를 여러개의 독립된 서버처럼 가상적으로 만드는 기술
    • 전체를 가상화 하는 방법 : VMWare
    • 부분 기능을 가상화 시킨 방법 : KVM

image

  • Type 1 : bare metal

    • 하나의 하드웨어에 운영체제를 올리기 전에 BIOS처럼 Hypervisor를 깔고 Hypervisor 위에 다양한 운영체제를 돌리는 것
    • VMware, Microsoft Hyper-V
  • Type 2 : hosted

    • 기존에 사용되는 것처럼 하드웨어에 운영체제를 올린다. 그 후에 기본 운영체제가 아닌(같은 운영체제이더라도 새로운 가상의 운영체제를 새로 만들 경우) 새로운 가상의 운영체제를 만드는 것
      • ex) Windows에서 Linux를 사용하여 개발하고 싶을 경우, Windows용 virtual box를 사용하여 linux를 설치하여 사용한다.
    • VMWare, QEMU, Oracle Virtual Box

컨테이너(Container)

  • Linux Containers (LXC, LXD)
  • Docker
  • OS는 하나인데 내가 원하는 어플리케이션이 실행 환경을 격리시키는 것
    (어플리케이션을 각각 격리시켜 하나의 어플리케이션이 잘못되더라도 다른 어플리케이션에는 영향이 가지 않는다 )
  • 어플리케이션 하나당 컨테이너가 할당된다!

하이퍼바이저 / 컨테이너

  • 하이퍼바이저
    • 중간에 가상화 계층이 있고 하드웨어 자체로 소프트웨어 표준,소프트웨어 가상 머신으로 만들어야 하기 때문에 이를 다시 실제 물리적인 하드웨어로 만들어야 하기 때문에 거쳐야 하는 과정이 많다.
    • 전체를 가상화 하는데에는 유리
    • 어플리케이션을 실행하는데 부담이 크다
    • 단일 시스템에서 여러 운영체제가 동시에 실행된다
  • 컨테이너
    • 어플리케이션을 실행하는데 부담이 작다
    • 하나의 운영체제 위에서 컨테이너를 여러개 두는 것이기 때문에 위에 올라가는 어플리케이션은 동일한 운영체제용 어플리케이션만 컨테이너로 만들 수 있다.
      • 컨테이너가 리눅스 위에 올라가기 때문에 컨테이너를 사용하려면 어플리케이션이 리눅스 기반 어플리케이션이어야 한다.
    • 단일 커널에서 여러 컨테이너가 동시에 실행된다(하나의 운영체제에 종속적)

LXC(Linux Containers)

  • 리눅스 커널에서 제공하는 컨테이너에 접근하기 위한 인터페이스 기술(Command Line Interface나 다양한 Tool)들을 합쳐 놓은 것
  • 컨테이너를 관리하는 도구들의 모음
  • LXC 구성 요소
    • liblxc 라이브러리 (이 라이브러리를 통해서만 LXC에 접근할 수 있다)

+) LXD

  • LXC를 조금 더 편리하게 사용할 수 있도록 해준다
  • liblxc를 통해 컨테이너를 관리하는 데몬 서비스
728x90
반응형

'Cloud > 가상화' 카테고리의 다른 글

[가상화] Openstack Neutron  (0) 2021.09.14
[가상화] 클라우드 컴퓨팅  (0) 2021.09.14