[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개의 댓글