}

블로그 소개


*여러분들의 따듯한 댓글은 5%, 팔로우는 10% 블로그 포스팅 속도와 퀄리티를 높여줍니다.*

프로필

팔로우 해주시면 포스트할 때 큰 힘이 됩니다!!! 사실 저도 이 팔로우가 무슨 기능이 있는지는 모르겠습니다만, 팔로우 수가 늘면 '날 응원해주는 사람들이 있구나' 생각이 들어서 큰 힘이 됩니다.

팔로어

다른 페이지로 이동


리눅스 독학 페이지 운영체제 독학 페이지 네트워크 독학 페이지 하드웨어 독학 페이지 프로그래밍 독학 페이지 보안 페이지

오스 페이지 다이어트 정보 페이지 게임 정보 페이지 인생 꿀팁


****사진을 클릭하시면 페이지로 이동할 수 있습니다!****

<===***===↓↓↓You can use translate on the chrome↓↓↓===***===>

2020년 4월 6일 월요일

가상화 기술(전가상화, 반가상화, 호스트기반 가상화)쉽게 설명!

안녕하세요 마무입니다!오늘은 저희들이 리눅스를 배울 때 사용하게 될 "가상화(virtualization)기술", "전가상화", "반가상화", "호스트기반 가상화", "하이퍼바이저란?", "아키텍처란"에 대해 배워보겠습니다.

이 글을 읽으시면

가상화 기술, 전가상화, 반가상화, 호스트 기반 가상화 아키텍처 하이퍼바이저

에 대해서 아시게 될 겁니다!

--목차--

1. 가상화 기술이란?

2. 서버 가상화 기술이란

3. 전 가상화(bare-metal/hypervisor), 하이퍼바이저란, 아키텍처란

4. 반 가상화(para-virtualization)

5. 호스트 기반 가상화, VMM이란

6. 1세대 2세대 3세대로 분류

--------

여기서 못 찾은 정보는
리눅스 독학 페이지 : https://mamu2830.blogspot.com/p/blog-page_13.html
운영체제 독학 페이지 : https://mamu2830.blogspot.com/p/blog-page_14.html
에서 찾아보세요!




1. 가상화 기술이란?

가상화(virtualization)란 이름을 처음 접해보신 분들은 대부분 리눅스를 처음 배우면서 VMware 혹은 VirtualBox를 사용할려면 바이오스(BIOS)에 들어가 CPU가 가상화기능을 사용하게 해야한다는 것을 아셨을텐데요.

이런 과정속에서 '아 가상화란 VM(Virtual Machine)을 만들 수 있게 해주는 기술이구나!'라고 생각하셨을 겁니다

하지만 그건 100점 만점에 50점짜리 정답입니다. 실제로 이 가상화란 기술은 VM을 만들 때만 쓰이는 기술이 아니거든요 

현재 "가상화" 기술이 사용되는  예시를 한번 들어볼까요?

저희들이 쓰고 있는 와이파이, 즉 "NAT(Network Address Translation)"도 바로 가상화 기술입니다.

실제로 존재하지 않는 IP를 가상으로 만들어 장치에게 배정하는 것이죠

나중에 리눅스마스터 1급 범위를 공부하시면 "VMware"이나 패킷 분석 프로그램 "Wireshark" 사용할 시 "VMnet8"이나 "Npcap Loopback Adapter"과 같은 "가상 이더넷 어댑터"가 생기는 것을 알 수 있을텐데, 이런 가상 어댑터를 만드는 것도 가상화 기술입니다.

또한 저희 리눅스 배우는 과정에서 배울, 서버에서 제일 중요한 저장장치 기술인 "RAID""LVM"도 가상화 기술 입니다.

실제 볼륨(저장 공간)들을 합쳐서 가상의 볼륨을 만드니 가상화 기술이 필요하겠죠?

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




2. 서버 가상화 기술이란

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

서버 가상화라... 왜 서버에서 가상화 기술을 사용할까요?

여러분들은 그걸 아십니까? 실제로 저흰 CPU나 메모리 같은 하드웨어 자원을 고작 10%~20%정도만 사용한다는 것을 말이죠. 요즘 나오는 컴퓨터들은 유명한 게임 배틀그라운드 같은 고사양 게임을 해도 CPU의 자원을 50%까지 밖에 사용을 못 한다고 합니다.(물론 상대적인 겁니다, 컴퓨터 성능이 낮으면 당연히 CPU를 많이 쓰거나 구동도 못하겠죠)

그만큼 현재까지 컴퓨터의 기술은 매우 발전해왔고 그만큼 개인 컴퓨터(PC)도 평균적으로 성능이 매우 좋아졌다는 것이죠.

서버 컴퓨터도 마찬가지입니다. 

인터넷이 등장하고, 웹 서버가 상용화된 게 1998년도라고 치면(아파치 1.3버전이 1998년도에 나왔으니), 24년이 지났지만 아파치는 아직도 1.3버전을 쓰는 곳이 있는데, 서버 컴퓨터의 성능은 말도 안되게 좋아졌죠.

단순 메모리만 비교해도 옛날 서버 메모리는 수십, 수백 MB였다면, 지금은 마음만 먹으면 수백 GB 이상이 꽂을 수 있고, 심지어 밑에서 배울 가상화 기술이란 것을 이용해 수 십수 백, 수 천대의 컴퓨터들을 연결해서 하나의 서버 컴퓨터를 만들 수도 있죠.
 
그렇기에 서버에서 사용되는 서버 프로그램에 비교해, 하드웨어의 진보로 서버 자원이 남아돈다는 것이죠.

그리고 이런 남아도는 자원을 최대한 사용할 수 있게 해주는 기술이 바로 "서버 가상화 기술"입니다!

가상으로 실제 컴퓨터처럼 구현한 VM(Virtual Machine)을 만들면 이런 남아도는 자원을 모두 사용할 수 있는 것이죠.

그런데 보통 이걸 서버들이 자주 사용하기 때문에 "서버 가상화"라고 하는겁니다.

왜 서버에서 사용할까요?

수 많은 사람들이 이용하는 서버는 사실 1개가 아닙니다.

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

자 그럼 위에서 언급한 서버 5개만 해도 그 5개의 서버를 24시간 구동하면 엄청난 전력과 공간을 차지하겠죠? 

하지만 만약 자원이 남아도는 컴퓨터가 있다면 가상화 기술을 이용해 몇 몇의 서버는 VM으로 구현해 전력과 공간을 많이 아낄 수 있습니다.

생각해보세요 한 컴퓨터에 2개의 서버만 가상화로 구현해도 전력과 공간을 2배로 아낄 수 있는 것이죠!

바로 이런 서버 가상화는 실제로도 많이 사용되고 있으며, 서버를 관리를 목적으로 취득하는 리눅스마스터 1급도 공부할 때 이런 서버 가상화기술을 이용해 여러 개의 서버를 운영하고 사용할 것입니다! (벌써부터 두근두근 하지 않나요? ㅎㅎ)

물론 그전에 리눅스 마스터 2급 범위인 기본적인 "리눅스" 사용방법을 마스터 해야겠지만요~

그 서버 가상화중에서 저흰 리눅스를 공부하고 있고, 또한 리눅스는 서버를 운영할 때 많이 사용되는 운영체제이기 때문에 "리눅스 서버"에 사용되는 가상화 기술에 좀 더 초점을 두고 알아보려 합니다.

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



3. 전 가상화(bare-metal/hypervisor)


제일 먼저  "전 가상화(Bare-metal/hypervisor)"는 이름을 해석하면 어떤 구조의 가상화인지 대략적으로 알 수 있습니다.

먼저 "Bare"란 보통 "순수한, 아무것도 추가되지 않은" 이런 의미가 있죠. 그리고 "metal"은 말 그대로 "금속, 즉 하드웨어"를 뜻하고요

그러면 합친 "Bare-metal"은 무엇일까요? 바로 어떤 응용프로그램이나 운영체제(OS)가 설치되지 않은 순수한 하드웨어를 의미합니다

"hypervisor"는 무엇일까요? "hypervisor"란 우리가 리눅스를 공부하고 사용할 때 이용하는 "VMware""VirtualBox"와 같은 가상머신(VM{Virtual Machine})을 만들고 관리하는 프로그램을 의미합니다.

기존의 "visor"란 단어는 "햇빛을 막아주는 작은 조각"이란 뜻을 가진 단어이지만.
저같은 경우 "hyper(기존의 것을 뛰어넘은)" "visor(see를 의미하는 접두사 vis와 주체를 의하는 or를 합침)"이라 생각을 했습니다.

그러면 "모든 것(VM들)을 보는(관리하는) 녀석" = "Hypervisor" 이렇게 되는 거죠!

이렇게 보니 여러개의 VM들을 만들고 관리해주는 녀석이라는 느낌으로 "Hypervisor"라는
이름이 잘 매치되고 외워지지 않습니까?

자 이제 그럼 지금까지 배운 단어를 통해 다시 "전 가상화(Bare-metal/hypervisor)"가 뭔지 해석해보겠습니다!

그렇습니다 바로 "순수한 하드웨어 위에 운영체제나 BIOS가 아닌 Hypervisor가 있는 구조로 이루어지는 가상화"를 의미합니다.

실제로도 이 "전 가상화"



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

우리가 아는 구조와 달리, 그냥 메인 OS없이 가상화로 구현하는 VM들만 사용한다는 점에서 문화적인 충격이 아닙니까? ㅋㅋㅋ 저는 이걸 알았을 때 낯선 지역의 땅을 밟는 듯한 기분이 들었습니다~

맨 밑에 있는 "아키텍처(Architecture)""건축학"을 의미하죠? 컴퓨터에서도 비슷한 의미입니다! 바로 "컴퓨터 하드웨어를 어떻게 구성했느냐" 의미로 말이죠!

기존의 "개인 컴퓨터(PC)"의 하드웨어를 구성하는 것과 "서버용으로 사용되는 컴퓨터" 혹은 "라우트"같이 각각 다른 용도의 머신들은 당연히 하드웨어의 구조도 다르겠죠?

마찬가지 "전 가상화 아키텍처"란 컴퓨터의 구조를 "전 가상화를 목적으로 하드웨어를 구성했다"란 의미입니다.

생각보단 그리 어렵지 않죠?



4. 반 가상화(para-virtualization)


자 다음으로 "반 가상화(para-virtualization)"는 무슨 의미일까요?
여기서 "para"이란 접두사는 "더 진보한, 비슷한"이란 의미를 가진 접두사입니다.

여기서는 "더 진보한"이란 뜻을 적용해 "para 가상화"=="더 진보한 가상화 기술"이렇게
해석할 수 있겠네요!

실제로도 이 "반 가상화(para-virtualization)"는 진보(발전)했다는 뜻처럼 기존의 "전 가상화"보다 더욱 높은 성능을 보여줍니다! 바로 "하이퍼바이저(Hypervisor)"위에 생성되는 "가상머신(VM)"들이 일부 하드웨어의 자원을 이용하므로써 말이죠!

기존의 "전 가상화"는 말 그대로 하이퍼바이저가 VM들을 모두 관리하기 때문에, "VM"들은 직접 하드웨어 자원을 사용할 수 없고 하이퍼바이저를 통해서 자원을 사용했습니다.

이런 경우 당연히 자원을 사용하려면 중개자(하이퍼바이저)를 거쳐야 하니 당연히 성능이 떨어지겠죠.

하지만 반 가상화는 하이퍼바이저에 의해 생겨나는 "VM"들이 직접 일부 하드웨어 자원들을 사용할 수 있습니다.

"반 가상화"의 구조를 보시면



이렇게 돼 있습니다.

그림만 봤을 땐 사실 "아키텍처"를 제외하면 "전 가상화"와 똑같죠.

하지만 위에서 말했다시피 "VM"들이 직접 일부 하드웨어 자원을 사용할 수 있다는 것에서 큰 차이가 있습니다. 그 차이는 바로 성능으로 나타나죠, 최대 실제 98%까지 실제 컴퓨터처럼 성능 향상이 가능하다고 하네요!

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

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



5. 호스트 기반 가상화


자 마지막으로 남은 "호스트 기반 가상화"란 말그대로 "호스트(주최자, 주인)"를 기반으로 가상화를 하는 것을 의미합니다. 여기서 "호스트"란 저희가 사용하는 "윈도우 운영체제"가 되겠죠.

대부분의 사람들이 구성하는 가상화가 바로 이겁니다. "VMware"나 "VirtualBox"와 같은 가상화를 구현해주는 프로그램을 이용해서 말이죠.

"호스트 기반 가상화" 구조를 보시면



이런식으로 이루어집니다. 저희가 윈도우 운영체제에서 VMware를 깔아서 VM를 구현하는 모습으로, 딱히 어려울 건 없죠?

여기서 "VMM(Virtual Machine Manager)"란 말 그대로 가상머신(VM)을 관리하는 프로그램(Manager)이란 뜻입니다. 그냥 Hypervisor와 비슷하다고 생각하시면 됩니다.





6. 1세대 2세대 3세대로 분류


자 이렇게 저희는 "서버에서 사용되는 가상화 기술 종류"를 알아보았는데요

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

먼저 1세대에선 전 가상화와 반 가상화를 둘다 지원하는 유일한 반가상화 프로그램으로 유명한 "Xen"

일부 하드웨어 인터페이스는 반 가상화기능을 지원하는 전 가상화 프로그램 "KVM"

그리고 VMware와 같이 유명한 프로그램이자, 연구 목적 및 개개인에겐 무료로 배포되는 "VirtualBox"가 있습니다.

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

우리가 평소에 알던 가상화들은 대부분 여기에 포함됩니다!

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

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

참고로 "Pool"이란 단어는 컴퓨터공학에서 자주 나오는데요 "pool"이란 단어의 뜻인 "같이 사용하기 위해 함께 모인 것"처럼 "서버 풀"이란 다수의 서버를 합친 걸 의미합니다.

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

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

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

3세대라는 이름에 걸맞게 2세대보다 진보한 기술이라고 할 수 있죠!


자 이 포스트에서 저희는 "가상화"란 개념과 그리고 서버에서 사용되는 가상화 기술들에 대해서 알아봤습니다! 지금 이런 걸 알아야해? 싶겠지만, 서버를 관리하는 수준이 되려면 당연히 알아야하는 지식이랍니다!

또한 서버뿐만 아니라 프로그래밍 공부중에서도, 보안 공부중에서도 네트워크 공부중에서도 자주 쓰이는 기술이자 개념이니 오늘 이렇게 공부하면 다음에 "가상화"란 단어가 나와도 잘 이해하실 수 있을겁니다!

도움이 되셨다면 따듯한 댓글 및 팔로우를 해주시면 저에게 정말 큰 힘이 됩니다!!

그럼 다음에 더욱 발전된 모습으로 찾아뵙겠습니다~!










댓글 12개:

  1. 재미있게 잘 읽었습니다!!

    답글삭제
  2. 리눅스 공부하는데 큰 도움이 됩니다~!

    답글삭제
  3. 정말 재미있게 읽었습니다^^ 감사합니다

    답글삭제
    답글
    1. 재밌게 읽으셨다니 다행입니다!

      삭제
  4. 전공자임에도불구하고 10%밖에 이해못하던것을 70%이상 이해시켜주는 당신은.. 신입니다.
    요즘 10대 학생들이 문해력이 딸리듯이, 하나하나설명해주는 이런 글은 토익 신발사이즈인 저에게 구원가도 같은 글이네요.
    순서대로 정독하겠습니다. 감사합니다. 이제야 목표가 생기는거같습니다.

    답글삭제
    답글
    1. 전공자에게도 큰 도움이 돼 다행입니다! ㅎㅎ
      저의 다른 포스트들도 도움이 되길 바랄게요!!

      삭제

#1 여러분들이 소중한 시간을 투자해 달아주시는 따뜻한 댓글들은 저에게 정말 큰 힘이 됩니다!

#2 저의 각 포스트들은 엄청난 노력과 시간 투자를 통해 만들어진 포스트들로, 무단 복제나 모방하는 것을 금지합니다.

#3 저의 포스트에도 틀린 정보가 있을 수도 있습니다. 그럴 경우 친절한 말투로 근거와 함께 댓글로 달아주시면 정말 감사하겠습니다!

* 바쁜 개인 일정으로 댓글 답변이 많이 느립니다 *