가상화
상태바
가상화
  • 데이터넷
  • 승인 2007.06.04 00:00
  • 댓글 0
이 기사를 공유합니다

서버통합 가상화로 비용·공간 절약
APP 시스템 필요조건 미리 파악해야 … 성능 저하 해결이 문제

VM웨어는 애플리케이션을 하나의 시스템에 통합시킴으로써 비용 절감 효과와 유연성, 그리고 네트워크 관리 개선 효과를 가져다주지만, 여기에는 트레이드 오프가 있다. 우리는 가상화 성능이 어디서 저하가 되는지를 파악하고, 이들을 어떻게 최대한 줄일 수 있는지를 알아보기 위해 랩으로 향했다.

VM웨어 인프라 3 스위트 테스트에서 VM웨어 ESX 서버의 성능 오버헤드는 보통 10% 미만이지만 20%까지 높아지기도 했다. 그렇다고 해서 VM웨어를 돌림으로 인해 시스템이 비틀거리게 된다는 얘기는 아니다.
하드웨어 가상화는 서버 통합을 단순화함으로써 비용과 데이터 센터의 공간을 절약해주는 동시에 전력 소모량을 줄여주며, 두 자리 수의 성능 저하는 적절한 플래닝을 통해 미리 피할 수도 있다. 하지만 성능에서 분명히 치러야 할 대가가 있다는 점은 분명하다.
본지 보스턴 파트너 랩에서 우리는 ESX 서버를 돌림으로써 얻을 수 있는 가장 큰 이점은 당연히 기존의 서버들이 더 많은 애플리케이션을 돌리게 함으로써 하드웨어 자원을 최대한 활용할 수 있게 해주는 것임을 확인했다. 사실 가상화는 서버 업체로서는 최악의 악몽일지도 모른다. 가트너는 이 기술이 x86 서버의 연간 성장률이 2010년이면 -0.6%까지 떨어질 가능성도 어느 정도 존재한다고 보고 있다. 우리는 데이터 센터에서의 파워 절감효과도 마찬가지일 것이라고 생각한다.
그렇다면 최근 실시한 독자 설문조사에서 가장 혐오하는 기술 유행어로 가상화가 당당히 SOA에 이어 2위를 차지한 이유는 대체 무엇일까. 네 명 중 한 명의 응답자는 옆에 앉은 영업 사원이 가상화 이야기를 하면 한 대 치고 싶은 마음이 든다고 답했으며, 20%는 기대했던 효과를 보지 못했다고 이야기했다.
하지만 가상화는 이 곳에 남아 있으며, 외면적인 이미지 문제에도 불구하고 분명히 좋은 기술이다. 마이크로소프트 버추얼 서버를 사용하든, VM웨어를 사용하든, 젠(Xen)이나 기타 어떤 패키지를 사용하든 관계없이 가상화는 물리적인 자산의 보다 나은 활용에서부터 향상된 애플리케이션 관리, 가상 할당 자원(메모리 등)의 합이 실제 물리적 메모리를 넘어서는 방식으로 기계들간에 자원을 나누는 능력 등 많은 이점을 제공한다.
가상 기계를 사용하면 오래된 애플리케이션을 오래된 하드웨어로부터 새 시스템으로 옮김으로써 물리적 서버 수를 줄일 수 있다. 이 새 시스템들은 하드웨어 오류를 경험할 확률이 적으며, 오류가 난다 하더라도 부품 가용성이 더 낫기 때문이다. 우리는 가상화 기술의 이점을 증대시킬 수 있는 길을 찾았으며, 우리 테스트에서는 성능 저하로 인해 가장 고통을 덜 받을 수 있는 분야를 집중 조명했다.

가상화의 이점
가상 기계는 하드웨어가 애플리케이션의 가용성과 안정성을 훼손할 필요 없이 다중 OS 인스턴스를 돌릴 수 있게 해준다. 이와 대조적으로 하나의 OS 인스턴스 아래서 다중 애플리케이션을 돌리면 아무리 못해도 유지보수 때문에라도 가용성이 줄어들 수 있다. OS에서 다중 애플리케이션이 돌아감으로써 최악의 경우에는 안정성이 떨어져 예상치 못한 다운타임이 야기될 수도 있다.
물론 통합도 위험을 높인다. 하나의 물리적 서버에서 다중 VM을 돌리면 서버당 하나의 애플리케이션을 돌리는 데 비해 더 많은 애플리케이션이 하드웨어 오류에 노출된다. 하지만 대부분 이것은 감수할 만한 가치가 있는 위험이다. 총 서버 수를 줄이면 보다 작은 데이터 센터 공간에 더 많은 서버를 둘 수 있기 때문에 공간과 쿨링 비용을 한층 잘 제어할 수 있다.
하지만 역시 하나의 물리적 공간에 통합을 시키면, 데이터 센터에서 정전이나 화재가 발생할 경우 그 공간에서 돌아가는 모든 애플리케이션에게 위험이 커진다. 영향을 받게 되는 애플리케이션 수가 같은 수의 애플리케이션을 여러 데이터 센터에서 지원하고 있을 때보다도 더 많아지기 때문이다. 가상화를 이용해 서버를 통합시킬 경우에는 위험을 최소화할 수 있도록 중복성을 고려해야 한다.
시스템 관리에 있어 가상화는 IT에서 하드웨어 유지보수를 처리하고, 하드웨어를 애플리케이션 지원 항목에서 제외시키며, 애플리케이션 성능을 보다 잘 관리할 수 있게 해주는 모빌리티와 유연성을 제공한다. VM웨어에서와 같은 가상 환경은 OS와 애플리케이션이 설치되는 그 자체의 가상 하드웨어와 BIOS를 제공한다. 덕분에 관리자가 애플리케이션을 다른 시스템으로 옮기기가 훨씬 더 수월하며, 가상 하드웨어는 언제나 같은 것이기 때문에 애플리케이션에서 하드웨어 호환성 문제가 발생할 가능성도 줄어든다.
현실적으로 말하자면, 이것은 일상적인 유지보수 일을 단순화해준다. 서버가 오프라인이 돼야 한다면 모든 VM을 그 서버에서 가상화 환경이 돌아가고 있는 다른 서버로 옮기기만 하면 되며, 애플리케이션 가용성은 중단되지 않는다.
애플리케이션에 대한 기술 지원을 받을 경우에는, 가상 환경에서 소프트웨어 업체에서 자사 애플리케이션이 돌아가게 지원하는 한 하드웨어와 관련된 호환성 문제는 피할 수 있다. 단 iSCSI 및 SAN 서브시스템 같은 통합 스토리지 장비와 애플리케이션들간의 관계로 인해 이런 문제를 완전히 없앨 수는 없다. 여기에는 또한 특정 드라이브와, 가상화 환경에 대한 지원도 필요할 것이다.
이러한 가상 기계의 모빌러티 덕분에 IT는 또한 성능이 문제가 될 경우에 애플리케이션을 한 서버에서 다른 서버로 보다 쉽게 마이그레이팅할 수 있다. 이러한 기능은 시간이 흐르면서 사용자 수가 늘거나 줄 때 애플리케이션 성능에 변화가 생기지 않도록 하는 데 도움이 된다. 즉 어떤 한 서버가 네 개의 VM을 돌리고 있는데, 이들 VM 중 하나에서 돌아가는 애플리케이션에 대한 사용자 수요가 서버에서 지탱하기 힘들 정도로 늘어난다고 해보자. IT는 이 애플리케이션을 보다 강력한 시스템으로 마이그레이팅하거나, 다른 VM을 다른 시스템으로 마이그레이팅함으로써 자원을 비울 수 있다.
이러한 방식의 댓가는 VM 이미지 관리 오버헤드가 늘어난다는 것이다. VM이 한 시스템에서 다른 시스템으로 쉽게 이동할 수 있는, 즉 결정적인 하드웨어 오류시 복구가 가능한, 진정으로 이식성 있는 환경을 갖추기 위해서는 회사에서 알티리스(Altiris)의 디플로이먼트 솔루션(Deployment Solution) 같은 전문 툴에 투자를 해야 한다. 게다가 이들은 VM의 이미지를 최신 상태로 유지하고, 네트워크와 스토리지를 이해함으로써 VM이 다른 서버로 마이그레이팅될 때 스토리지 서브시스템으로 효율적인 액세스를 갖게 해야 한다는 사실을 명심해야 한다.
ESX 서버는 가상 하드웨어 인스턴스를 만듦으로써, IT에서 같은 박스에 다중 인스턴스를 만들 수 있게 해준다. 까다로운 부분은 사용자가 하드웨어를 최대한 활용하면서 애플리케이션 성능 하락을 보지 않도록, 이들 VM 인스턴스에서 돌아갈 수 있는 적절한 애플리케이션 조합을 찾는 일이다. 이번 테스트에서 우리가 맞닥뜨린 가장 큰 도전은 각각 자체 애플리케이션을 돌리고 있는 다른 VM을 조합에 추가를 시킬 때 하나의 가상 기계 인스턴스에서 애플리케이션 성능이 얼마나 감소가 되는지를 파악하는 일이었다.
성능은 애플리케이션과 애플리케이션이 요구하는 자원의 종류(디스크, 메모리, 프로세서)에 따라 달라지겠지만, 이 자리를 빌어 다음과 같은 몇 가지 권장 사항은 말해줄 수 있겠다. 우선 가상화의 오버헤드를 예측하라. 가상 하드웨어 자원이 실제 하드웨어에 비해 큰 혜택을 가져다 줄 것이라고 기대하지 말라. 서로 다른 자원 필요조건을 가진 애플리케이션을 같은 하드웨어에서 그루핑하라. 자원 이용에 우선순위를 정하는 VM웨어의 유틸리티를 사용하라. VM을 서로 다른 하드웨어에 쉽게 마이그레이팅할 수 있게 해주는 써드파티 툴과 VM웨어를 사용하라.

현명한 선택
가상화는 원래 그 본성상, 하드웨어에서 네이티브로 돌아가는 애플리케이션을 같은 하드웨어에 있는 VM에서 돌아가는 같은 애플리케이션과 비교할 때 오버헤드가 발생할 것이다. 이번 테스트에서 그 비율은 애플리케이션에 따라 달랐지만, 낮게는 6%에서 높게는 20%까지, 보통 10% 미만이었다.
우리는 두 대의 델 파워에지(PowerEdge) 2850 서버에서 수많은 애플리케이션 테스트를 수행했다. 두 시스템은 모두 두 개의 듀얼 코어 인텔 제온 프로세서와 2GB의 램, 그리고 3 드라이브 RAID 어레이를 이용해 동일하게 구성됐다. 제온 프로세서에는 인텔 VT(Virtualization Technology)가 포함됐는데, 이것은 CPU 가상화에 대한 마이크로코드 최적화를 제공한다.
우리는 마이크로소프트의 익스체인지 서버 2003, SQL 서버 2005, 그리고 IIS(Internet Information Services) 등 세 가지 애플리케이션에 대한 테스트의 베이스라인을 수행했으며, 여기에는 마이크로소프트의 익스체인지 서버 2003 LoadSim과 SQLIOSim 뿐만 아니라 볼랜드의 실크퍼포머(SilkPerformer) 2006 R2 같은 무료 및 상용 툴 조합이 사용되었다.
우리 테스트 환경은 SAN(Storage Area Network)과 같이 특정 애플리케이션용 데이터 스토리지용으로 스토리지 서브시스템을 전담시키지 않았다는 점에서 전형적인 기업 환경과는 차이가 난다. SAN은 익스체인지 같은 애플리케이션에서 데이터 스토리지와 데이터 관리를 단순화해줄 뿐만 아니라, OS와 애플리케이션이 데이터 스토리지용으로 디스크에 액세스를 해야 하는 게 아니라 가상 메모리로 액세스를 필요로 할 때 야기되는 자원 쟁탈도 방지해 준다. 전담 스토리지 서브시스템이 있으면 이러한 쟁탈 현상이 최소화된다.
테스트 결과로 보면, 로컬 드라이브 서브시스템에의 애플리케이션 충돌 실행은 VM웨어 VI3의 오버헤드 테스트에 거의 영향을 미치지 못했다. ESX 서버의 오버헤드는 시스템 메모리와 프로세싱 파워로 한정이 된다. 다중 VM을 동시에 실행시킨 테스트에서도 영향력은 역시 애플리케이션이 디스크로의 지속적 액세스를 필요로 하느냐에 따라 좌우됐다.
아마도 서버 통합을 위해 가상화를 원하는 회사들은 데이터가 서버나 SAN에 존재하느냐의 여부에 관계없이 디스크 자원에 대해 여전히 얼마간의 압박을 받을 것이다. VM을 이용해 다중 파일과 프린트 서버를 하나의 박스로 통합시키고, VM에 파일을 저장하거나 모든 서버의 모든 데이터를 하나의 SAN에 보관한다고 가정하다. 어떤 경우든 VM은 같은 공유 자원으로부터 데이터로 액세스하게 될 것이다.

가상화 성능 오버헤드
가상화의 성능 오버헤드는 두 가지 기본적인 가정에 의거해 볼 수 있다. 첫째 IT가 회사에서 소유하고 있는 서버를 최대한 활용하기 위해 가상화 기술을 사용하거나, 혹은 회사에서 기존의 서버를 새로운 하드웨어로 통합시키고자 한다는 것이다. 베이스라인 테스팅의 목적으로 우리는 서버 활용의 극대화라는 첫 번째 전제를 이용했다.
최대 활용이라는 시나리오 하에, IT는 이론상 기존의 메모리가 완전히 사용되고 있지 않기 때문에 메모리를 나눈다. 전담 하드웨어에서 돌아가는 애플리케이션이 그 서버의 메모리와 프로세싱 용량의 일부만 사용한다고 하자(2GB 중 512MB거나 2.8GHz 중 25% 등). 이 애플리케이션을 VM웨어의 ESX 서버로 마이그레이팅하면 이 512MB와 700MHz를 애플리케이션에 전담시킬 수 있으며, 여전히 사용 가능한 메모리와 프로세싱 파워도 갖고 있게 된다. 따라서 테스트에서 우리는 VM 인스턴스에서 돌아가는 애플리케이션의 필요를 기반으로 2GB를 나누었다. 예를 들어 SQL 서버는 최소 1GB의 램이 필요한 반면 익스체인지 서버 2003은 512MB의 램에서도 돌아갈 것이다.
VM웨어에는 IT에서 VM용으로 물리적 메모리를 과도 할당(overcommit)할 수 있게 해주는 메모리 페이지 공유(memory-page sharing) 기술이 있다. 이 기술은 VI3가 같은 하드웨어에서 돌아가는 VM에서 같은 OS를 돌릴 때 물리적 메모리보다 가상 메모리를 두 배 이상 많이 할당할 수 있게 해준다. 이것은 파일 및 프린트 서비스와 같이 개별적인 서버에서 이용량이 적은 애플리케이션들이 많이 돌아가고 있고, 이들을 통합시키고자 하는 상황에서 유용하다. 하나의 서버가 10여 개의 VM에서 돌아갈 수도 있는데, 그 이유는 이런 모든 시스템들이 동시에 프로세싱 파워와 메모리를 필요로 하는 일은 흔치 않기 때문이며, 요청이 자원을 초과하더라도 성능 저하가 큰 문제가 되지 않기 때문이다.
구조적으로 볼 때, VM웨어의 ESX 서버 2.0은 리눅스에서 불필요한 부분을 제거한 스트립트 다운(stripped-down) 버전을 이용해 VM을 호스팅한 다음, 공통의 가상 BIOS와 가상 하드웨어 드라이버를 통해 각 VM의 하드웨어를 추상화한다. 첫 테스트에서 우리는 이들 두 레이어의 성능 손실을 측정했지만, 각각의 가상 기계에서 사용 가능한 메모리가 적다는 점도 또한 감안했다. ESX 서버는 약 200MB의 메모리를 필요로 했다.


댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.