가상화 (Virtualization)

박영준·2023년 3월 3일
0

Server

목록 보기
2/8

1. 정의

  • 가상화를 관리하는 소프트웨어(주로 Hypervisor)를 사용하여, 하나의 물리적 머신에서 가상머신(VM)을 만드는 프로세스

  • 전통적으로 하드웨어에 종속된 리소스를 사용해, 유용한 IT 서비스를 만들 수 있는 기술

  • 물리적 머신의 기능을 여러 사용자 또는 환경에 배포해 물리적 머신을 최대한 활용 가능

  • Window 에서 Docker 를 사용하는 경우, Hypervisor 를 사용하지만
    Linux 에서 Docker 를 사용하는 경우, 커널의 특징을 이용하므로 Hypervisor 를 사용하지 않는다.

    참고: Spring & Docker

2. 클라우드 컴퓨팅 & 가상화

클라우드 컴퓨팅

  • 인터넷을 통해 공유 컴퓨팅 리소스, 소프트웨어 또는 데이터를 제공하는 방식
    → 사용자는 클라우드를 통해 컴퓨터의 자원을 투명하게 사용 가능

가상화

  • 클라우드 컴퓨팅을 가능하게 하는 주요 기술 中 하나
  • 클라우드 공급업체는 가상화를 사용하기 때문에, 하나의 서버에서 여러 고객에게 서비스를 제공 가능

많은 기업들은 '클라우드 컴퓨팅 및 가상화' 를 모두 사용하여 효율성 극대화.

3. 가상화의 유형

1) 데이터 가상화

  • 여러 곳에 분산되어 있는 데이터를 단일 소스로 통합

  • 기업은 데이터를 동적 공급 요소로 다루어, 여러 소스에서 데이터를 동시에 가져온다.

  • 사용자의 요구에 따라 새로운 데이터 소스를 손쉽게 변환/통합 가능
    → 필요한 데이터를, 필요한 형식으로, 적시에, 어플리케이션 또는 사용자에게 제공

2) 데스크탑 가상화 (VDI)

(1) 정의

  • 데이터 센터의 서버에서 운영되는 가상의 PC 환경

  • 시뮬레이션 된 데스크탑 환경이 중앙 관리자 or 자동화된 관리 툴을 통해, 수백 개의 물리 머신에 동시 배포되도록 지원

  • 기존의 데스크탑 가상화 환경 : 각 머신에서 물리적으로 설치, 구성, 업데이트 된다.

    데스크탑 가상화 : 관리자가 모든 가상 데스크탑에서 구성/업데이트/보안 점검을 대규모로 수행 가능

  • 가상의 데스크톱을 로컬 시스템인 것처럼 활용 가능
    → 언제 어디서든 네트워크가 가능하다면, 서버에 접속하여 자신만의 PC 환경을 구동시킬 수 있다.

  • 모든 작업의 프로세싱과 저장은 센터에 위치한 서버에서 이루어 진다.

주의!
운영 체제 가상화(단일 머신에서 여러 운영 체제를 배포) 와 혼동하기 쉽다.

(2) 장점

  • 5 ~ 10% 수준의 전력소모
    → 비용 절감

  • 데이터가 로컬 PC가 아닌 데이터 센터에 위치
    → PC의 복원/생성 등...의 작업이 수월

  • 보안적인 측면에서 PC 마다 보안 솔루션을 설치했던 방식과는 다르게,
    데이터 센터 급의 보안 서비스를 보장

  • 적은 종류의 가상 PC 이미지로 수백대의 가상 PC 만들 수 있고, 이에 대한 일괄 업데이트가 가능
    → 관리의 효율성

3) 서버 가상화

('3. 서버 가상화' 에서 상세히)

4) 운영 체제 가상화

(1) 정의

  • kernel(운영 체제의 중앙 태스크 관리자) 에서 이루어진다.

  • Linux 환경 + Windows 환경을 함께 실행 가능

(2) 장점

  • 컴퓨터에 고도의 OOTB(Out Of The Box) 기능이 필요하지 않으므로, 하드웨어에 많은 비용 X

  • 모든 가상 인스턴스를 모니터링하고 격리할 수 있다.
    → 보안이 강화된다.

  • IT 서비스(소프트웨어 업데이트와 같은)에 소요되는 시간 절약

5) 네트워크 가상화 (NFV)

  • 네트워크의 주요 기능(디렉터리 서비스, 파일 공유, IP 설정과 같은) 을 분리하여, 이러한 기능을 환경에 배포

  • 소프트웨어 기능이 속해 있는 물리 머신으로부터 기능을 분리하면, 특정 기능을 새 네트워크에 함께 패키징하고 이를 환경에 할당할 수 있다.

  • 여러 개의 독립적인 네트워크(스위치, 라우터, 서버, 케이블, 허브 등...)를 생성하는데 사용
    → 이를 통해, 통신 산업에서는 일반적으로 사용되는 물리 구성 요소의 수가 감소한다.

6) 어플리케이션 가상화

  • 해당 응용 프로그램이 실행되는 운영 체제로부터 응용 소프트웨어를 캡슐화 하는 기법

  • 어플리케이션이 실제로 PC 에 설치되지는 않지만, 마치 설치 된 것처럼 실행

  • 가상화된 어플리케이션은 관라자가 베포 및 업데이트를 할 때, 상대적으로 용이하게 사용 가능

7) 스토리지 가상화

  • 네트워크 연결 스토리지(NAS) 및 스토리지 영역 네트워크(SAN)와 같은 물리적 스토리지 디바이스의 기능을 결합

  • 여러 대의 네트워크 스토리지 디바이스를 가상으로 단일 스토리지 디바이스로 결합할 수 있다.
    → 공급업체가 다르거나 유형이 달라도 무방하다.

  • 모든 물리적 데이터 스토리지를 사용하고, 대규모 가상 스토리지 장치를 만든다.
    → 고객은 관리 소프트웨어를 사용하여, 이를 할당하고 제어할 수 있다.

  • IT 관리자는 아카이빙, 백업 및 복구와 같은 스토리지 활동을 간소화할 수 있습니다.


4. 서버 가상화

1) 정의

  • 서버는 대량의 특정 태스크를 매우 효과적으로 처리해,
    다른 컴퓨터가 다양한 태스크를 처리할 수 있도록 하는 컴퓨터
    → 서버를 가상화하면, 서버가 이러한 특정 기능을 더 많이 수행 가능

  • 서버 파티셔닝을 통해, 구성 요소로 여러 기능을 지원 가능

2) 구성

VM (가상머신)

가상 머신은 단일 데이터 파일처럼 작동

  • 디지털 파일과 같이 한 컴퓨터에서 다른 컴퓨터로 이동 가능하며,
  • 어느 쪽 컴퓨터에서든 열어 동일하게 작동 가능

Hypervisor (하이퍼바이저)

물리 환경에서 리소스는 필요에 따라, 여러 가상 환경으로 파티셔닝된다.

이런 환경에서
사용자는 가상 환경(= 게스트 머신, 가상 머신)과 상호 작용하고, 가상 환경 내에서 계산을 실행한다.

만약,
가상 환경이 실행 中 일 때,
사용자/프로그램이 물리 환경에서 추가 리소스를 요구하는 명령을 내린다면?
→ Hypervisor 가 그 요청을 물리 시스템에 전달하고, 변경사항을 캐시한다.
→ 이 작업은 네이티브 속도에 가깝게 이루어진다.
(특히, 요청이 커널 기반 가상 머신(KVM)상에서 오픈소스 하이버파이저를 통해 전송되는 경우)

즉, Hypervisor 는 물리 리소스를 분할하여, 가상 환경에서 사용할 수 있게 한다.

Hypervisor 는 노트북 등의 OS 에 배포 또는 서버 등의 하드웨어에 직접 설치 가능
→ 대부분의 기업들은 이러한 방식으로 가상화

3) CPU의 동작 레벨

OS에서 구동되는 소프트웨어는
보안을 위해, 권한과 보호 수전에 따라 링(RING) 등급으로 나뉘어진다.

Ring 0 : 특권 모드라고 하며, 시스템 자원을 관리하는 OS 커널이 동작
Ring 1 Ring 1,2 : 예약된 상태, 평상시에는 사용되지 X
Ring3 : 일반적으로 사용하는 응용프로그램들이 동작

4) 비가상화 vs 가상화

비가상화 (Non-Virtualized System)

  • 1개의 OS가 모든 하드웨어 자원을 관리

  • 1개의 머신에서 여러개의 어플리케이션을 구동하는 것은 충돌 등...의 문제를 발생

  • 유연하지 못하여, 인프라 비용 ↑

가상화 (Virtualized System)

  • 1개의 하드웨어 상에서 여러 개의 가상 머신(VM) 구동

  • 하드웨어와 무관하게, 원하는 OS 나 그에 맞는 어플리케이션을 실행

  • 어떠한 시스템에서도 가상 머신이 프로비저닝 될 수 있다.
    (프로비저닝 : IT 인프라를 설정하는 프로세스. 사용자와 시스템에서 사용할 수 있도록, 데이터와 리소스에 대한 액세스를 관리하는데 필요한 단계를 지칭)

5) 서버 가상화의 종류

(1) 호스트 OS 가상화

(2) 하이퍼바이저 가상화

① 전가상화 (Full Virtualization)

1.정의

  • 호스트 CPU의 가상화 기술을 이용하여, 전체 "하드웨어를 완전히 가상화"하는 기술
    → "하드웨어를 완전히 가상화" : 게스트 OS 스스로가 가상화 환경인지 모르는 상태
    → 이에 따라, 가상화되지 않은 실제 하드웨어 명령을 직접 요청 하는 것처럼 동작
  1. 전제조건 : CPU 의 Intel-VT 나 AMD-V 등...의 물리적인 가상화 지원 기능이 있어야 함

  2. 장점 : 게스트 OS 에 아무런 수정 없이, 다양한 OS 를 이용 가능
    단점 : Trap & Emulate으로 인한 성능 저하

  3. 전가상화를 하면 root모드와 non-root 모드가 생긴다.

    root모드 : 하이퍼 바이저가 해당
    non-root 모드 : 도메인(운영체제 및 애플리케이션과 같은)이 해당

    이런 구조에서
    게스트 OS 가 특권 명령(Privileged Instruction)을 처리해야 하는 상황이 오면,
    전가상화는 Trap & Emulate 방식으로 처리를 해준다.

  4. Trap & Emulate
    1) 정의

    Trap

    • 특권 명령을 실행할 권한이 없는 비특권 모드(게스트 OS)에서 특권 명령을 실행할 때, 시스템에 발생하는 예외 or 결함

    • 예시 : 0 으로 나누기(divide by zero)나 디버깅을 위한 중단점(break point)과 같은 처리를 하면, 프로그램의 제어권이 트랩 사건을 처리하는 트랩 핸들러로 넘어가게 된다.

    2) 동작 순서

    1. 비특권 모드인 게스트 OS에서 특권 명령을 수행하려고 한다.

    2. 게스트 OS 는 트랩 상태(trap state)로 바뀌게 되고
      트랩 핸들러는 VM exit 를 통해, 제어권을 VMM(Hypervisor)로 넘겨준다.

    3. Hypervisor 는 해당 명령을 처리(Emulate)

    4. 해당 명령의 처리가 끝나면
      VM enter 를 통해, 실행 결과와 함께 제어권을 운영체제로 넘겨준다.

    3) 단점

    • 호환성을 확실하게 보장할 수 있으나
      트랩이라는 이벤트가 발생하여, 게스트 OS 의 실행이 중단되는 등... 그 자체로 시스템 오버헤드가 상당히 크다.

    • x86 아키텍처는 약 17개 정도 특권 명령과 비특권 명령의 경계가 모호한 명령어가 있어서,
      Trap&Emulate 방식만으로 하이퍼바이저를 구현하는 것은 어렵다.

      이런 문제를 극복하고자
      전가상화를 하기 위한 Binary Translation 이 등장했다.

  5. Binary Translation (이진 변환)
    1) 정의

    게스트 OS에서 특권 명령을 수행하려고 할 때 하이퍼바이저가 바이너리 연산을 통해서 하드웨어가 인식할 수 있는 명령어로 변환하여 전달하는 기법

    2) 단점
    CPU 에서 직접 실행하는 방식이지만, 중간에 하이퍼바이저가 번역하는 과정이 추가되었다.
    → 이런 방법은 개발하기가 상당히 까다롭다.

② 반가상화 (Para Virtualization)

  1. 정의

    • 게스트 OS의 Kernel 을 수정하여 특권 명령이 수행될 때, Hypercall 을 호출하여 Hypervisor 가 실행되도록 하는 기술

    • 하드웨어를 완전히 가상화하지 않아 게스트 OS가 직접 하드웨어를 제어하지 않고 하이퍼바이저가 제어

    • 전가상화의 성능적인 문제점을 해결하기 위해 고안한 기술

    • 하드웨어를 완전히 가상화하지 않으므로 게스트 OS 는 스스로 가상화된 환경임을 인지하고 있다.

    • 하드웨어 명령을 호스트로 요청하기 위한 드라이버를 필요로 한다.

    • 반가상화의 대표 기술 : Xen, KVM ...등

  2. 동작 방식

    반가상화를 사용하기 위해서는 '반가상화를 지원하도록 수정된 커널과 장치 드라이버'가 있어야 한다.

    1) 가상화 환경에서는 Kernel 대신 Hypervisor 가 하드웨어를 관리하고 보호해야 하는 책임을 가지기 때문에,
    Hypervisor 가 x86에서 제공하는 보호 링 中 가장 권한이 높은 링0 에서 실행되도록 한다.

    2) Kernel 을 수정하여, 링 0 에서 실행되는 명령을 보다 낮은 권한인 링 1 에서 실행되도록 한다.

    3) 일부 명령(가상 환경과 실제 환경과의 클럭 동기화 같은)의 경우, Hypervisor 에게 요청하는 Hypercall 이 발생하도록 수정한다.

  3. 장단점
    장점

    • 하이퍼바이저가 동작하는 호스트의 CPU 등의 장치가 가상화 기술을 지원하지 않아도 이용이 가능

    • 성능의 불이익 없이 가상화를 할 수 있다.
      (예시 : Trap & Emulate 나 Binary Translation)

    • 전가상화 기술보다 빠른 속도로 처리가 가능

    단점

    • 게스트 OS의 커널을 일부 수정해야 한다.

(3) 컨테이너 가상화

6) 동작 방식

(용도가 다른 3개의 물리 서버가 있다고 가정한다.)

    • 각 서버는 잠재적인 실행 용량의 30% 만 사용되고 있지만
      내부 운영을 위해 레거시 어플리케이션이 계속 필요하므로, 레거시 어플리케이션과 이를 호스팅하는 또 다른 3번째 서버를 유지해야 한다.

    • 전통적으로 1개의 서버에 설치된 1개의 OS 위에 1개의 태스크를 수행하도록 하는 것이 더 쉽고 안정적인 경우 多

      그러나 이러한 경우,
      각각의 서버가 자원을 최대한으로 활용하지 않아서, 서버 전력비가 비효율적으로 발생
      각각의 서버가 서로 다른 공간에 위치하므로, 공간 대여 비용도 발생하는 등...
      → 각각의 서버를 최대한으로 활용 X

    • 서버를 최대한 활용하기 위해서 '가상화'를 사용한다.
      기존의 메일 서버를 2개로 분리하여, 1개의 서버로는 메일을 처리 + 1개의 서버로는 레거시 어플리케이션을 마이그레이션 할 수 있다.
      (마이그레이션 : 한 OS 에서 더 나은 또는 새로운 OS 로 옮겨가는 과정)

    • 메일서버를 3개로 분리한다면
      1개 서버로는 메일 서버의 자원을 최대한으로 활용 + 남은 2개의 서버는 다른 태스크를 처리 or 사용을 중지하여
      냉각 및 유지 관리 비용 ↓

7) 장단점

장점

  • 서버 통합(Server Consolidation) + 서버 자원의 최대 활용(Efficiency)으로, 서버 급증 문제(Server Proliferation Problem) 해결

  • Isolation : 기능에 맞게 여러 개의 머신으로 분리하여, Failures 나 Security Leaks 등... 에 더욱 잘 대처

  • Flexibility : 한 서버의 데이터를 마이그레이션하기에 용이

  • 동일한 머신에서 다양한 유형의 앱, 데스크탑 및 운영체제를 실행

  • 새로운 어플리케이션을 프로비저닝하는데 걸리는 시간 ↓

단점


참고: [Server] 가상화(Virtualization)란? (1/2)
참고: [Server] 하드웨어 가상화(Virtualization)의 종류 및 차이 (2/2)
참고: 가상화(Virtualization)란?
참고: [가상화] 가상화란 무엇인가?
참고: 가상화란 무엇입니까?

profile
개발자로 거듭나기!

0개의 댓글