가상화란 ?
하나의 물리적 리소스 위에서 여러 운영체제와 애플리케이션을 실행할 수 있도록 하는 소프트웨어 기술
가상화란 한 대의 시스템 하드웨어를 논리적으로 분할하여 가상의 시스템에 활용하는 개념이다.
가상 시스템들은 서로 독립적인 하나의 시스템으로 인지되기 때문에 주어진 하드웨어 리소스를 효율적으로 사용할 수 있다.
가상화의 핵심은 Isolation이다.
하나의 물리적 장치를 논리적으로 격리시킨다는 것이다. 제대로 격리가 이루어진다면 해당 가상 시스템 안에서 문제가 발생해도 그 밖의 영역으로는 영향을 미치지 않는다는 장점을 가진다.
과거에 쓰이던 하드웨어 가상화와는 달리 현재 쓰이는 소프트웨어적인 가상화 기술을 Hypervisor라고 한다.
Hypervisor를 사용하는 가상화 프로그램으로 VMware, VirtualBox 등이 있다.
가상화의 장점
- Server Consolidation : 물리적인 서버의 개수를 줄여 1개의 서버로 통합함으로서 서버의 전력 및 냉각 비용, 하드웨어 공간 비용 등을 줄일 수 있다.
- Isolation : 기능에 맞게 여러개의 머신으로 분리하여 Failures나 Security Leaks 등에 유연하게 대처할 수 있다.
- Efficiency : 컴퓨팅 자원의 사용을 최대화하고 보다 쉽게 관리할 수 있다.
- Flexibliity : 한 서버의 데이터를 마이그레이션하기에 용이해진다.
가상화의 종류
서버 가상화 (Server Virtualization)
데스크톱 가상화 (Virtual Desktop Infrastructure, VDI)
애플리케이션 가상화 (Application Virtualization)
1. 서버 가상화 (Server Virtualization)
가상화 개념의 시초
서버의 효율성을 올리기 위해 등장
하이퍼바이저(Hypervisor)를 통해 제어
2. 데스크톱 가상화 (Virtual Desktop Infra, VDI)
데이터 센터의 서버에서 운영되는 가상의 PC 환경을 의미
가상의 컴퓨터 환경을 중앙 서버에서 제공하는 소프트웨어 기술
중앙에 있는 가상화 기술을 사용해서 생성된 VM 컴퓨팅 환경을 사용자 PC에서 사용할 수 있도록 화면값을 전달해주는 형태
3. 애플리케이션 가상화 (Application Virtualization)
애플리케이션을 중앙 서버에 설치하고 가상의 인터페이스만 네트워크를 통해 보내는 기술
응용 프로그램은 실제로 설치되지 않으나 마치 설치된 것 처럼 실행
서버 가상화 기술
현재까지 컴퓨터의 기술은 매우 발전했고 PC도 평균적으로 성능이 매우 좋아졌다.
서버에서 사용되는 서버 프로그램에 비교해 하드웨어의 진보로 서버 자원이 남아돌게 되어 실제 PC는 CPU나 메모리같은 하드웨어 자원을 고작 10 ~ 20% 밖에 사용하지 못한다.
이렇게 남아도는 자원을 최대한 사용할 수 있도록 해주는 기술이 바로 "서버 가상화 기술"이다.
서버 가상화 기술의 종류
- 전가상화 방식
- 반가상화 방식
- 호스트 OS 방식
전가상화 방식 (Full Virtualization)
전체를 가상화하느냐 일부만 가상화하고 나머지는 실제 하드웨어를 그대로 사용하느냐에 따라 나뉜다.
전가상화는 호스트 OS를 필요로 하지 않는 타입의 가상화 방식이다.
호스트 OS를 설치하는 것이 아니라 하이퍼바이저라는 소프트웨어를 물리 하드웨어 위에 직접 작동시켜 하이퍼바이저 위에 각각의 게스트 OS를 설치해서 움직이게 하는 것이다.
전부 가상화하기 때문에 게스트 OS가 Host 시스템과 완전히 분리되어 실행되며 게스트 OS는 자신이 가상머신의 OS인지 인지하지 못한다.
Host 하드웨어와 게스트 OS 사이에 하이퍼바이저가 분명 존재하나 VM 입장에서는 가상화된 하드웨어를 진짜(물리) 하드웨어로 인지하고 있기 때문에 실제 물리 자원에 대해 요청을 보낸다고 생각하게 된다.
원래 system call에 의해 App → Kernel → HW 순으로 서비스를 요청하는데 이 과정을 하이퍼바이저 단에서 처리해준다.
Hardware Assisted Full Virtualization
전가상화 구현 방법에는
- 하드웨어 지원 가상화
- 소프트웨어적 가상화
Trap & Emulation
하이퍼바이저는 Root 모드에서 동작하고, 도메인은 Non-root 모드에서 동작하도록 되어있다.
Non-root 모드에서 동작하는 도메인이 특권 명령을 실행하면 Trap이 발생하고 트랩 핸들러가 vm exit 명령을 수행해서 하이퍼바이저가 실행하도록 한다.
처리가 완료되면 다시 vm enter 명령을 통해 다시 도메인이 실행되도록 하드웨어가 명령어를 지원하는 방식인 것이다.
하이퍼바이저에서 이 모든 걸 다 처리해야 하고 트랩이 발생할 때마다 에뮬레이션이 처리하는 오버헤드까지 생각하면 성능 저하가 생길 수 밖에 없다.
하이퍼바이저를 구동하면 Ring 0라고 하는 관리용 가상 머신이 실행되며 모든 가상 머신들의 하드웨어 접근이 Ring 0을 통해서 이뤄진다.
즉, 모든 영역에 대해서 Ring 0이 개입을 하게되는 형태이다.
각각의 게스트 OS는 다양한 종류의 OS가 올라갈 수 있으므로 커널에서 사용하는 규칙이 모두 다르기 때문에 게스트 OS는 직접 하드웨어 자원을 사용할 수 없다.
Ring 0에서 Binary Translation 과정을 거친 후 하이퍼바이저에 요청을 날리면 하이퍼바이저가 하드웨어에 전달해준다.
하드웨어 지원 전가상화 vs 소프트웨어적 전가상화
하드웨어 지원 전가상화 | 소프트웨어 전가상화 |
Trap과 Emulation을 이용하여 Guest OS의 Application이 직접 하드웨어의 리소스를 요청해 사용할 수 있는 구조 | Binary Translation을 이용하여 각 단계에서 모든 명령에 대해 하나하나 다 가상화하는 방법으로 진행 |
Protection ring
Ring 3은 Ring 2를 Ring 2는 Ring 1을 통해서만 다음 링에 접근할 수 있도록 하는 개념이다.
반가상화 방식(Para Virtualization)
반가상화란 Xen에서 전가상화의 가장 큰 문제점인 성능 문제를 해결하기 위해 나온 기술로, 하드웨어를 완전히 가상화하지 않는 기술이다.
게스트 OS의 커널을 일부 수정하여 특권 명령이 수행될 때 Hypercall을 호출하여 하이퍼바이저에 직접 요청을 날린다.
대표적으로는 Xen, KVM(Kernel-based Virtual Machine)이 있다.
전가상화에서의 게스트 OS는 자신이 게스트 OS인지 모르지만 반가상화에서는 게스트 OS가 하이퍼바이저에 직접 Hypercall을 날려야 하기 때문에 자신이 게스트 OS라는 사실을 인지해야만 한다.
따라서 반가상화 하이퍼바이저에 올라가는 게스트 OS는 커널을 수정하여 게스트 OS를 따로 만들어야 한다.
가상화 환경에서는 커널 대신 하이퍼바이저가 하드웨어를 관리하고 보호해야 하는 책임이 있으므로 하이퍼바이저가 x86에서 제공하는 보호링 중 가장 권한이 높은 Ring 0에서 실행되도록 하고 커널을 일부 수정하여 Ring 0에서 실행되는 명령을 보다 낮은 권한인 Ring 1에서 실행되도록 하고 가상 환경과 실제 환경과의 클럭 동기화 같은 일부 명령의 경우 하이퍼바이저에게 요청하는 Hypercall이 발생하도록 수정한다.
전가상화에 비해 처리 속도는 빨라졌지만 Hypercall 요청을 할 수 있도록 각 게스트 OS의 커널을 수정해야 하므로 오픈소스 OS가 아니면 반가상화를 사용하기 어렵다는 단점이 있다.
전가상화와 반가상화
호스트 OS 형
호스트 운영체제 위에 가상화 소프트웨어와 가상 머신을 작동시키는 방식이다.
일반적인 가상화 기술로는 VMware, Virtual Box 등이 있다.
물리적 하드웨어에 호스트 OS를 설치하고 그 위에 게스트 OS 전체를 가상화하는 방식이다.
참고
'CS > 인프라' 카테고리의 다른 글
Active Directory란 ? (0) | 2023.10.30 |
---|---|
LDAP이란 ? (1) | 2023.10.30 |
가상머신과 컨테이너 (0) | 2023.02.07 |
하이퍼바이저(Hypervisor) 개념 및 종류 (0) | 2022.07.20 |
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!