- 서버 가상화란 ?
하드웨어의 성능이 비약적으로 발전하면서,
기존처럼 하나의 OS만을 운영할 경우 서버에는 그만큼 유휴 자원(리소스)이 남게 된다.
하지만 단일 서버 위에 여러 서비스를 올릴 수 있다면?
리소스 활용률 향상, 하드웨어를 도입하는 시간과 비용, 데이터센터 내 공간 및 파워, 냉각 등에 있어 뚜렷한 절감효과를 가질 수 있다.
이처럼 물리적인 자원을 추상화하여 논리적으로 통합한 것을 서버가상화라고 한다.
정리하자면
전통적인 방식 : 하나의 서버 위에 하나의 서비스 (1:1)
가상화 방식 : 하나의 서버 위에 여러 서비스 (1:N)
- 하이퍼바이저를 통한 가상화
그럼 서버가상화를 어떻게 구현할 수 있을까?
보편적으로는 기존처럼 하드웨어에 곧바로 OS를 설치하는 것이 아닌, 하이퍼바이저를 설치한다.
하나의 서버에서 다수의 OS를 실행하는 플랫폼을 하이퍼바이저 (가상화 전용 특수 운영체제)라고 한다.
하이퍼바이저는 크게 2가지 타입으로 나뉘는데, 아래와 같이 구분할 수 있다.
01 베어메탈 방식 (Type-1 or Bare Metal or Native)
하드웨어 위에 하이퍼바이저 설치
Host OS가 곧 하이퍼바이저이므로 가상화 목적 외에는 사용할 수 없다.
그림에 보이는 것처럼, Type-2에 비해 Layer가 적으므로 오버헤드가 적고 성능이 좋다.
리소스 분배에 유연하여 주로 대규모(기업 서비스용 엔터프라이즈급) 환경에 적합하다.
ex. VMware ESXi, Citrix Xen Server, MS Hyper-V, Linux KVM 등
02 호스트형 방식 (Type-2 or Hosted)
하드웨어 위에 OS 설치 후 하이퍼바이저 설치
Host OS라는 추가 단계를 거치므로 결국 베어메탈의 스펙을 초과하기 어렵다.
하지만 기존에 Windows가 구성된 서버에도 곧바로 하이퍼바이저를 올릴 수 있다.
주로 소규모 (개인용, 교육용, 테스트용 등) 환경에 쓰인다.
ex. VMware Workstation, Oracle VirtualBox 등
※ 베어메탈의 경우, 전가상화/반가상화로 나눌 수 있다.
- 전가상화 (Full-Virtualization)
하드웨어 전체를 가상화하는 방식.
Hypervisor가 Guest OS로부터 전체적인 명령을 전달하고 모든걸 제어하기 때문에 사용자의 별도 작업은 필요 없지만, 하이퍼바이저에 문제가 생기면 성능 저하가 발생할 수 있다. Guest OS는 자신이 가상화된 것을 알고 있다.
- 반가상화 (Para-Virtualization)
하드웨어를 부분적으로 가상화하는 방식.
Hyper Call 인터페이스를 통해 명령 전달하며, Guest OS는 자신이 가상화된 것을 모르기 때문에 사용자가 직업 커널 수정을 해야하는 번거로움이 있다.
- 하이퍼바이저 가상화(VM) 방식 vs 컨테이너 가상화 방식
위에서 설명한 것처럼 VMware는 하이퍼바이저를 통한 가상화 방식의 솔루션을 제공한다.
하지만, 최근에는 하이퍼바이저가 아닌 컨테이너를 통한 가상화 방식도 널리 쓰이고 있다.
하이퍼바이저로 하드웨어 수준을 가상화하는 것과 달리 컨테이너 엔진(ex. 도커)을 통해 OS 수준에서 가상화한다.
사진처럼 컨테이너 가상화는 Host OS 수준에서 커널을 공유하여 필요한 Binary와 APP만 올린다.
하이퍼바이저처럼 Guest OS를 각각 설치하고 구성하는 것이 아니기 때문에 볼륨이 훨씬 가볍고 부팅도 빠르다.
그럼 무조건 컨테이너 가상화를 사용해야 할까?
그건 아니다. 컨테이너는 메인 운영체제를 공유하는 구조이므로 컨테이너가 뚫리면 해킹의 위험이 동반된다.
또한, 컨테이너는 모두 동일한 OS여야 하기 때문에 Windows와 Linux의 혼합이 어렵다.
따라서 아직까지는 요구사항에 따라 서로 단점을 보완하며 상생중인 기술이라고 볼 수 있다.
※ 최근에는 VMware에서도 Tanzu라는 솔루션을 릴리즈하여 하이퍼바이저 계층에서 k8s 워크로드를 실행하도록 변환할 수 있다고 한다. 하지만 VMware 벤더에서도 아직은 POC를 진행 중이고 국내 레퍼런스가 없는 것으로 알고 있다.
VMware 벤더에서 제공하는 하이퍼바이저를 ESXi라고 한다.
ESXi가 물리 서버의 자원을 추상화하여 각 Guest OS (다수의 서비스)에 논리적 자원을 할당한다.
용어 정리를 먼저 하자면,
하이퍼바이저 = Host OS = ESXi
다수 서비스 = Guest OS = Virtual Machine(VM) 이라고 생각하면 이해가 쉽다. (엄밀히 따지면 VM과 Guest OS는 다름)
하드웨어의 NIC를 네트워크 스위치와 연결하여 다수 서비스가 요구사항에 맞게 통신하고,
FC 케이블을 통해 SAN 스위치와 연결 및 조닝 후 스토리지 영역에 VM을 데이터로 저장한다.
한마디로, 하드웨어/스토리지 구성 및 자원을 그대로 빌려와 VM이 나눠 사용한다고 볼 수 있다.
- VMware ESXi
ESXi를 설치하면 볼 수 있는 화면으로, 해당 화면을 DCUI (Direct Console User Interface)라고 한다.
DCUI에서 ESXi 매니지먼트에 대해 간단한 초기 구성을 하고 Shell 접속을 통해 Command 레벨의 제어를 할 수 있다.
하위 버전에서는 ESX라는 명칭이 있었지만, 여러 버전을 거쳐 안정화되면서 현재는 ESXi(i - integrated)라고 명칭하고 있다.
Windows나 Linux에 각 버전이 있듯 ESXi도 버전과 빌드가 존재하고 EOS (End of support)도 있다.
- ESXi도 하나의 OS이지만 엄밀히 말해 일반적인 OS의 범주는 아니다. 오직 다수의 서비스를 올리기 위한 가상화 전용 특수 운영체제이다.
- ESXi는 VMware 자체적인 보안패치가 내제되어 릴리즈된다. 따라서 보안을 위해 OS 내에 무언가를 강제로 설치할 경우에는 성능이 저하되거나 문제가 발생할 소지가 있다.
- ESXi는 Linux 기반으로, 커널 구조가 유사하며 기본 Command도 동일하다. 하지만, 세부적인 명령어는 전용 Command를 수행해야 한다.
- VMware ESXi (하이퍼바이저)는 무료와 유료가 있다. 하지만 무료는 기능이 매우 제한적이며, 유료의 경우는 vSphere 제품을 구매해야 한다.
Client PC (GUI)에서 Host Client (혹은 vCenter)를 통해 보다 편리하게 제어할 수 있다.
ESXi 6.0까지는 vSphere C# Client (6.0은 Web 접속도 가능), 6.5부터는 Web을 통해서만 접속할 수 있다.
+ 이제는 EOS된 6.0 이하 버전이지만, 호환/비용 문제로 아직까지 하위 버전을 사용하는 기업은 많다.
개인적으로는 vSphere C# Client가 훨씬 빠르고 직관적이라 편하지만
클라우드나 타 벤더와의 호환을 위해 웹 브라우저 지원을 하는 것은 자연스러운 흐름이라고 볼 수 있다.
- 용어 정리
- 서버가상화 : 물리적인 리소스를 논리적으로 추상화하여 서버를 통합하는 솔루션
- 하이퍼바이저 : 하나의 서버 위에 다수의 OS를 운영할 수 있는 가상화 운영체제
- ESXi : VMware에서 제공하는 vSphere 제품군 하이퍼바이저
- DCUI : Direct Console User Interface. ESXi 인터페이스를 직접 동작시키는 화면. 설치 시 보게 된다.
- GUI : Graphic User Interface. 아이콘 등을 그래픽으로 나타낸 화면. 운영 시 보게 된다. 컴퓨터로 지금 이걸 보고 있다면 그것도 GUI이다.
'Virtualization > VMware vSphere' 카테고리의 다른 글
[VMware] ESXi 설치 시 Custom Image 이용은 필수 (0) | 2019.12.20 |
---|---|
[VMware] 서버 위의 ESXi, 랙마운트와 블레이드 (0) | 2019.12.09 |
[VMware] CC 인증을 받은 vSphere Product (2) | 2019.12.08 |
[VMware] vSphere ESXi 설치 진행 방법 (0) | 2019.12.01 |
[VMware] vSphere 서버가상화 인프라 구축 시 사전 준비사항 (0) | 2019.11.29 |