가상화(Virtualiztion)

박재현·2022년 7월 5일
1

가상화 기술

가상화란 이름을 처음 접해보신 분들은 대부분 리눅스를 처음 배우면서 VMware 혹은 VirtualBox를 사용할려면 BIOS에 들어가 CPU가 가상화기능을 활성화해줘야 한다는 것을 알고 있을 것이다.

이런 과정 속에서 '가상화란 VM(Virtual Machine)을 만들 수 있게 해주는 기술이다.'라고 생각했을 것이다.

하지만 이는 가상화의 일부분에만 해당된다. 실제로 가상화 기술은 VM을 만들 때만 쓰이는 기술이 아니다.
현재, 가상화 기술이 사용되는 예시를 들면 와이파이, 즉 "NAT(Network Address Translation)"이 있다.
실제로 존재하지 않는 IP를 가상으로 만들어 장치에게 배정하는 것이다.

"VMware"나 패킷 분석 프로그램 "Wireshark"를 사용할 시 "VMnet8", "Npcap Loopback Adapter"과 같은 가상 이더넷 어댑터가 생기는 것도 가상화 기술이다.
또한 리눅스 저장장치 기술인 "RAID", "LVM"도 가상화 기술이다.

이것 외에도 정말 많은 컴퓨터 분야에서 "가상화"란 기술은 사용되고 있다.
즉, "가상의 무언가를 만드는 기술"이라면 대부분은 "가상화"기술이다.



서버 가상화 기술

위에서 언급했듯 많은 가상화 기술이 존재하지만, 그중 서버에서 사용되는 가상화를 "서버 가상화"라고 한다.

왜 서버 가상화를 사용할까?

실제로 대부분 CPU나 메모리 같은 하드웨어 자원을 고작 10%~20%정도만 사용한다. 요즘 나오는 컴퓨터들은 유명한 게임 배틀그라운드와 같은 고사양 게임을 해도 CPU의 자원을 50%까지 밖에 사용을 못한다고 한다.

그만큼 현재까지 컴퓨터의 기술은 매우 발전해왔고 그만큼 개인 컴퓨터도 평균적으로 성능이 매우 좋아졌다.
서버 컴퓨터도 마찬가지이다.
단순 메모리만 비교해도 옛날 서버 메모리는 수 십, 수 백 MB였다면, 지금은 마음만 먹으면 수백 GB 이상이 꽂을 수 있고, 심지어 밑에서 배울 가상화 기술이란 것을 이용해 수 십, 수 백, 수 천대의 컴퓨터들을 연결해서 하나의 서버 컴퓨터를 만들 수도 있다.

그렇기에 서버에서 사용되는 서버 프로그램에 비교해, 하드웨어의 진보로 사버 자원이 남아돈다는 것이다.
그리고 이런 남아도는 자원을 최대한 사용할 수 있게 해주는 기술이 바로 "서버 가상화 기술"이다.

가상으로 실제 컴퓨터처럼 구현한 VM을 만들면 이런 남아도는 자원을 모두 사용할 수 있는 것이다. 그런데 보통 이걸 서버들이 주로 사용하기 때문에 "서버 가상화"라고 한다.

왜 서버에서 사용할까??

수 많은 사람들이 이용하는 서버는 1개가 아니다.
각각의 역할(사람들에게 제공하는 서비스)에 따라 페이지를 담당하는 "웹 서버", 메일을 담당하는 "mail서버", 유저들의 정보를 저장하는 "DB서버", "DNS서버", "회사에서 자체 개발한 서버"등 여러 개의 서버를 나누며, 당연히 각각 컴퓨터들이 사용된다.

위에서 언급한 서버 5개만 해도 그 5개의 서버를 24시간 구동하면 엄청난 전력과 공간을 차지한다. 하지만 만약 자원이 남아도는 컴퓨터가 있다면 가상화 기술을 이용해 몇몇의 서버는 VM으로 구현해 전력과 공간을 많이 아낄 수 있다.

서버 가상화는 어떤 식으로 구현하느냐에 따라 크게 "전 가상화(Bare-metal/hypervisor)"와 "반 가상화(para-virtualization)" 그리고 "호스트 기반 가상화"로 나눌 수 있다.


전 가상화(Bare-metal/hypervisor)

제일 먼저 "전 가상화(Bare-metal/hypervisor)"는 이름을 해석하면 어떤 구조의 가상화인지 대략적으로 알 수 있다. 먼저 "Bare"란 보통 "순수한, 아무것도 추가되지 않은" 이런 의미가 있다. 그리고 "metal"은 말 그대로 "금속, 즉 하드웨어"를 뜻한다.
그러면 합친 "Bare-metal"은 바로 어떤 응용프로그램이나 운영체제가 설치되지 않은 순수한 하드웨어를 의미한다.

"hypervisor"는 "VMware"나 "VirtualBox"와 같은 가상머신(VM)을 만들고 관리하는 프로그램을 의미한다.

그럼 지금까지 해석한 단어를 조합하여 "전 가상화"를 해석하면 순수한 하드웨어 위에 운영체제나 BIOS가 아닌 Hypervisor가 있는 구조로 이루어지는 가상화를 의미한다.


이렇게 하드웨어 위에 OS가 아닌 "하이퍼바이저"가 설치되어 여러 VM들을 관리하는 구조로 이루어져 있다.


반 가상화(para-virtualization)

"para"이란 접두사는 "더 진보한, 비슷한"이란 의미를 가진 접두사이다.
여기서는 "더 진보한"이란 뜻을 적용해 "더 진보한 가상화 기술" 이렇게 해석할 수 있다.

실제로도 이 "반 가상화(para-virtualization)"은 진보했다는 뜻처럼 기존의 "전 가상화"보다 더욱 높은 성능을 보여준다. "하이퍼바이저(Hypervisor)"위에 생성되는 VM들이 일부 하드웨어의 자원을 이용함으로써 성능을 올린다.

기존의 전 가상화는 말 그대로 하이퍼바이저가 VM들을 모두 관리하기 때문에, VM들은 직접 하드웨어 자원을 사용할 수 없고 하이퍼바이저를 통해서 자원을 사용했다.
이런 경우 당연히 자원을 사용하려면 중개자(하이퍼바이저)를 거쳐야 하니 당연히 성능이 떨어지게 된다.
하지만, 반 가상화는 하이퍼바이저에 의해 생겨나는 VM들이 직접 일부 하드웨어 자원들을 사용할 수 있다.

반 가상화의 구조를 보면 이렇게 되어 있다.

그림만 봤을 땐 사실 "아키텍처"를 제외하면 "전 가상화"와 똑같다.
하지만 위에서 말했다시피 "VM"들이 직접 일부 하드웨어 자원을 사용할 수 있다는 것에서 큰 차이가 있다. 그 차이는 바로 성능으로 나타난다. 최대 실제 98%까지 실제 컴퓨터처럼 성능 향상이 가능하다고 한다.

이렇듯 실제 컴퓨터와 다를 게 없이 실제 하드웨어 자원을 이용하는 구조이기 때문에 실제 컴퓨터는 아니고, 그렇다고 가상화라고 부르기도 애매한 중간 상태라고 해서 para-Virtualization을 "반 가상화"라고 한다.

하지만 이렇게 반 가상화 기술을 사용하려면 각 "VM에 있는 게스트 OS(VM의 운영체제)의 커널" 일부분을 수정해줘야 한다는 번거로움이 있다.


호스트 기반 가상화

마지막으로 남은 "호스트 기반 가상화"란 말 그대로 호스트를 기반으로 가상화를 하는 것을 의미한다. 여기서 "호스트"란 저희가 사용하는 "윈도우 운영체제"이다.

대부분의 사람들이 구성하는 가상화가 바로 호스트 기반 가상화이다. "VMware"나 "VirtualBox"와 같은 가상화를 구현해주는 프로그램을 이용해서 구현한다.

이런 식으로 이뤄진다. 윈도우 운영체제에서 VMware를 깔아서 VM을 구현하는 모습이다.
여기서 "VMM(Virtual Machine Manager)"란 말 그대로 VM을 관리하는 프로그램이란 뜻이다.


가상화 프로그램

이제 앞에서 설명한 가상화 기술들을 사용하는 "가상화 프로그램"들을 기술적 수준에 따라 세대별로 나눠서 구분을 하려고 한다.

1세대

전 가상화와 반 가상화를 둘다 지원하는 유일한 반가상화 프로그램으로 유명한 "Xen"과 일부 하드웨어 인터페이스는 반 가상화 기능을 지원하는 전 가상화 프로그램 "KVM" 그리고 VMware와 같이 유명한 프로그램이자, 연구 목적 및 개개인에겐 무료로 배포되는 "VirtualBox"가 있다.

1세대를 나누는 기준은 하나의 물리적인 서버에 하이퍼바이저로 여러 개의 가상머신을 생성하는 수준인가? 이다.


2세대

2세대에선 "Oracle VM"과 VMware회사의 "Vsphere", 다른 말로 "ESXi 그리고 Citrix회사의 "XenServer"가 있다.

2세대를 나누는 기준은 다수의 물리적인 서버의 자원들을 하나로 묶어서 "서버 풀(server pool)"을 구성하고 관리할 수 있는 수준인가? 이다.

2세대 가상화 기술같은 경우, 풀(pool)을 이루는 물리적 서버 중 특정 서버에 문제가 생겼을 때, 그 문제 있는 서버에서 실행 중이던 가상머신들을 다른 정상 작동하고 있는 서버로 옮기는 "실시간 마이그레이션 기술"을 사용할 수 있는게 특징이다.


3세대

3세대 가상화에는 "OpenStack"과 "CloudStack", "Eucalyptus" 그리고 "OpenNebula"가 있다.

2세대인 경우 "서버 풀(Server pool)"을 같은 하이퍼바이저들끼리만 구성이 가능했는데, 3세대부터 이제 다른 하이퍼바이저들끼리도 "서버 풀"을 구성할 수 있고 관리가 가능해졌다.



Reference

https://mamu2830.blogspot.com/2020/04/blog-post.html

profile
🌈Infra Engineer

0개의 댓글