TL;DR

  • WSL2에서 파일을 삭제해도 Windows의 C: 드라이브 공간은 자동으로 늘어나지 않으며, 배포판을 종료한 뒤 가상 디스크 파일을 수동으로 압축해야 함.
  • 각 WSL2 배포판은 동적으로 확장되는 VHDX 가상 디스크에 저장되며, Linux 내부에서 확보한 공간은 압축 전까지 Windows에 반환되지 않음.
  • 압축 전 wsl --shutdown으로 WSL을 종료하고 wsl -l -v에서 모든 배포판이 중지 상태인지 확인해야 함.
  • Windows 10/11 Pro·Enterprise에서는 Optimize-VHD, Home에서는 diskpart를 사용해 디스크를 압축할 수 있음.
  • 디스크 압축은 Linux가 이미 여유 공간으로 표시한 부분만 회수하므로, 패키지·로그·Docker 레이어를 먼저 정리해야 큰 용량을 되찾을 수 있음.

WSL2 디스크가 계속 커지는 이유

  • 각 WSL2 배포판은 보통 다음 위치에 있는 자체 가상 디스크 파일(.vhdx)에 저장됨.
  • C:\Users\YOURNAME\AppData\Local\Packages\CanonicalGroupLimited...\LocalState\ext4.vhdx
  • 디스크는 배포판에서 공간을 사용할수록 자동으로 커지는 동적 확장 방식이며, Linux 내부에서 파일을 삭제해도 Windows가 자동으로 크기를 줄이지 않음.
  • 삭제로 확보한 공간은 배포판에서 다시 사용할 수 있지만, 파일을 수동으로 압축하기 전까지 Windows의 C: 드라이브로 반환되지 않음.

1단계: WSL 완전히 종료

  • 명령 프롬프트(Command Prompt) 또는 PowerShell에서 wsl --shutdown을 실행함.
  • wsl -l -v를 실행해 실제 종료 여부를 확인하고, 목록의 모든 배포판이 Stopped로 표시되는지 확인함.

2단계: 배포판의 VHDX 파일 찾기

  • 정확한 경로는 실행 중인 배포판에 따라 다르며, Microsoft Store에서 설치한 대부분의 Linux 배포판은 다음 위치에 있음.
  • %LOCALAPPDATA%\Packages\<DistroFolderName>\LocalState\ext4.vhdx
  • Linux 배포판이 아닌 Docker Desktop의 디스크 파일을 찾는 경우에는 파일 위치가 다른 별도의 Docker Desktop 디스크 공간 안내를 참고해야 하며, 절차는 거의 동일함.

3단계: 디스크 압축

  • Windows 10/11 Pro 또는 Enterprise에서는 관리자 권한으로 PowerShell을 열고 Optimize-VHD -Path "C:\path\to\ext4.vhdx" -Mode Full을 실행함.
  • Windows 10/11 Home에서는 Hyper-V 모듈을 기본 제공하지 않으므로 diskpart를 사용함.
  • diskpart를 실행한 뒤 select vdisk file="C:\path\to\ext4.vhdx"로 디스크 파일을 선택함.
  • attach vdisk readonly로 읽기 전용 연결하고, compact vdisk로 압축함.
  • detach vdisk로 연결을 해제한 뒤 exit로 종료함.
  • 디스크 압축은 Linux가 이미 여유 공간으로 표시한 공간만 반환함. 사용하지 않는 패키지, 로그 또는 오래된 Docker 레이어가 디스크를 채우고 있다면 WSL 내부에서 먼저 정리한 다음 종료하고 압축해야 함.
  • 이미 사용 공간으로 가득 찬 디스크는 압축만으로 크게 줄어들지 않음.

4단계: WSL 다시 시작

  • 배포판 터미널을 다시 열거나 Docker Desktop을 시작하면 됨.
  • 처음 사용할 때 WSL이 자동으로 다시 시작됨.

디스크가 무제한으로 커지지 않게 하기

  • %USERPROFILE%\.wslconfig를 편집해 WSL의 메모리와 프로세서 사용량을 제한할 수 있음.
  • 설정 예시는 메모리 6GB, 프로세서 4개, 스왑 0임.
  • 이 설정은 디스크 크기를 직접 제한하지 않고 메모리와 CPU 사용량을 제한함.
  • WSL의 리소스 사용량을 관리하면 디스크가 차는 속도를 늦추는 데 도움이 됨. 디스크 증가의 대부분은 시간이 지나면서 쌓이는 Docker 레이어와 패키지 캐시에서 발생함.