서버의 가상화란, 물리 서버에 서로 독립된 OS와 애플리케이션을 가동시켜서 가상 서버를 구축하는 기술을 말합니다.
원래라면 물리적인 서버 하나 당 하나의 OS만 구축할 수 있지만, 가상화를 통해 물리적인 서버 하나로도 여러 OS를 구축하여 독립적으로 사용할 수 있게됩니다.
용어 정리
- 가상 머신(=게스트 OS): 서버 가상화를 구현했을 때의 가상 서버로, Virtual Machine(VM)이라고도 합니다.
- 물리 머신(=호스트 OS): 서버 가상화를 실현한 물리 서버를 말합니다. 내 PC로 VM Ware등의 하이퍼 바이저를 통해 가상 환경을 만들면, 내 PC가 호스트가 됩니다.
- 가상화 레이어(=하이퍼 바이저): 서버 가상화를 실현하는 소프트웨어로, VM Ware, Virtual Box와 같은 SW들을 말합니다.
서버 가상화의 장점
- 비용을 줄일 수 있음: 물리 서버의 대수를 줄일 수 있고, 이를 통해 하드웨어 유지보수 비용 및 지원 비용또한 절감시킬 수 있게됩니다.
- 서버의 자원을 효과적으로 이용할 수 있음: 예를 들어, 주간에 부하가 걸리는 서버와 야간에 부하가 걸리는 서버를 같은 물리 서버에 가상 머신으로 구현해두면, 물리 서버의 자원을 효율적으로 활용할 수 있습니다.
- 효율적인 운영이 가능: 물리 서버에서는 시스템 백업이나 폐기 등의 작업이 번거로운 반면 가상 머신은 추가, 복제, 삭제 등을 간단하게 실현할 수 있습니다.
- 스케일을 자유롭게 조절할 수 있음: 물리 서버에서는 스케일을 쉽게 변경할 수 없으나, 가상 환경에서는 간단히 실현할 수 있으며, 스케일링 작업도 자동화할 수 있으 안정된 시스템 인프라를 실현할 수 있습니다.
- 자원이 부족한 경우에도 유연한 대처가 가능함: 가상 머신은 일반적으로 최소한으로 보장되어야 하는 자원(CPU, 메모리 등)을 미리 지정해두는데, 자원이 부족할 경우에는 점유 비율이라는 가상 머신 별 자원 사용 시간의 우선순위값을 할당함으로써 자원이 모자랄 경우에도 유연하게 대처할 수 있습니다.
가상 머신에 의한 오버헤드를 줄이는 방법
물리 머신 하나에 가상 머신을 여러 개 띄우면 성능 오버헤드가 발생할 수 있는데, 오버헤드가 발생하는 원인과, 각 해결책은 아래와 같습니다.
- 하이퍼 바이저가 가상 머신마다 Previledge Level을 관리하는데, 이 때 가상 머신에서 하이퍼 바이저로 제어 권한이 넘어갈 때마다 컨텍스트 스위치가 발생하게됩니다. → VT-x, AMD-V와 같은 하드웨어 가상화 확장 기능을 활성화하여, 하이퍼 바이저의 개입을 최소화시킵니다.
- 가상 머신의 페이지 테이블과, 호스트의 페이지 테이블 간 이중 페이징(EPT/NPT)이 이루어지면서 주소 변환 비용이 증가하게되며 오버헤드가 발생하기도 합니다(메모리 이중 매핑). → 대형 페이지를 도입하여 TLB 미스율을 낮춤으로써 줄일 수 있습니다.
- I/O에 의해서도 오버헤드가 발생하는데, 가상 NIC나 디스크 드라이버 레이어가 추가되므로, 실제 입출력 장치에 접근할 때마다 중간 계층을 추가적으로 거치게되어 이 때 오버헤드가 발생하기도 합니다. → SR-IOV, VFIO 패스스루를 통해 가상 NIC, 디스크를 호스트 디바이스에 직접적으로 매핑시킴으로써 오버헤드를 줄일 수 있습니다.
컨테이너 기술과 가상화 기술의 차이
가상 머신의 경우 하이퍼 바이저가 게스트 커널까지 완전히 격리시키므로 오버헤드가 크며, OS를 시작시키는 속도 또한 컨테이너에 비해 비교적 느립니다.
반면 컨테이너는 호스트 OS의 커널을 공유하므로 오버헤드가 작고, 시작 속도가 비교적 빠릅니다.
따라서 빠르게 배포 및 확장하거나, 마이크로 서비스 아키텍쳐 구현이 중요하거나, CI/CD 파이프라인에서 반복적인 테스트 및 배포를 수행해야하는 경우에는 컨테이너가 적합합니다.
반면 가상화 기술은 독립된 커널 및 공간을 확보하므로, 특정 가상 머신에서 발생한 문제나 보안 취약점 등이 다른 환경에 침투할 위험이 현저히 적으며, 서로 다른 OS를 쓸 때 컨테이너 기술은 커널 공유에 있어 제약이 발생하므로 가상화 기술을 활용하는것이 좋습니다.
가장 좋은 점은, 가상 머신은 스냅샷 등의 기능으로 전체 시스템을 통째로 보존하고 복원할 수 있어, 장애 대비 및 테스트 환경 복제 등에서 강점을 갖습니다. 컨테이너는 애플리케이션 단위까지만 보장해주지만, 가상화 기술은 시스템 전체 단위를 보장해줍니다.
참고
요코타 카즈키&엔도 유키, '그림으로 이해하는 서버 구조와 기술'
'TIL(Today I Learned)' 카테고리의 다른 글
| [TIL - 3주차] 서버와 클라이언트간의 웹 통신 (0) | 2025.07.18 |
|---|---|
| [TIL - 2주차] 이중화 기술 (2) | 2025.07.14 |
| [TIL - 1주차] 파일 디스크립터(File Descriptor) (1) | 2025.07.11 |