서버 가상화
서버 가상화(server virtualization)는 하나의 물리적 서버 호스트에서 여러 개의 서버 운영 체제를 게스트로 실행할 수 있게 해주는 소프트웨어 아키텍처다. 서버는 물리적 시스템으로부터 추상화된 서버 소프트웨어를 통해 물리적 영역을 벗어난 하나의 ‘가상 시스템’이 된다.
개요
서버 가상화는 CPU, 메모리, 입출력 등 단일 플랫폼 상의 서버 자원을 사용자가 여러 도메인이나 서버 애플리케이션으로 분할해 사용할 수 있는 기술이다. 즉 가상 플랫폼에서 모든 운영 체제의 가상 인스턴스를 생성할 수 있는 기술을 말한다. 운영 체제를 호스팅하기 위해 CPU, 디스크, 메모리 및 기타 연결된 하드웨어가 있는 서버인 물리적 플랫폼이 필요했다. 서버 가상화는 물리적으로 한대의 시스템 상에서 윈도우나 리눅스 등 각기 다른 운영체제의 다양한 서버 애플리케이션을 효율적으로 운영할 수 있어 비용 절감 및 서버 자원의 효율적인 활용이 가능하다. 일반적인 서버 가상화에서 많은 가상 시스템이 물리적 서버에 연결되며 하이퍼바이저는 호스트 하드웨어를 각 개별 가상 컴퓨터와 공유하는 데 사용된다. 서버 가상화를 통해 리소스를 다른 많은 가상 컴퓨터와 공유할 수 있으므로 조직은 데이터 센터 하드웨어 사용 공간 및 방대한 양의 물리적 하드웨어를 실행하는 데 드는 관련 비용을 크게 줄일 수 있다. 서버 가상화는 자바 가상머신처럼 현재의 운영체제 위에 가상머신을 만들어 마치 컴퓨터가 여러대 있는 것처럼 시스템을 구축하여 동시에 운영하는 방식과 하드웨어를 파티션으로 나누어 각기 다른 운영체계를 얹는 방식이다. 그리고 다중 운영체계와 하드웨어 사이에 가상화의 계층을 두는 방식 등 여러 가지가 있다.[1]
역사
서버 가상화는 최근 인기가 높아졌으나 50년 이상 개발된 기술이다. 1960년대에 IBM은 시스템 메모리의 첫 번째 가상화를 개척했다. 이것은 가상 하드웨어의 선구자 역할을 하였다. 1970년대에 IBM은 VM/370이라는 독점 운영 체제를 가상화했다. 이 OS 수준의 가상화는 메인프레임 컴퓨팅 외부에서 는 거의 사용되지 않았지만 결국 서버를 위해 상업적으로 판매된 최초의 가상 플랫폼인 z/VM이 된 제품으로 발전했다.
가상화의 인기는 1990년대 후반에 브이엠웨어(VMware)의 VMware 워크스테이션 출시와 함께 크게 증가했다. 이 제품은 모든 x86/x64 아키텍처의 가상화를 가능하게 하고 가상화 주류를 가져왔다. 이제 동일한 호스트 하드웨어에서 리눅스(Linux), 윈도우(Windows) 및 MacOS를 실행할 수 있다. 이 획기적인 기술은 지난 20년 동안 IT 인프라 서비스를 형성하는 데 핵심적인 역할을 해왔다.[2]
특징
장점
- 공통 관리 인터페이스(Common Management interface) : 단일 애플리케이션으로 모드 서버들을 통제한다는 것은 매우 효율적이지만, 단일 인터페이스를 통한 서버들의 통제 능력은 전혀 다른 문제다. 가상화는 가상 머신, 콘솔, 스토리지에 대한 접근성을 부여한다. 필요한 시스템을 바로 사용할 수 있는 환경이 많들어진다.
- iLO(Integrated Lights Out) 불필요 : 통합 Light Out 인터페이스를 설정하지 않은 경우에도 가상화는 관련된 부담을 덜어 준다. 가상화 환경에서는 시스템에 대한 물리적 접근 없이도, 전원 오프 상태의 가상 머신을 부팅시킬 수 있다. 가상화 기반 인프라로의 전환에 있어서 데이터 센터 프로세스의 간소화는 전체 해택의 극히 일부분일 뿐이다.
- 하드웨어 교체 : 하드웨어 교체와 시스템 업그레이드는 용이한 작업이 아니다. 최첨단 데이터센터에서도 하드웨어 교체를 위해서 케이지를 열고, 노후 하드웨어를 제거한 후, 새로운 장비를 설치해야 하는 상당히 번거로운 작업을 필요로 한다. 만약 하드웨어의 동작이 정상적이지 않은 경우에는 모든 과정을 다시 진행해야한다. 가상 서버는 몇 번의 마우스 클릭만으로 CPU 수를 추가하거나 메모리 업그레이드 또는 하드디스크 추가를 손쉽게 진행할 수 있다.
- 스냅샷(Snapshots) : 가상 머신은 자체적으로 스냅샷 기능을 지원한다. 스냅샷은 가상 서버에서 추가 작업을 진행하기 전, 현재 운영되고 있는 구축 환경의 복사본으로 볼 수 있으며, 추가 작업중 문제가 생길 경우 스냅샷의 상태로 즉각 복원할 수 있는 기능이다.
- 프로토타이핑 : 가상 머신(VMS)은 몇 번이고 테스트해 볼 수 있는 기기다. 애플리케이션, 데이터베이스, 운영시스템(OS) 등의 기능 개선을 물리적인 시스템에서 진행할 경우 실패할 때만다 이미지를 다시 구성해야 하는 어려움이 있으나, 표준 가상 머신을 통해서는 몇 번이고 프로토타이핑을 하는 데에는 부담이 없다.
- 시스템 통신 : 호스트와 게스트, 게스트와 게스트 간의 통신은 홉(hop)을 필요치 않으며, 표준 물리 하드웨어의 제약을 받지 않는다. 프라이빗 VLAN은 시스템 간의 안전하고 빠른 통신을 가능하게 하며, 가상 머신 그룹에 프라이빗 VLAN을 적용하여, 외부 네트워크 노출이 제한되는 멀티 티어 애플리케이션을 생성할 수 있다. 또한 복잡한 네트워크 룰을 구성할 필요도 없다.
- 손쉬운 해체 : 물리 시스템을 해체하기 위해서는, 수 차례에 걸친 작업들을 필요로 한다. 네트워크 포트를 해제하고, 디스크를 삭제하고, 시스템 전원을 뽑은 후, 랙에서 시스템을 제거한 후에야 시스템을 폐기할 수 있다. 가상 머신의 해체 프로세스는 이와 동일한 과정을 거치지만, 데이터센터와 관련된 과정은 없다. 제거하거나 반납하여야 할 시스템이 없으며, 인벤토리에서 가상 머신을 제거하는 것은 몇 초면 끝난다.
- 템플릿 : 데이터 센터에서 필요한 골드 디스크(gold disk)는 하드웨어 유형마다 하나씩 필요하다. 가상 머신은 보통 하나의 템플릿으로 구축에 필요한 모든 것들을 담을 수 있으며, 몇 분만에 작업이 완료된다. 템플릿은 시스템 구축에 있어서 단 하나의 마스터 골드 디스크를 만들 수 있도록 한다.
- 신속한 구축 : 가상머신은 딜리버리, 설치, 전원 배선, 네트워크 드롭, SAN 케이블 작업 등이 필요 없으며, 템플릿이나 ISO 이미지를 사용하여 몇 분에서 몇 시간 정도면 구축을 완료할 수 있다.
- 다이내믹한 자원 활용 : 물리적인 컴퓨팅 자원의 신규 투입이 필요한 마케팅 캠페인을 위한 스케일업(scale-up)을 급변하는 비즈니스 조건에 맞춰 신속하게 적응할 수 있는 환경을 제공해 준다. 추가적인 자원의 투입이나 필요 없을 시 이러한 자원의 반납은 매우 손쉽게 진행될 수 있으며, 이러한 특성으로 가상화는 다이내믹 컴퓨팅을 가능하게 한다.[3]
단점
기술
구성
- 하이퍼바이저
하이퍼바이저는 여러 개의 VM이 한정된 하드웨어 자원을 나눠 쓸 수 있도록 합니다. 운영체제와 합쳐진 형태를 Type 1 하이퍼바이저, 분리된 형태를 Type 2 하이퍼바이저라고 합니다. 전가상화 반가상화라고 부르는 이러한 방법은 하이퍼바이저의 역할 범위에 따라 구분한 것으로 전가상화는 하이퍼바이저가 호스트 운영체제에서 모든 일을 처리하는 것이며, 반가상화는 일부 역할을 VM의 도움을 받아서 처리하는 개념입니다. VMware vSphere ESXi의 경우 모든 하이퍼콜(Hypercall)을 하이퍼바이저가 처리하는 반면 Xen의 경우 Dom 0라는 게스트 운영체제가 하이퍼콜의 일부를 넘겨받아 처리하는 구조로 되어있습니다. 전가상화는 하이퍼바이저를 통해 하드웨어에 직접 접근하기 때문에 OS 커널의 수정없이 사용할 수 있다는 장점이 있으나 이러한 장점을 유지하기 위해서 모든 장치에 드라이버를 에뮬레이션 가상화 기법으로 제공하고 바이너리 변환 기법을 통해 하드웨어에 대한 커널 수준 접근을 가능하게 합니다. Xen과 같이 반가상화의 경우 하이퍼바이저의 게스트 도메인이라고 불리는 VM뿐만 아니라 컨트롤 도메인(Control Domain, Domain 0)이라는 아주 가벼운 리눅스환경의 VM이 존재합니다. 게스트 도메인이 요청한 CPU, 메모리, 타이머 등에 대한 하이퍼콜은 하이퍼바이저에서 처리해주고 스토리지나 네트워크와 같이 I/O를 발생하는 하이퍼콜은 컨트롤 도메인이 하드웨어에 요청하는 구조입니다.
- 아이비엠
서버 가상화는 소프트웨어 제조업체에서만 사용하는 것이 아닙니다. 대부분의 서버 하드웨어를 제조하는 아이비엠(IBM)도 서버 가상화에 중요한 역할을 합니다. IBM 플랫폼 시스템 P, 시스템 I 및 시스템 Z는 파라 가상 하이퍼바이저를 사용합니다. 기본적으로 모든 게스트 가상 시스템은 호스트를 통해 서로 및 리소스 요구 사항을 알고 있습니다. 호스트 하드웨어 리소스는 분할되어 가상 컴퓨터(또는 논리 파티션)에 할당됩니다. IBM Z/VM은 이 파라 가상화 기술을 설립했으며 거의 모든 IBM 메인프레임 솔루션이 이 가상화 방법을 사용합니다. 예를 들어 IBM System P는 HMC에서 관리하는 풀링된 가상화된 하드웨어 계층을 사용하여 논리 파티션에 리소스를 배포합니다. 각 파티션은 다른 파티션의 요구 사항을 알고 있으며 각 서버에 정의된 최소 하드웨어가 있는지 확인하기 위해 리소스가 공유됩니다.[2]
- 컨테이너
컨테이너(container)는 VM이 없으며 게스트 OS도 없습니다. 따라서 더 강력한 가상화 기술이며, PaaS가 대중화 되면서 주목받고 있습니다. 호스트 OS입장에서 보면 컨테이너는 하나의 프로세스로 기동하기 때문에 하드웨어를 초기화 하는 작업이 필요하지 않습니다. 따라서 가상 환경을 실행하고 종료하는데 시간이 매우 빠르며, 오버헤드도 거의 존재하지 않습니다. 다른 가상화 환경 제공방식과 동일하게 프로세스를 수행하는 독립적인 공간을 제공하여, 보안적인 측면도 우수하며, 밀도 높은 설계가 가능하고 하드웨어 자원 수준이 낮다는 장점이 있습니다. 단, 호스트 OS인 리눅스 이외의 다른 OS에서는 동작하지 않으며, 리눅스 계열이 아닌 다른 OS를 설치할 수 없습니다. 이론적으로는 컨테이너의 리눅스의 모든 배포판을 설치하는 것이 가능하지만, 해당 라이브러리를 사용하는 것일 뿐, 리눅스 커널에서 실행되기 때문에 태생적인 한계도 가지고 있습니다. 또한 PaaS와 밀접한 이유는 독립적인 애플리케이션 수행 환경을 서비스 형태로 제공하는데 있어서 핵심 기능을 제공하고, 오버헤드가 가장 적기 때문에 가장 많이 사용되고 있는 추세입니다. 기업에서 사용할 때 고려해야 하는 점은 컨테이너들이 하드웨어의 리소스를 공유할 수 밖에 없기 때문에 발생하는 자원경합을 해결하는 것이 가장 중요한 과제입니다. 자원 경합 방지 기술 중에서 인텔 아이태니엄에만 포함되어 있다가 x86 CPU 중에서 인텔 하스웰 E7 CPU에 처음 탑재된 기능으로 TSX(Transactional Synchronoud eXtension) 기능이 있습니다. 이 기술은 여러 번의 연산을 컨텍스트 스위칭 없이 한 번에 처리해 줍니다. 컨텍스트 스위칭 : CPU 위에서 실행 중인 프로세스가 대기 중인 프로세스에게 양보하기 위해, 종료되지 않은 상태로 레지스터에 있던 데이터를 RAM으로 저장하고 대기 중이던 프로세스의 데이터를 레지스터로 복사하는 작업
- 브이엠
브이엠(Virtual Machine, VM)은
서버 가상화 할당 방법
가상 시스템을 구축하기 위해서는 물리 서버로 시스템을 구성할 때와 거의 유사한 패턴으로 진행하게 됩니다. 먼저, 시스템에서 수행될 애플리케이션의 워크로드 패턴을 분석해야 하며 이후 비기능 요구사항(NFR) 수집과 시스템 용량 분석을 진행하고, 논리 설계와 물리 설계를 진행합니다. 워크로드 패턴 : 시스템에서 애플리케이션을 수행하는 동안 소모하는 인프라 자원에 대한 사용 형태 및 사용량 비기능 요구사항(Non-Fuctional Requirement, NFR) : 비즈니스 또는 업무 기능과 무관한 시스템 자체에 대한 조건 오버커밋(overcommit) : 물리적인 용량 한계를 넘어서 할당하는 개념으로, 오버커밋 비율이 높으면 자원경합에 의한 성능 지연 현상이 발생합니다.
- CPU 할당 방법
베어메탈 서버로 TA(Technical Architecture)를 설계할 때, 서버 가상화 기술로 설계할 경우 호스트 서버 한 대에 게스트 OS를 분리하여 애플리케이션 별로 최대한 고립시켜 주는 것이 유리합니다. 이는 분리된 애플리케이션들은 각각의 게스트 OS 내에서 인프라 자원을 할당 받기 위한 경합을 회피할 수 있으며, OS를 각 애플리케이션에 맞도록 최적화하여 운영할 수 있기 때문입니다. 가상 시스템별로 CPU를 할당해야 하는 경우 애플리케이션의 다중 스레드를 요구하는지 단일 스레드를 요구하는지 확인해야 합니다. 이러한 활동을 워크로드 분석이라고 하며, 이렇게 조사한 결과를 기준으로 CPU 자원을 할당해야 합니다.
- 메모리
메모리도 CPU 처럼 오버커밋이 있으나 메모리는 공간을 차지하는 개념이기 때문에 먼저 메모리 공간을 차지한 VM이 메모리를 해제하거나 재기동 하기 전에는 메모리 공간을 차지한 VM이 메모리를 할당 받지 못하고 기다리는 현상이 발생함으로 보수적으로 처리해야 합니다. 따라서 메모리는 오버커밋하여 사용하지 않습니다. 메모리가 부족하면 SWAP이 발생하고, 메모리가 부족한 모든 VM에 성능 하락이 발생하게 됩니다. 서버 가상화 기술이 발전하면서 물리 메모리의 한계를 넘어서기 위한 기술도 존재합니다. 씬 프로비저닝 VM에서 실제로 메모리를 사용할 때 물리 메모리를 조금씩 할당해 주는 방식으로 메모리 사용률에서는 효율적이지만 메모리 단편화가 발생하는 단점이 있습니다. 메모리 오버커밋 상태에서 게스트 OS 메모리 사용량이 하이퍼바이저 메모리 크기를 초과하면 하이퍼바이저 디스크를 사용하며, 게스트 OS의 메모리 사용량이 줄어들면 하이퍼바이저 디스크에 저장된 데이터를 하이퍼바이저 메모리로 이동하는 기술 이외에도 COW(Copy on Write)와 같이 VM을 복제하여 사용하는 경우 메모리를 동일하게 복제하면 2배의 메모리 공간이 필요함으로, 복제하지 않고 2개의 VM이 동일한 메모리 영역을 참조하다가 데이터가 변경되는 시점에서 새로운 메모리를 할당하는 방법이 있습니다. 또한 압축 캐시라고 하여 VM에서 메모리를 사용할 때 VM과 물리 메모리 사이에 별도의 캐시 메모리를 두고, 그 캐시에 데이터를 임시 저장 후 압축해서 실제 물리 메모리에 저장하는 기능입니다. 벌룬 드라이버보다는 빠르다는 장점이 있으나 데이터의 형태에 따라서 압축률이 다르고, 데이터를 압축 및 해제하기 위해서 지속적으로 CPU 연산이 필요하다는 단점이 있습니다. [4]
전망
각주
- ↑ 서버 가상화 한국정보통신기술협회 - http://terms.tta.or.kr/dictionary/dictionaryView.do?word_seq=055358-1
- ↑ 2.0 2.1 What is Server Virtualization? 아틀란틱넷 - https://www.atlantic.net/what-is-server-virtualization/
- ↑ 주창오, 〈가상화(Virtualization) 총정리 - 서버 가상화가 필요한 이유〉, 《티스토리》, 2012-05-21
- ↑ Lucas 팬도라, 〈IT 인프라 6편 가상화〉, 《티스토리》, 2018-10-19
참고자료
같이 보기