콤푸타/Windows

Windows 가상화 플랫폼, 하이퍼바이저, Hyper-V 그리고 도커

어둠의다크 2024. 7. 7. 08:06
 윈도우를 사용하면서 가상화 환경이 쓰고싶을때는 보통 Virtual Box나 Vmware Workstation을 사용한다. 또는 정말 간단한 리눅스 환경이 필요하면 이제는 WSL2를 편리하게 사용할 수 있다. 사실 도커도 사용할 수 있지만 필자는 예전에 plaso/log2timeline을 사용하면서 이녀석이 자꾸만 블루스크린을 띄우기에 아직 좀 반신반의한 입장이다.
 그런데, WSL과 도커는 윈도우 Hyper-V 위에서 동작한다는데 아래의 '선택적 기능'을 확인해보면 hyper-v가 꺼져있는 것을 확인할 수 있다. 대관절 이게 어떻게 된 일이란 말인가!
 그래서 이번에 한번 알아보았다. 이번 포스팅에서는 윈도우에서 이런 가상환경들이 어떤 기능을 통해 제공되는지 한번 정리해보도록 하겠다.
윈도우+r 키를 눌려 실행을 띄운 다음 'optionalfeatures' 를 실행시켜 준다.
 
'선택적 기능'에서 선택할 수 있는 다양한 기능들
 

Windows의가상화 기능들

 위 그림의 선택적 기능에서 가상화 관련해서 4개정도가 눈에 띈다.
  1. Hyper-V와 하위기능들
  2. Linux용 Windows 하위시스템
  3. Windows 하이퍼바이저 플랫폼
  4. 가상 머신 플랫폼
 뭔가 비슷해보이면서도 달라보이는 그런 녀석들이다. Hyper-V는 윈도우 가상화 서버의 그냥 대명사같은 느낌이 아닌가? Hyper-V를 돌리려면 당연히 하이퍼바이저 플랫폼이 켜져있어야 하는것 아닌가? 또 가상머신 플랫폼은 뭔가? 하는 의문들이 머릿속을 뱅뱅 도는 느낌이었다.
그래서 이번 시간에는 요 녀석들이 어떤 기능을 하는지 알아볼건데, 나도 전문적인 지식을 갖고 있지가 않아 인터넷에서 찾아보는 글들을 정리하는 식으로 진행을 할것이다.
 

1. Linux용 Windows 하위 시스템

 해당 항목은 아마도 WSL(Windows Subsystem for Linux)를 번역해놓은 것 같다.
참고
 
 마이크로 소프트에서 제공해주는 정확한 문서들을 한번 잘 참고해보자 우리에게 필요한 많은 정보들을 얻을 수 있을것이다.
 자 여기서 꺼내봐야할 몇 가지 얘기들이 있는데 다음 사진을 한번 보자.
 

 

 여기서 알 수 있는것은 WSL 1에서 WSL 2 로 오면서 Hyper-V 아키텍쳐를 사용해 가상화를 사용하도록 바뀌었다는 것, 그리고 이것은 Hyper-V를 켜는게 아니라 '가상 머신 플랫폼' 기능을 활성화 하여 사용한다는 것.
 사실 첫 번째 문단을 보고 처음에는 WSL 2 설치 후로 내 컴퓨터가 type 1 하이퍼바이저로 바뀐건가?! 하는 생각을 했었다.. 그런데 뭔가 이상하다 Hyper-V 아키텍쳐를 쓰는데 Hyper-V를 안켜?! 너 이자식 뭐야 하는.. 그래서 좀 좀 더찾아보았다.
 아참 그리고 예전에는 Hyper-V를 켜면 Vmware와 Virtual Box가 동작을 안헀는데, 패치로 요즘은 문제 없이 동작한다. 다만 속도가 많이 느려지는게 체감이된다.
 참고로 WSL 1에 대해 약간 언급하고 넘어가자면, WSL 1은 가상화 라기보다는 추상화에 가까운 느낌이라는 생각이 든다. WSL 1은 Windows NT커널 레벨에서 리눅스 시스템콜을 호환 가능하게 만들어 실행시켰다고 합니다. 윈도우즈 커널판 wine 같은 느낌
 

2. Hyper-V

Hyper-V란 무엇인가? 는 아래를 참조하길 바란다.
 흔히들 Hyper-V라 하면 와! 윈도우즈! Type 1! 하이퍼바이저! 같은 생각을 할 것이다. 아님 말고. 아무튼 필자는 그러했는데 이번 기회에 좀더 자세히 찾아보면서 정확하게는 그것이 아닌 것을 알게되었다. 다음 사진을 한번 보자
 
 영어 울렁증이 있는 독자들을 위해 간단하게 분석&정리 해보자면
  • Hyper-V 자체는 하이퍼바이저 플랫폼이 아니다.
  • Windows 에는 Windows Hypervisor라는 베어메탈 Hypervisor가 별도로 존재한다.
  • Hyper-V는 이 하이퍼바이저를 제어하는 도구이다.
  • Hyper-V는 컴퓨팅 환경, 재해 복구 백업, 최적화, 이식성, 원격 연결, 보안 등을 담당 하고 관리할 수 있는 일종의 도구이며 이를 Hyper-V 가상화 플랫폼 이라 한다.
라고 할 수 있겠다. 쉽게 생각하자면.. 하이퍼바이저를 관리하는 도구 정도의 느낌이다.

3. Windows 하이퍼바이저 플랫폼

 자 그렇다면 과연 'windows 하이퍼바이저 플랫폼' 이라는 건 뭘까? 상세한 내용은 다음 MSDN페이지를 한번 참고해보기 바란다.
 Hyper-V 가 자기들만 하이퍼바이저 관리 기능을 사용하는게 아니라 유저 레벨에서도 사용할 수 있도록 API를 제공하는데, 그 중에서 서드-파티(vmware 등) 에서 이 API를 사용할 수 있도록 제공되는 기능을 'Windows 하이퍼바이저 플랫폼' 이라고 한다.
예전에 Hyper-V 기능이 켜지면 Vmware Workstation과 Virtual Box가 먹통이 되던 적이 있었다. 하지만 이 'Windows Hypervisor Platform'이 제공된 후로 각각 이 API를 반영해 Hyper-V가 켜져있어도 사용에 지장이없도록(좀 느리긴하지만) 패치가 되었다!
 

4. 가상 머신 플랫폼

 마지막으로 이 가상 머신 플랫폼 이라는 것은 도대체 무엇인가!
 앞서 WSL2를 설명할때도 나왔는데, WSL2를 구동할 때 내부적으로 이 Virtual Machine Platform 이라는 도구를 사용한다.
 설명에는 이 'Virtual Machine Platform" 이'Hyper-V'의 subset 즉 일부분이라고 되어있다.
 문서화되어 공개되지 않은 것을 보면 내부적으로만 사용되거나 취약점이 존재하거나 등의 경우를 생각 해 볼수 있지 않을까?
아무튼 그렇다.
생각나서 윈도우 환경의 가상화 관련 기능들을 정리해 보았는데, 궁금했던 독자들의 무릎을 탁 치게 만드는 글이었으면 좋겠다는 생각을 해 본다.
이상 마침.
 

5. 도커

 글을 작성하다 보니 도커 얘기를 까먹었는데, 도커는 네이티브 리눅스 환경에서만 동작하는 컨테이너 도구였다. 원리를 설명하자면(사실 나도 잘 모르지만) 리눅스의 chroot과 cgroop기능을 사용한 프로세스의 격리를 확장한 것인데(이외에도 많은 다양하고 중요한 이론이 존재한다) 아무튼 윈도우에서 지원이 안되던 도커 기능이 바로 이 WSL2의 혜성같은 등장과 함께 윈도우 환경에서도 사용할 수 있게 되었다. 다시말해 이 도커도 "가상 머신 플랫폼" 의 기능을 응용한 것이라 추측해볼 수 있겠다.
 다만 나는 도커를 사용하면서 커널패닉(Blue Screen)을 너무 많이봐서.. 윈도우에서는 사용하지 않는다.
 
 
정말 끝.
 
 

Reference

마소 질문 답변 페이지
 
이 모든것들이 정말 정리가 잘 된글