서버 가상화
서버 가상화(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]
특징
사용 이유
장점
10. 에너지 절약, 녹색 성장 모든 사람이“고래를 지키자”나“나무 살리기” 운동을 하지는 않는다. 그래도 괜찮다. 필자도 그런 티셔츠를 찾아 입지는 않으니까. 하지만 2012년, 그 누가 에너지 절약에 무관심할 수 있을까? 물리 서버를 가상머신으로 이동시키고 훨씬 적은 수의 물리 서버로 통합하면, 매월 부과되는 데이터센터의 전기와 냉각 요금이 줄어든다. 2000년대 초반 서버 가상화 업체들이 가장 먼저 꼽았던 장점이 바로 이것인데, 지금도 여전히 유효하다.
9. 데이터센터의 규모 축소 앞서 말한 이점과 같은 맥락의 장점이다. 서버 가상화로 적은 에너지 사용으로 인한 비용 절감에 더해 서버 통합을 통해 데이터센터의 규모까지 줄일 수 있다. 이는 더 적은 수의 서버, 더 적은 수의 네트워크 장비, 더 적은 수의 랙을 의미하는데, 모두 데이터센터의 사용 면적 축소로 이어진다. 데이터센터를 소유하지 않은 경우라면, 사용 면적 절감에 따른 비용 절감이나 공간의 다른 활용이 가능해진다.
8. QA랩 환경 데이터센터 내의 서버 통합 작업을 마쳤다면, 그 하드웨어를 QA 그룹에게 주고, 랩 환경을 구축하게 하는 것은 어떨까? 서버 가상화는 독립 랩 혹은 테스트 환경을 손쉽게 구축하고, 격리된 네트워크 내에서 작동할 수 있게 해준다. 서버 가상화 솔루션 업체들이 시험적으로 구현한 대규모 가상 랩을 보면, 순수한 물리 서버들로 이런 환경을 구축하는 것이 비용 면에서 훨씬 불리하고, 기술적으로는 불가능에 가깝다는 것을 확인할 수 있다.
7. 빠른 서버 프로비저닝 데이터센터 관리자의 입장에서 현업부서에서 요청이 있을 때마다‘즉석 가동 (instant-on)’에 가까운 속도로 컴퓨팅 용량을 제공하는 것을 상상해 보라. 서버 가상화는 시스템 프로비저닝을 제공하고 즉각적인 배치를 위한 유연한 용량을 가능하게 해준다. 골드 이미지나 마스터 템플릿, 혹은 기존의 가상머신을 빠르게 복제해 몇 분 안에 서버를 구동할 수 있다. 구매 요청서를 작성하고, 장비 출하와 수령을 기다리고, 물리 하드웨어를 끼우고 쌓고 케이블 연결하고, 운영체제와 애플리케이션이 설치되기를 완료를 몇 시간씩 기다려야 하는 과정을 생각해 보라. 필자는 이제 다음>다음>다음 클릭을 어떻게 했었는지 기억도 잘 나지 않는다.
6. 장비 업체에 대한 종속 방지 항상 나쁜 일은 아니지만, 하나의 서버 업체나 서버 모델에 묶이는 일이 꽤나 답답할 수 있다. 하지만 서버 가상화는 하드웨어에의 종속에서 벗어나, 가상화된 하드웨어를 사용하기 때문에, 데이터센터 관리자와 소유자는 서버 장비 선택에 있어서 상당한 유연성을 얻는다. 이는 장비의 교체나 추가 구입에 있어서 하드웨어 업체와의 협상에서도 유리한 요소로 작용한다.
5. 서버 가동시간의 증가 대부분의 서버 가상화 플랫폼이 비즈니스의 연속성과 가동시간을 증가시켜주는 다양하고 발달된 기능을 제공하는데, 이는 물리 서버들에서 찾기 힘든 부분이다. 업체별로 기능명은 다를 수 있지만, 보통 실시간 마이그레이션, 스토리지 마이그레이션, 폴트톨러런스, 고가용성, DRS(Distributed Resource Scheduling) 등을 제공한다. 이 기술들은 가상머신이 안정적으로 운영되고, 대비하지 못한 정전에서 빠르게 복구될 수 있도록 돕는다. 가상머신을 한 서버에서 다른 서버로 빠르고 간편하게 이동할 수 있는 능력은 아마 폭넓은 사용자들에게 서버 가상화의 가장 큰 이점으로 다가올 것이다. 가상머신을 한 데이터센터에서 네트워크 지연 시간과 상관없이 다른 데이터센터로 이전할 수 있는 원거리 마이그레이션이 가능할 정도로 기술이 계속 성숙해 감에 따라, 서버 가상화 세계에 대한 수요는 갈수록 증가하고 있다.
4. 재난 복구 향상 서버 가상화는 재난 복구 솔루션에 있어서 세 가지 중요한 요소를 제공한다. 첫째는 하드웨어 추상화 능력이다. 특정 하드웨어 업체나 서버 모델에 대한 의존성을 제거함으로서, 재난 복구 사이트가 생산 환경에 맞추기 위해 동일 하드웨어를 지닐 필요가 없어지고, IT가 값싼 하드웨어를 구입해 비용을 절감할 수 있게 해준다. 둘째로, 서버를 적은 수의 물리 기기들로 통합시킴으로써 복제 사이트를 쉽게 만들 수 있게 해준다. 그리고 셋째로, 대다수의 기업 서버 가상화 플랫폼에는 재난이 닥쳤을 때 시스템 대체 작동을 자동적으로 도와줄 소프트웨어가 설치되어 있다. 같은 소프트웨어가 보통 재난 복구 시스템 대체작동의 테스트에도 쓰이게 된다. 그래서 일이 닥쳤을 때 그저 두 손을 모으고 기도하는 대신, 시스템 대체 작동이 실제로 잘 이뤄지는지 직접 실제로 테스트해 볼 수 있다.
3. 애플리케이션 독립 물리 서버의 데이터센터는 애플리케이션을 독립시키기 위해 “단일앱/단일서버” 모델로 이동한다. 하지만 이는 물리 서버가 제멋대로 확대되어 비용이 증가하고 서버 이용도가 낮아지는 결과를 낳는다. 서버 가상화는 애플리케이션을 독립시키고 많은 가상머신을 훨씬 적은 수의 물리 서버로 통합하면서 애플리케이션의 호환성 문제들을 없앤다. 가상머신에 필요한 만큼 정확한 CPU, 메모리, 스토리지 자원을 공급해, 물리 서버의 자원을 충분히 활용하여, 서버의 낭비도 줄일 수 있다.
2. 오래된 애플리케이션의 수명 연장 솔직히, 오래된 애플리케이션들은 기업 환경에서 계속 돌아가고 있을 것이다. 그 애플리케이션들은 아마도 새로운 운영체제나 새로운 하드웨어에서 작동이 되지 않거나, IT팀이 손대기를 꺼려하고, 애플리케이션을 제작한 사람이나 회사가 더 이상 업데이트를 해주지 않는 등의 공통점을 가진다. 애플리케이션과 그 환경을 가상화시키고 압축해서, 수명을 연장시키고, 가동시간을 유지하고, 데이터센터 구석에 숨어있던 오래된 펜티엄 기기도 없애버릴 수 있게 해준다. 먼지에 뒤덮이고, 오래 전에 퇴사하여 이름도 모르는 관리자의 지문이 남아있는 바로 그것 말이다.
1. 클라우드로의 이동을 돕는다 그렇다, 클라우드! 누구나 클라우드가 언젠가 닥쳐올 환경이라는 것을 이미 예상하고 있었을 것이다. 이미 서버 가상화에 대해 이야기하는 것보다 클라우드에 대해 이야기하는 회수가 훨씬 많아졌을 것이다. 한 가지 희소식은 서버를 가상화하고 기반 하드웨어로부터 추상화시키는 과정을 통해 이미 클라우드로의 이전을 준비하고 있다는 것이다. 단순한 가상화 데이터센터에서 프라이빗 클라우드로 이전하는 것이 그 첫걸음이다. 그러나 퍼블릭 클라우드가 성숙하고 기술이 발달하면서 이제 데이터를 자체 데이터센터에서 클라우드 호스팅 시설로 옮기는 것을 더 편안하게 받아들일 수 있게 되고, 거기 도달하는데 한 걸음 앞설 수 있게 된다. 가상화를 진행하는 과정은 클라우드로의 여정을 준비할 수 있도록 도와 줄 것이다.
단점
기술
구성
- 하이퍼바이저
하이퍼바이저는 여러 개의 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 연산이 필요하다는 단점이 있습니다. [3]
전망
각주
- ↑ 서버 가상화 한국정보통신기술협회 - 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/
- ↑ Lucas 팬도라, 〈IT 인프라 6편 가상화〉, 《티스토리》, 2018-10-19
참고자료
같이 보기