WSL 1과 WSL 2 비교

Linux용 Windows 하위 시스템을 WSL 1에서 WSL 2로 업데이트하는 주요 차이점과 이유는 다음과 같습니다.

  • 파일 시스템 성능 향상
  • 전체 시스템 호출 호환성 지원

WSL 2는 가장 유용한 최신 가상화 기술을 사용하여 간단한 유틸리티 VM(가상 머신) 내에서 Linux 커널을 실행합니다. 그러나 WSL 2는 기존 VM 환경이 아닙니다.

기능 비교

기능 WSL 1 WSL 2
Windows와 Linux 통합
빠른 부팅 시간
기존 Virtual Machines보다 작은 리소스 공간
현재 버전의 VMware 및 VirtualBox에서 실행
관리 VM
전체 Linux 커널
전체 시스템 호출 호환성
OS 파일 시스템 간 성능

위의 비교 표에서 알 수 있듯이 WSL 2 아키텍처는 OS 파일 시스템 간의 성능을 제외하고는 여러 가지 방법에서 WSL 1보다 성능이 뛰어납니다.

WSL 2는 Windows 10, 버전 1903, 빌드 18362 이상에서만 사용할 수 있습니다. Windows 로고 키 + R을 선택하고 winver를 입력한 다음, 확인을 선택하여 Windows 버전을 확인합니다. (또는 Windows 명령 프롬프트에서 ver 명령을 입력합니다.) 최신 Windows 버전을 업데이트해야 할 수도 있습니다. 18362보다 낮은 빌드의 경우 WSL은 전혀 지원되지 않습니다.

참고

WSL 2는 VMware 15.5.5 이상VirtualBox 6 이상에서 작동합니다. FAQ에서 자세히 알아보세요.

WSL 2의 새로운 기능

WSL 2는 기본 아키텍처를 전체적으로 점검했으며, 가상화 기술과 Linux 커널을 사용하여 새로운 기능을 사용하도록 설정합니다. 이 업데이트의 주요 목표는 파일 시스템 성능을 높이고, 전체 시스템 호출 호환성을 추가하는 것입니다.

WSL 2 아키텍처

기존 VM 환경은 부팅 속도가 느리고, 격리되어 있으며, 많은 리소스를 사용하고, 관리하는 데 시간이 걸릴 수 있습니다. WSL 2는 이러한 단점이 없습니다.

WSL 2는 Windows와 Linux 간의 원활한 통합, 빠른 부팅 시간, 작은 리소스 설치 공간을 포함하여 WSL 1의 이점을 제공하며 VM을 구성하거나 관리할 필요가 없습니다. WSL 2는 VM을 사용하지만 WSL 1과 동일한 사용자 환경을 유지하면서 백그라운드에서 관리되고 실행됩니다.

전체 Linux 커널

WSL 2의 Linux 커널은 kernel.org에서 제공되는 원본을 기반으로 하여 Microsoft를 통해 안정적인 최신 분기에서 구축되었습니다. 이 커널은 WSL 2에 맞게 특별히 튜닝되어 크기와 성능을 최적화하여 Windows에서 놀라운 Linux 환경을 제공합니다. 커널은 Windows 업데이트를 통해 서비스를 제공하므로 직접 관리할 필요 없이 최신 보안 수정과 향상된 커널 기능을 얻을 수 있습니다.

WSL 2 Linux 커널은 오픈 소스입니다. 자세히 알아보려면 구축한 팀에서 작성한 Windows를 사용하여 Linux 커널 전달 블로그 게시물을 확인하세요.

파일 IO 성능 향상

git clone, npm install, apt update, apt upgrade 등과 같은 파일 집약적 작업은 모두 WSL 2를 통해 훨씬 더 빠르게 수행됩니다.

실제 속도 증가는 실행되는 앱과 이 앱에서 파일 시스템과 상호 작용하는 방법에 따라 달라집니다. 압축된 tarball의 압축을 푸는 경우 WSL 2의 초기 버전은 WSL 1보다 최대 20배 더 빠르게 실행되며, 다양한 프로젝트에서 git clone, npm install 및 cmake를 사용하는 경우 약 2~5배 더 빠르게 실행됩니다.

전체 시스템 호출 호환성

Linux 이진 파일은 시스템 호출을 사용하여 파일 액세스, 메모리 요청, 프로세스 만들기 등의 함수를 수행합니다. WSL 1은 WSL 팀에서 개발한 번역 계층을 사용했지만 WSL 2에는 전체 시스템 호출 호환성을 지원하는 자체 Linux 커널이 포함되어 있습니다. 이점은 다음과 같습니다.

  • Docker 등과 같이 WSL 내에서 실행할 수 있는 새로운 앱의 전체 세트입니다.

  • Linux 커널에 대한 모든 업데이트를 즉시 사용할 수 있습니다. (WSL 팀에서 업데이트를 구현하고 변경 내용을 추가할 때까지 기다릴 필요가 없습니다.)

WSL 2가 아닌 WSL 1의 사용에 대한 예외

더 빠른 성능과 100% 시스템 호출 호환성을 제공하는 WSL 2를 사용하는 것이 좋습니다. 그러나 WSL 1을 사용하는 것이 더 나을 수 있는 몇 가지 특정 시나리오가 있습니다. 다음과 같은 경우 WSL 1을 사용하는 것이 좋습니다.

  • 프로젝트 파일을 Windows 파일 시스템에 저장해야 합니다. WSL 1을 사용하면 Windows에서 탑재된 파일에 더 빠르게 액세스할 수 있습니다.
    • WSL Linux 배포를 사용하여 Windows 파일 시스템의 프로젝트 파일에 액세스하고 이러한 파일을 Linux 파일 시스템에 저장할 수 없는 경우 WSL 1을 사용하여 OS 파일 시스템에서 더 빠른 성능을 얻을 수 있습니다.
  • Windows 및 Linux 도구를 모두 동일한 파일에 사용하여 크로스 컴파일해야 하는 프로젝트입니다.
    • Windows 및 Linux 운영 체제 전체의 파일 성능은 WSL 2보다 WSL 1에서 더 빠르므로 Windows 애플리케이션을 사용하여 Linux 파일에 액세스하는 경우 현재 WSL 1에서 더 빠른 성능을 얻을 수 있습니다.
  • 프로젝트가 직렬 포트 또는 USB 디바이스에 액세스해야 합니다.
  • WSL 2는 직렬 포트 액세스를 지원하지 않습니다. FAQ 또는 WSL GitHub 리포지토리에서 직렬 지원에 대해 자세히 알아보세요.
  • 메모리 요구 사항이 엄격합니다.
    • WSL 2의 메모리는 사용자가 사용함에 따라 사용량이 증가하고 축소됩니다. 프로세스에서 메모리를 해제하면 자동으로 Windows에 반환됩니다. 그러나 현재 WSL 2는 WSL 인스턴스가 종료되어야만 메모리의 캐시된 페이지를 Windows로 다시 해제합니다. WSL 세션이 오랫동안 실행되거나 사용자가 매우 많은 파일에 액세스하는 경우 이 캐시가 Windows의 메모리를 사용할 수 있습니다. WSL Github 리포지토리 문제 4166에서 이 환경을 개선하는 작업을 추적하고 있습니다.

참고

VS Code 원격 WSL 확장에서 Linux 명령줄 도구를 사용하여 프로젝트 파일을 Linux 파일 시스템에 저장하도록 시도하는 것을 고려할 수 있지만, Linux 및 Windows 간의 작업과 관련된 성능을 저하시키지 않고 Windows에서 VS Code를 사용하여 인터넷 브라우저에서 프로젝트를 작성, 편집, 디버그 또는 실행할 수도 있습니다. 자세히 알아보기.