가상화란 무엇인가? - Server Virtualization

Argonaut·2024년 12월 23일
post-thumbnail

서버 가상화란?

서버 가상화(Server Virtualization)는 하나의 물리적 서버를 여러 개의 가상 서버로 나누어 각각 독립적으로 운영할 수 있게 만드는 기술


원리

1. 하이퍼바이저(Hypervisor) 사용

  • H/W와 가상 서버(Virtaul Machines, VM) 간 중간 계층 역할을 수행
  • H/W 자원을 추상화하여, VM에 할당
  • 대표적인 Hypervisor
    1. Type1 (Bare Metal): H/W 위에 직접 실행되는 독립형 S/W
    2. Type2 (Based Host): 기존 OS 위에서 실행되는 S/W

2. 가상 머신(Virtual Machine, VM) 생성

  • 가상 머신은 물리 서버의 CPU, 메모리, 디스크 공간 등을 가상화하여 독릭적인 OS,Applictaion 실행 가능

3. 자원 분배 및 격리

  • 각 VM은 독립적으로 동작하여 VM 간 영향을 주지 않음

4. 동적 자원 관리

  • 필요에 따라 VM의 자원을 조정하거나, 새로운 VM 생성/삭제 가능
  • Hypervisor는 자원을 실시간으로 조정하여 효율성을 높임

기본적으로 hypervisor는 리소스를 동적으로 할당하지는 않으나, VMware vSphere DRS나 Hypervisor의 Overcommit 등을 이용하여 필요에 따라 동적으로 할당 가능


사용 이점

1. 자원 효율성 증가

  • 물리적 서버의 자원을 최대한 활용하여 비용 절감
  • 유휴 자원이 줄어들어 서버 활용도가 높아짐

유휴 자원이란

  • 서버의 물리적 자원(CPU, 메모리, 디스크 등)이 사용되지 않고 놀고 있는 상태를 의미
    예를 들어, 한 서버에 단일 애플리케이션만 설치되어 있고, 이 애플리케이션이 전체 서버 자원의 30%만 사용한다면 나머지 70%는 유휴 상태

서버 활용도란?

  • 서버 활용도는 서버 자원이 실제로 사용되는 비율
    서버 활용도가 높을수록, 서버의 CPU, 메모리, 디스크 등이 효율적으로 사용되고 있다는 의미

그럼 가상화로 왜 자원 효율성이 증가하느냐 하면

서버 가상화는 하나의 물리적 서버로 여러 개의 가상 서버로 나누어 자원을 효율적으로 배분 가능케함. 이를 통해서 각 VM은 서버 자원 일부를 가지고, 남는 유휴 자원은 다른 VM이 사용 가능

예를 들어보자

  1. 가상화 이전
    • 물리 서버 3대가 각각 애플리케이션 서버를 1개씩 운영 중이라 가정
      • 서버 A: CPU 30%, 메모리 20% 사용
      • 서버 B: CPU 40%, 메모리 25% 사용
      • 서버 C: CPU 25%, 메모리 15% 사용
    • 각 서버에서 CPU와 메모리 자원의 대부분이 유휴 상태로 남음
  2. 가상화 이후
    • 서버 가상화를 통해 하나의 물리 서버에서 3개의 애플리케이션을 모두 실행
    • 가상 머신이 물리 서버의 자원을 효율적으로 공유하여 자원 낭비가 줄어듦
    • 물리 서버 1대에서 CPU 95%, 메모리 85% 활용 (기존에 유휴 상태로 남아있던 자원이 모두 활용)

아파트 사는 방식으로 생각해보면 편함

  • 가상화 이전 : 큰 단독 주택이 많고, 각 주택에는 한 명만 살고 있는 상태여서 대부분 비어있음
  • 가상화 후: 한 아파트 건물에 여러 세대가 거주. 각 공간 활용도가 높아짐

2. 비용 절감

  • 여러 가상 서버를 한 물리 서버에서 운영할 수 있어 하드웨어 구매 비용 감소
  • 서버 전력 및 냉각 비용 절감

3. 유연성 및 확장성

  • 필요에 따라 가상 서버를 쉽게 생성, 삭제, 확장 가능
  • 다양한 운영체제를 단일 물리 서버에서 실행 가능

4. 격리성

  • 각 가상 머신은 독립적으로 동작하여 하나의 VM에서 문제가 발생해도 다른 VM에 영향을 주지 않음
  • 테스트 및 개발 환경을 안전하게 격리 가능

5. 복구 용이

  • 가상 서버를 다른 하드웨어로 쉽게 이동 가능(예: VM 마이그레이션)
  • 가상 머신 이미지를 사용하여 빠르게 시스템 복원 가능

6.관리 간소화

  • 중앙 관리 도구를 통해 가상 서버를 일괄적으로 관리 가능
  • 물리적 서버보다 설정 및 배포가 빠르고 간편

    중앙 관리 도구란?
    서버 가상화 환경에서 여러 가상 서버(VM)를 효율적으로 관리할 수 있도록 지원하는 소프트웨어
    가상 서버의 생성, 모니터링, 자원 할당, 성능 최적화 등을 중앙에서 제어할 수 있는 기능을 제공
    종류
    1. VMware vCenter
    2. Microsoft System Center Virtual Machine Manager (SCVMM)
    3. Red Hat Virtualization Manager (RHV)
    4. Citrix Virtual Apps and Desktops (XenServer) 등등 존재


단점

1. 초기 비용

  • 하이퍼바이저 및 가상화 소프트웨어 구매 비용
  • 고성능 물리 서버와 네트워크 인프라 투자 필요

2. 성능 문제

  • 하드웨어 자원을 공유하므로 고부하 환경에서는 성능 저하 가능
  • 일부 워크로드는 가상화 환경에서 비효율적

워크로드란?
컴퓨팅 리소스가 작업 완료 또는 결과 도출을 위해 수행하는 처리 작업의 유형과 양을 의미

가상화 환경에서 특정 워크로드가 비효율적인 경우
-> 주로 가상화 기술의 제약이나 특정 애플리케이션의 특성 때문에 발생

  • 예시
  1. 고성능 컴퓨팅(High-Performance Computing, HPC)
  • HPC는 과학 계산, 시뮬레이션, 데이터 분석 등에서 매우 높은 수준의 CPU 및 메모리 성능이 요구함
  • 문제점
    • 하이퍼바이저 오버헤드로 인해 물리 서버보다 성능이 떨어질 수 있음
    • 자원의 가상화로 인해 CPU 캐시, NUMA(Node Uniform Memory Access) 등의 하드웨어 최적화 기능을 활용 불가
  1. 입출력(I/O) 집약적 작업
  • 대규모 파일 처리, 실시간 로그 처리 등 I/O 작업이 빈번한 워크로드에 경우
  • 문제점
    • 디스크, 네트워크 I/O 요청이 하이퍼바이저를 거치면서 지연 발생
    • VM 간 디스크 공유로 인해 스토리지 병목이 생길 가능성

-> 가상화 대신 컨테이너 또는 물리 서버 사용하거나 고속 SSD 스토리지 도입 필요

  1. 시간에 민감한 애플리케이션
  • 금융 거래, 네트워크 패킷 분석, 실시간 스트리밍 등과 같이 지연 시간이 중요한 작업
  • 문제점
    • 하이퍼바이저와 VM 간의 가상 네트워크 계층에서 지연 발생
    • 물리적 NIC와 가상 NIC 간의 성능 차이

-> PCI 패스스루를 이용하여 물리 NIC에 직접 접근하거나 최적화를 통해 완화

NIC란?
네트워크 인터페이스 카드(Network Interface Card)는 컴퓨터를 네트워크에 연결할 수 있게 해주는 하드웨어 구성 요소로 NIC는 컴퓨터와 네트워크 사이의 물리적 연결을 담당하여 둘 사이의 통신을 가능하게 해줌

  1. GPU/그래픽 집약적 작업
  • AI 모델 학습, 게임 개발, 3D 렌더링과 같이 GPU를 많이 사용하는 작업
  • 문제점
    • 가상화 환경에서는 GPU 리소스를 효율적으로 활용하기 어려움
    • GPU 공유 기술(CUDA 가상화 등)이 제한적일 수 있음

->GPU 패스스루를 이용하여 VM이 GPU를 독점적으로 사용할 수 있도록 설정하거나, 클라우드 GPU 이용으로 완화

비효율적인 이유 정리
1. 하드웨어 접근성 부족: 가상화는 하드웨어를 추상화하기 때문에, 하드웨어의 성능 최적화 기능을 100% 활용하지 못하는 경우가 있음
2. 하이퍼바이저 오버헤드: 하이퍼바이저가 자원 관리, 스케줄링 등의 역할을 수행하며 소모되는 추가 성능 비용
3. 자원 경쟁: 여러 VM이 동일한 물리적 자원을 사용할 때 경쟁으로 인한 병목 발생

3. 복잡성 증가

  • 가상화 환경의 설정 및 유지 관리가 복잡할 수 있음
  • 고도의 기술력과 경험이 필요

4. 라이센스 비용

  • 각 VM에 대한 소프트웨어 및 운영체제 라이센스 비용이 증가할 수 있음

5. 보안 문제

  • 하이퍼바이저가 공격받으면 여러 VM이 동시에 위협받을 가능성
  • VM 간 네트워크 연결이 보안 취약점을 유발할 수 있음

결론

1. 서버 가상화와 클라우드의 차이

서버 가상화: 물리적 서버를 가상 서버로 분할하여 사용
클라우드: 서버 가상화를 기반으로 제공되는 서비스로, 인터넷을 통해 자원을 제공

2. 서버 가상화가 적합한 경우 vs 비적합한 경우

적합한 경우

  1. 중소규모 워크로드: CPU, 메모리 사용량이 적은 웹/이메일 서버
  2. 유연성이 필요한 환경: 빠른 서버 배포, 테스트/개발 환경
  3. 서버 통합: 여러 서버를 하나의 물리 서버로 통합
  4. 가변 부하 환경: 트래픽 변화에 따라 자원 동적으로 할당
  5. 멀티 OS 실행: 다양한 운영체제 실행이 필요한 경우

비적합한 경우

  1. 고성능 요구: HPC, 대규모 데이터베이스
  2. I/O 집약 작업: 대량 트랜잭션, 대규모 파일 처리
  3. 실시간 처리: 금융 거래, 실시간 스트리밍
  4. 특수 하드웨어 의존: GPU 등 H/W 최적화 작업
  5. 고정된 워크로드: 예측 가능한 대규모 작업

정리
유연성이 중요하고 중소규모 애플리케이션에 적합하고
고성능·실시간·특수 하드웨어 의존 작업에는 물리 서버가 유리함


@참고문헌
서버 가상화란? (작동방식, 구성요서, 종류, 목적)

profile
성장하는 개발자가 되기 위한 기록 일지

0개의 댓글