윈도우를 사용하면서 가상화 환경이 쓰고싶을때는 보통 Virtual Box나 Vmware Workstation을 사용한다. 또는 정말 간단한 리눅스 환경이 필요하면 이제는 WSL2를 편리하게 사용할 수 있다. 사실 도커도 사용할 수 있지만 필자는 예전에 plaso/log2timeline을 사용하면서 이녀석이 자꾸만 블루스크린을 띄우기에 아직 좀 반신반의한 입장이다.
그런데, WSL과 도커는 윈도우 Hyper-V 위에서 동작한다는데 아래의 '선택적 기능'을 확인해보면 hyper-v가 꺼져있는 것을 확인할 수 있다. 대관절 이게 어떻게 된 일이란 말인가!
그래서 이번에 한번 알아보았다. 이번 포스팅에서는 윈도우에서 이런 가상환경들이 어떤 기능을 통해 제공되는지 한번 정리해보도록 하겠다.
윈도우+r 키를 눌려 실행을 띄운 다음 'optionalfeatures' 를 실행시켜 준다.
'선택적 기능'에서 선택할 수 있는 다양한 기능들
Windows의가상화 기능들
위 그림의 선택적 기능에서 가상화 관련해서 4개정도가 눈에 띈다.
Hyper-V와 하위기능들
Linux용 Windows 하위시스템
Windows 하이퍼바이저 플랫폼
가상 머신 플랫폼
뭔가 비슷해보이면서도 달라보이는 그런 녀석들이다. Hyper-V는 윈도우 가상화 서버의 그냥 대명사같은 느낌이 아닌가? Hyper-V를 돌리려면 당연히 하이퍼바이저 플랫폼이 켜져있어야 하는것 아닌가? 또 가상머신 플랫폼은 뭔가? 하는 의문들이 머릿속을 뱅뱅 도는 느낌이었다.
그래서 이번 시간에는 요 녀석들이 어떤 기능을 하는지 알아볼건데, 나도 전문적인 지식을 갖고 있지가 않아 인터넷에서 찾아보는 글들을 정리하는 식으로 진행을 할것이다.
1. Linux용 Windows 하위 시스템
해당 항목은 아마도 WSL(Windows Subsystem for Linux)를 번역해놓은 것 같다.
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)을 너무 많이봐서.. 윈도우에서는 사용하지 않는다.