WSL2를 사용해본 장단점 후기

2020. 6. 16. 00:15OS & Server/Windows

728x90

지난 2020년 5월 28일 Windows에서는 WSL(Windows Subsystem for Linux) 2 가 공개되면서

많은 화제가 일어나고 있는데, 기존에는 WSL과 VMware 혹은 VirtualBox 그리고 Android Emulator(안드로이드 에뮬레이터)등 VT-X 기술을 사용하는 제품(소프트웨어)들을 사용할 수 없었는데

 

지금은 MircorSoft사에서 API 셋을 공개하여 vmware는 최신 Preview를, VirtualBox는 6.0 이상이면 사용이 가능하다고 합니다.

 

https://docs.microsoft.com/ko-kr/windows/wsl/wsl2-faq

 

vmware: https://blogs.vmware.com/workstation/2020/01/vmware-workstation-tech-preview-20h1.html

virtualbox: https://www.virtualbox.org/wiki/Changelog-6.0

 

하지만 여전히 Android Emulator의 경우는 VisualStudio에서 제공되는 ㄹㅇ 찐 개발용 에뮬레이터가 아닌 이상

게임용으로 사용되는 LD Player, Nox, Memu 등은 아직까지도 구버전 VirtualBox 핸들러를 사용 중이라 해당 업체 측에서 이를 반영해줘야 사용 가능할 것 같은데, 아마 2020년은 힘들 것 같아 보입니다.

 

 

WSL2의 가장 큰 강점은 기존에 Vmware와 공존하여 Docker를 사용하려면 Docker legacy를 설치해야 하는 단점이 있었지만, Docker 측에서도 WSL2 용 Docker Backend를 출시하였고 이를 사용하면, WSL2와 MS Store에서 설치한 OS를 캐치하여 docker와 docker-compose, swarm, kubernetes를 사용할 수 있습니다.

 

 

WSL2의 단점?

이 글의 제목과 가장 큰 연관이 있지 않을까 싶은 부분인데,

WSL은 설치 후 확인해보면 NetworkDrive로 마운트가 됩니다.

 

네트워크 드라이브인데 처음에 docker volumes를 compose에 명시했는데 즉각 반영이 안 돼서 확인해보니 컨테이너가 다른 경로에서 실행되는데 그것도 나중에 알고 보니 그거랑은 별개로....

일단 뭐 다른 유튜버, 블로거 분들께서 소개하는 내용을 보면  wsl을 실행 후 explorer.exe.로 현재 폴더로 잡고 컴포즈를 돌린다! 뭐 이런 내용인데 사실 그렇게 하면 안 되는 게

 

이미 WSL과 Windows는 별개의 독립된 공간을 가지고 있고 WSL2도 VM으로 동작하는 건 매한가지여서

WSL2의 경로와 Windows의 경로를 이미 /mnt/c 를 통해 마운트 해서 볼륨이 묶여있는 것이니

도커에서 그 위치를 또 사용하면 겹쳐서 사용이 안된다는 겁니다.

이를 해결하려면 $HOME 위치에서 작업을 하던가... 해야 합니다.

 

 

WSL2 개발에선?

 vscode의 경우 remote-wsl을 설치해도 사실 그것도 매번 그 위치 들어가서 code . 해서 열던가 recent로 열어야  하는 수고스러움이 있습니다. 그리고 설치도 굉장히 느린 편입니다.

 

또한 앞서 언급했던 단점에서 마운트가 겹치다 보니 그 상황을 신경 써주지 않는다면 docker-compose나 docker run 등으로 컨테이너 서비스를 실행할 때 이때 volume이 실시간 바인딩이 되지 않아 코드의 즉각적인 변화를 알아챌 수 없습니다.

 

실제로 vmware로 ubuntu server를 실행해서 속도를 눈으로만 보긴 했는데 미세하게 빠르긴 한데 딱히 티 도안 납니다...

실 벤치마킹에선 ubuntu host보다 살짝 느리다고 한 글을 본 적이 있는 것 같네요.

 

사실 이 윗부분은 FE(Front-End) 즉 요즘 FE의 경우 개발 모드일 경우 실시간 변화가 즉각 반영되는 live mode인데

이러한 경우에는 홈 폴더로 자리매김하고 하는 게 뭔가 묘하게 귀찮은...?

호스트를 리눅스로 쓸 수 없는 상황인데 사양이 여의치 않다면 뭐 이렇게라도 해서 사용하는 게 나쁘지 않은 것 같기도 하고... 사실 vmware에 ubuntu 깔아서 하나 network drive에 붙어서 home폴더에서 작업하나 그게 그거 같기도 하고...

 

Go언어를 기준으로 잡는다면 어차피 컴파일 언어이기 때문에 Build 하고 Binary를 뽑아내는 용도로는 WSL2를 사용하면 정말 극찬할 수준이 될 것 같습니다.

뭐 Registry도 하나 파서 하면 배포도 용이할 것 같네요.

 

Python... Python도 경량화한 이미지를 만들 때나 좋을 것 같습니다.

역시나 어떠한 언어든 실시간 반영으로 사용하려면 network drive가 마운트 된

\\wsl\~~~ 경로를 가지고 작업을 해야 하는데, 사실 저 네트워크 드라이브가 windows 파일 시스템보다 조금 더 빠르다고 MS 측에서도 언급하고 있습니다.

 

근데 아직 Jetbrains의 일부 제품들을 제외하고는 대다수의 IDE들은 경고 뜨는 거 말고는 걸리적거리는 건 없지만 해당 폴더로 열어서 작업하면 됩니다...

 

 

 

결론

WSL2는 SFTP + (Vmware + Docker Compose)보다 좀 빠르다

WSL2는 개발을 하려면 /mnt/c로 잡아주는 경로가 아닌 다른 경로(예시, $HOME/)로 지정해서 해당 위치에서 해야 한다.(윈도 경로로 하면 실시간 바인딩을 포기해야 합니다. 반드시 WSL 경로로...)

WSL2는 docker, docker-compose, swarm, Kubernetes 사용이 가능하다!

WSL2는 SSH가 굉장히 불편하다 (재부팅할 때마다 IP가 바뀌어서 별도의 스크립트를 작성해서 포워딩해야 함)

WSL2를 사용하면 이제 Vm, Virtualbox 사용 가능하다

WSL2는 아직도 안드로이드 게임용 에뮬레이터는 공존할 수 없다

WSL2만 사용하면 Vmware에 더럽고 추악하고 냄새나는 용량 낭비를 막을 수 있다. <-- 이게 단점을 씹어먹..

 

 

그럼에도 불구하고 리눅스 호스트 쓸빠엔 WSL2 쓴다 / 카톡, 게임(메이플, 오버워치) 생각하면 벌써 암 터진다.

게임 에뮬은...(검은 사막 태블릿으로 돌리거나,,, 뭐 남 PD 사건은 사실 핑계고 귀찮다 맨날 하는 게 똑같다...)

728x90