[칼럼]가상화의 어제와 오늘, 그리고 내일

전문가 칼럼입력 :2012/06/01 08:54

권희웅
권희웅

가상화는 언제부터 쓰였을까? 아주 옛날부터 개발자들은 가상화를 특별히 개념 짓지 않고 이용해 왔던 것 같다. 마이크로소프트 창업자 중 하나인 폴 앨런이 쓴 아이디어맨이란 책에 베이직 인터프리터 개발 이야기가 나온다. 여기서 폴 앨런은 작업을 쉽고 빠르게 하기 위해 메인프레임 상에서 동작하는 인텔 CPU 에뮬레이터를 개발했고, 이 환경에서 알테어 베이직을 만들었다.

인텔 CPU에서 운영되는 소프트웨어를 개발하기 위해 일일이 하드웨어를 제작하고 디버깅 과정을 거치는 수고를 에뮬레이터를 통해 덜어낸 것이다. 이 에뮬레이터는 향후 인텔이 채용해 사용했다고 하니 완성도가 꽤 높았던 것 같다.

이 당시에도 가상화 기술이 있었다니! 물론 에뮬레이터는 우리가 알고 있는 일반적인 가상화와는 개념 차이가 좀 있다. 요즘 말하는 가상화란 운영체제 가상화를 의미한다. 이러한 가상화의 시초는 IBM이었던 것 같고, 1960년대부터 가상화를 지원하는 제품이 있었다고 한다.

어떻게 보면 가상화라는 기술은 오래된 보편적 기술이다. 현재의 운영체제도 그렇고 과거의 운영체제도 많은 가상화 기술을 내포하고 있었다. 운영체제 상의 애플리케이션들은 시분할 시스템, 프로세스, 그리고 가상 메모리 기법 등을 통해서 마치 자신이 시스템을 독자적으로 사용하고 있는 것처럼 작동한다. 그리고 다수의 사용자들이 터미널을 이용해 마치 자신이 시스템 전체를 사용하는 것처럼 사용할 수 있다. 소개한 것과 같이 가상화 기술은 어느 순간 갑자기 등장한 것이 아니다. 다만 요즘처럼 대중화된 기술로 받아들여지지 않았을 뿐이다.

가상화가 유행하기 시작한 것은 1990년대 말 VM웨어가 알려 지면서부터다. 당시 필자는 VM웨어를 처음 접하고 그 신선함에 놀랐던 기억이 있다. 하지만 감동은 잠시뿐, 시스템의 전반적인 환경이나 성능이 따라 주지 않아서 실제로 무언가를 하기에는 어려웠었다. 가상화가 이제 쓸만하다는 인식을 시장에 심어주기 시작한 것은 CPU 벤더들이 멀티 코어 프로세서를 쏟아 내면서부터가 아닐까 한다.

당시 CPU 업체들은 멀티 코어의 활용 방법에 고민이 많았다. 코어가 많으니 당연히 속도 면에서 개선이 있지 않을까 하는 사용자들의 기대가 있었는데, 실질적으로 멀티 코어에 최적화 된 운영체제와 소프트웨어가 그리 많지 않아 멀티 코어의 이점을 알리기에 어려움이 컸던 것 같다. 이런 상황에서 CPU 벤더들에게 가상화는 멀티 코어의 이점을 강조하기 더 없이 좋은 기술이었다.

멀티코어 프로세서와 가상화 기술의 궁합은 훌륭하다. 멀티코어 프로세서 상의 여유 자원을 적극적으로 활용할 수 있는 방법을 제시하고 있기 때문이다. 그렇다면 2012년 현재 가상화 기술은 완벽한가? 아직은 해결해야 할 과제들이 좀 있다. 소프트웨어 기술 차원의 가상화는 일정 궤도에 올랐지만 아직 주변 기술의 발전과 이에 대한 인식의 전파는 갈 길이 남은 것 같다. 여기서 말하는 주변 기술이란 바로 하드웨어와 밀접히 관련된 부문을 뜻한다.

가상화는 영역의 특성상 겉으로는 소프트웨어로만 보이지만 사실 하드웨어와 관련된 부분이 매우 많다. 가상화는 하나의 완성된 기술이 아니라 소프트웨어, 하드웨어 등 여러 부문에 걸쳐 같이 완성도를 높여 가는 그런 기술이다. 실제로 CPU 벤더 등 하드웨어 부문에서도 가상화 지원에 대해 다양한 연구개발과 기술적 진보를 일궈 내고 있다. 문제는 이런 진보들이 실제 가상화 프로젝트 현장에서 제대로 쓰이지 않고 있다는 것이다.

예를 하나 들어 보자. 가상화 관련해 이상적인 성능을 뽑아 내기 위해서는 네트워크와 스토리지 I/O(입출력) 최적화가 필요하다. 고속 I/O는 가상화 소프트웨어만 가지고는 확보하기 사실 쉽지 않다. 하지만 하드웨어 차원의 가상화 지원을 활용하면 어떨까? 최근 판매되고 있는 네트워크 인터페이스 카드(NIC), 멀티코어 프로세스, 메인보드 등은 가상화에 대한 추가적인 지원을 하고 있다.

최근 눈에 띄는 것은 SR-IOV(Single Root I/O Virtualization)라는 기술이다. 이미 표준으로 지정되었으며 최근 발매되는 하드웨어에 기본으로 탑재되는 경우가 많다. 이 기술은 가상화의 특성상 I/O는 하이퍼바이저를 거치기 때문에 이중의 부하가 발생하는데, 이 기술은 하이퍼바이저를 바이패스(bypass)하도록 하여 가상머신의 성능을 네이티브(native)에 근접하게 끌어올리는 기술이다. 이 기술은 I/O와 관련한 대부분의 영역에서 사용될 것으로 보인다. 하지만, 아직까지는 보편화 되어 사용되지는 않는 것 같다.

주변을 한번 둘러 보면 서버 운영이나 소프트웨어 개발에 가상머신을 사용하는 경우를 심심찮게 찾아 볼 수 있다. 이들 환경을 구축 또는 관리하는 이들은 충분히 빠르다고 말하지는 이도 있지만, 한편으로는 그래도 아직도 느리다라는 소리들도 들려온다. 이런 현실 속에서 한번쯤 SR-IOV 등의 기술에 관심을 가져보면 훨씬 더 쾌적한 가상화 환경을 체험할 수 있을 것이라고 생각한다.

관련기사

하지만 아직까지는 가상화 관련 새로운 기술을 적용하기에는 어려운 점이 많다. 일반적으로는 사용하기 쉽지 않다는 뜻이다. 쉽게 말하면 기술을 충분히 이해한 이가 아니라면 실제 현장에서 사용하기 어렵다는 소리다.

기술을 공부하지 않아도 사용할 수 있는 시기가 오면 아마도 보편화가 된 것이 아닐까 싶다. 그렇다고 마냥 기다리기만 하는 것도 시간 낭비다. 가상화 분야에 관심 많은 개발자나 시스템 관리자라면 가상화의 활용뿐만이 아니라 주변 기술을 적극 활용하는 최적화에 관심을 가져봐야 하지 않을까 싶다.

*본 칼럼 내용은 본지 편집방향과 다를 수 있습니다.

권희웅 IT컬럼니스트

리눅스 커널을 들여다 보고 개발을 해온지 어언 십수년, 현재 네트워크 장비를 개발하고 있습니다. 효율적이고 생산적인 개발을 고민하고 있으며, 리눅스 및 커널 네트워킹과 시스템의 작동 원리 등에 관심이 많습니다.