[클라우드] 가상화

Letmegooutside·2022년 2월 3일
0

클라우드 컴퓨팅

목록 보기
1/6

가상화

물리적인 하드웨어 장치를 논리적인 객체로 추상화 하는 것

하나의 장치를 여러 개처럼 동작 시키거나 여러 개의 장치를 묶어 마치 하나의 장치인 것처럼 사용자에게 공유 자원으로 제공할 수 있다.

물리적 컴퓨터 하드웨어를 보다 효율적으로 활용할 수 있도록 해주는 프로세스이며, 클라우드 컴퓨팅의 기반을 제공한다.

가상화 기술을 왜 사용할까?
가상화 이전에는 하나의 컴퓨터에 하나의 어플리케이션만 운영할 수 있었다.
하지만 무어의 법칙에 따라 하드웨어의 성능이 점점 향상되면서 이 성능을 전부 활용 하지 못하고 남는 자원이 늘어갔다.
이러한 자원을 최대한 사용하여 효율성을 증대 시키기 위해 서버 가상화 기술을 사용하기 시작했다.

가상화의 장점

  • 물리적인 서버의 개수를 줄여 통합함으로써 서버의 전력 및 냉각 비용, 하드웨어 공간 비용 등을 줄일 수 있다.

  • 별도의 가상화된 시스템에 구축함으로써 문제가 발생해도 전체 시스템에 영향을 끼치는 것을 방지할 수 있다.

  • 컴퓨팅 자원의 사용을 최대화하고 보다 쉽게 관리할 수 있다.

  • 동일한 머신에서 다양한 유형의 앱 및 운영체제를 실행할 수 있다.

  • 서버를 가상화하고 가상화된 이미지를 사용함으로써 프로비저닝 하는데 걸리는 시간을 줄일 수 있다.

가상화 기술의 종류

호스트 OS 형

호스트 운영체제 위에 가상화 소프트웨어와 가상 머신을 작동 시키는 방식이다.
일반적인 가상화 기술로는 VMWare, Virtual Box 등이 있다.

물리적 하드웨어에 호스트 OS를 설치하고, 그 위에 게스트 OS 전체를 가상화 하는 방식이다.

전가상화 방식 (Bare-metal/hypervisor)

호스트 OS를 필요로 하지 않는 가상화 방식이다.

하이퍼바이저라는 소프트웨어를 물리 하드웨어 위에 직접 작동 시키고, 하이퍼바이저 위의 각각의 가상머신에 게스트 OS를 설치하여 작동 시키는 방식이다.

각각의 가상머신은 마치 독립적인 호스트 시스템처럼 작동하며, 가상머신들이 서로 간섭하지 않도록 하는 것이 하이퍼바이저의 역할이다.

각각의 OS는 커널에서 사용하는 명령어가 모두 다르기 때문에 게스트 OS는 직접 하드웨어 자원을 사용할 수 없다.

전가상화 방식에서는 하이퍼바이저가 이러한 명령어들을 번역하여 하드웨어에 전달해준다.

따라서 게스트 OS가 무엇이든 관계없이 사용할 수 있지만, 하이퍼바이저가 중재를 다 해준다는 점 때문에 처리 속도가 느리다는 단점이 있다.

반가상화 방식 (Para Virtualization)

전가상화의 가장 큰 문제점인 성능 문제를 해결하기 위해 나온 기술로, 하드웨어를 완전히 가상화 하지 않는 기술이다.

게스트 OS의 커널 일부를 수정하여 특권 명령이 수행될 때 하이퍼 콜을 호출하여 하이퍼바이저가 실행되도록 하는 기술이다.

게스트 OS가 직접 하드웨어를 제어하지 않고, 하이퍼바이저가 제어한다.

하드웨어가 명령어를 번역하여 하드웨어에 전달하는 전가상화 방식과는 달리 반가상화 방식에서는 직접 각각의 가상 머신 에서 명령어를 번역하여 하이퍼바이저에 전달한다. (그렇기 때문에 게스트 OS의 수정이 필요하다.)

하이퍼바이저

가상머신의 단점

  • 대량의 메모리가 필요하다.
    물리적인 메모리 양이 부족하게 되면 쓰레싱이 발생하여 결국 심각한 성능 저하를 초래할 수 있다.
  • CPU 성능 확보 문제
    가상화된 게스트 OS 자체의 우선순위가 낮다면 물리적인 CPU자원을 확보하기가 어려워지면서 성능 저하가 발생할 수 있다.
  • 시스템 운영에 대한 통합적인 지식 필요
    가상머신 체제에서는 이미 만들어진 시스템 위에 새로운 시스템을 구축하는 개념이기 때문에 통합적인 시스템 운영 지식과 소프트웨어 개발 지식이 모두 갖춰져야 관리할 수 있다는 부담이 있다.

이러한 단점들을 극복하기 위해 등장한 개념이 컨테이너이다.

컨테이너 형

위에서 언급된 방식들과 다르게 하드웨어를 가상화 하는 방식이 아니라, 소프트웨어를 바로 가상화 하는 기술이다.

프로세스를 격리 시키기 때문에 가볍고 빠르게 동작한다.

CPU나 메모리는 프로세스가 필요한 만큼만 추가적으로 사용하면 되기 때문에 성능적으로도 거의 손실이 없다.

하나의 서버에 여러 개의 컨테이너를 실행하면 서로 영향을 주지 않고 독립적으로 실행되기 때문에 마치 성능도 좋고 가벼운 가상머신을 사용하는 느낌을 줄 수 있다.




Reference
https://mangkyu.tistory.com/86
https://eunjinii.tistory.com/10

0개의 댓글