[PART 2] VM 이해 | VM은 무엇인가–하드웨어를 추상화한 서버의 의미

Cookie·2026년 2월 3일
post-thumbnail

이 글에서 다룰 내용
이번 글에서는 PART 1의 연장선으로, VM:Virtual Machine이 무엇인지 그리고 VM이 왜 단순한 "서버 여러 개"가 아니라 하드웨어를 추상화한 결과물이라고 불리는지 다룸

VM이 실제로 무엇을 제공하고, 무엇을 숨기며, OS는 어떤 관점에서 서버를 인식하게 되는지를 중심으로 설명함


학습 목표
이 글을 통해 다음을 이해하는 것을 목표로함

  • VM을 단순한 개념 정의가 아니라 구조적으로 설명할 수 있음
  • Bare Metal과 VM의 차이를 "추상화" 관점에서 설명할 수 있음
  • VM이 제공하는 vCPU, vRAM, 가상 디스크가 무엇인지 감을 잡음
  • 이후 Hypervisor, vCPU/vRAM 설명으로 자연스럽게 넘어갈 수 있는 기반을 마련함






VM은 무엇인가

VM을 다시 정의해보면

VM:Virtual Machine은 하나의 물리 서버 위에서, 여러 개의 독립된 서버가 존재하는 것처럼 동작하도록 만든 논리적 서버임

중요한 점은
VM은 단순히 서버를 쪼갠 것이 아니라, 하드웨어를 추상화하여 제공한다는 점임

VM은 실제 하드웨어를 그대로 보여주지 않고, "서버처럼 보이는 환경"을 만들어 OS에게 제공함



Bare Metal과 VM의 출발점 차이

🔹 Bare Metal환경에서는
운영체제(OS)가 물리 하드웨어를 직접 인식함

  • 실제 CPU 코어
  • 실제 메모리 주소
  • 실제 디스크 장치

그리고 OS는 이 모든 것을 있는 그대로 다룸.

반면,

🔹 VM 환경에서는
OS가 물리 하드웨어를 직접 보지 못하며, OS가 인식하는 것은

  • vCPU
  • vRAM
  • 가상 디스크
  • 가상 네트워크 카드

를 인식하기때문에 OS는 이게 진짜 하드웨어인지 알 수 없으며, 그저 서버 하나가 있다고 믿고 동작할 뿐임



하드웨어 추상화의 의미

하드웨어 추상화란 흔히 물리 자원을 그대로 나눠 쓰는 것으로 오해되지만, 본질은 그보다 한 단계위의 개념임

추상화의 핵심은 다음과 같음

  • 실제 구현을 숨기고,
  • 일관된 인터페이스만 제공하며,
  • 사용하는 쪽(OS)은 내부 구조를 알 필요가 없도록 만드는 것

즉, 하드웨어의 추상화란
물리 자원의 실제 형태와 동작 방식은 감춘 채, OS에게는 항상 같은 방식으로 사용할 수 있는 가짜 하드웨어를 제공하는 개념


VM 환경에서 보면

  • vCPU는 실제 CPU 코어가 아니며,
  • vRAM은 실제 메모리 칩이 아니고,
  • 가상 디스크는 단일 물리 디스크가 아님

하지만 OS는 이를 진짜 CPU, 메모리, 디스크처럼 사용함



VM이 서버처럼 보이는 이유

각 VM은 아래의 요소들을 가지고 있음

  • 독립된 운영체제
  • 독립된 프로세스 공간
  • 독립된 파일 시스템
  • 독립된 네트워크 인터페이스

VM 내부에서 보면, 다른 VM의 존재를 알 수 없으며, 물리 서버를 공유하고 있다는 사실도 인식하지 못함

VM은 사용자와 OS 관정에서 완전히 독립된 서버처럼 보이도록 설계된 환경임



VM이 단순 분할이 아닌 이유

VM을 그저 "CPU와 메모리를 1N\frac{1}{N} 로 나눈 것" 으로 이해하는것은 타당하지 않음

실제로 Hypervisor는 다음과 같은 역할을 수행함

  • CPU를 시간 단위로 스케줄링
  • 메모리를 동적으로 할당 및 회수
  • 디스크 I/O 요청을 중재
  • 네트워크 트래픽을 가상 인터페이스로 분리

Bare Metal와 VM의 가장 큰 구조적 차이는
하드웨어 자원을 누가, 어떻게 조율하느냐에 있음.

VM 환경에서는 hypervisor가 CPU와 메모리 같은 물리 자원을 직접 중재하고 스케줄링함

그 결과,

  • VM 마다 CPU 사용량이 순간적으로 크게 달라지더라도, 물리 서버 전체가 불안정해 지지 않고,
  • 하나의 시스템처럼 균형을 유지하며 동작할 수 있음



VM이 Bare Metal의 문제를 어떻게 해결했는가

🔹자원 활용률의 개선

  • Bare Metal 환경에서는
    서버 한대를 최대 부하를 기준으로 설계할 수 밖에 없었고, 그 결과 대부분의 시간 동안 자원이 유휴 상태로 남는 문제가 있었음.

VM환경에서는
하나의 물리 서버 자원을 여러 VM이 함께 사용하기 때문에

  • 특정 VM이 자원을 거의 사용하지 않는 동안 다른 VM이 해당 자원을 사용할 수 있으며,
  • 전체 서버 관점에서 자원이 보다 균형있게 사용됨.

이로 인해 서버당 평균 자원 활용률이 크게 개선됨


🔹서버 생성과 확장의 속도

  • Bare Metal 환경에서는
    서버를 추가하는 것은 곧 물리 장비의 추가를 의미했음.

VM 환경에서는
버서를 물리 장비가 하닌 논리적 개체로 다룸

  • 미리 준비된 이미지 기반으로 VM을 생성하고
  • 하드웨어 설치 없이 수 분 내에 새로운 서버를 준비할 수 있음

이로써 서버 확장의 시간 단위가 '수 주'에서 '수 분'으로 바뀌게 됨


🔹장애 격리

  • Bare Metal 환경에서는
    하드웨어 장애가 곧 서버 전체로 이어졌음

VM 환경에서는
장애의 기본 단위가 물리서버가 아닌 VM이기 때문에 하나의 VM에 문제가 발생하더라도 동일 물리 서버위의 다른 VM에는 영향을 최소화할 수 있음

VM환경에서는 장애의 영향 범위를 논리적으로 분리할 수 있게 됨


🔹운영 표준화

VM은 서버를 이미지 기반으로 관리할 수 있음

  • 동일한 이미지로 여러 VM을 생성하고,
  • 테스트 환경과 운영 환경을 동일하게 맞출 수 있으며,
  • 서버 간 환경 편차를 크게 줄일 수 있음

이로 인해
"환경 차이로 발생하는 문제"가 운영 이유의 주요 원인에서 점차 일려나게됨



그렇다면 VM은 완벽한 해답이었는가

결론부터 말하자면 완벽한 해답은 아님

VM은 Bare Metal 환경의 많은 문제를 해결했지만, 새로운 형태의 과제를 함께 가져옴

  • Hypervisor 계층으로 인한 성능 오버로드
  • VM 단위로 서버를 관리해야 하는 운영 복잡성
  • 애플리케이션 단위 확장에는 여전히 무거운 구조로

운영의 기본 단위가 여전히 "서버(VM)"에 머물러 있음

이 점은
서비스와 애플리케이션이 더 작고 빠르게 변화하기 시작하면서 점점 더 부담으로 작용하게 됨

이 한계가 이후 Container와 Kubernetes로 이어지는 또 하나의 전환점을 만듦






정리

VM은

  • 서버를 물리 장비가 아닌 추상화된 자원 단위로 다루게 만든 기술로
    • 자원 활용률
    • 서버 생성 속도
    • 장애 격리
    • 운영 표준화

와 같은 문제를 크게 개선함

그러나

  • 운영의 기본 단위는 여전히 VM에 머무르며,
  • 애플리케이션 중심 운영에는 한계를드러냄
profile
지식을 쌓기 위한 기록 저장소

0개의 댓글