윈도우 WSL ext4.vhdx 용량 줄이기 - 디스크 최적화

mdx-header-module-scss-module__MxmQBa__profile-img-alt
mdx-header-module-scss-module__MxmQBa__profile-label-img-alt
타카

2026년 5월 21일 작성됨

공유하기

윈도우 WSL을 오래 쓰다 보면
Ubuntu 안에서는 파일을 지웠는데
윈도우 C드라이브 용량은 그대로 부족한 상황이 생긴다.

처음에는 이상하다.

분명 node_modules도 지웠고
캐시도 정리했고
쓸모없는 프로젝트도 치웠는데
왜 C드라이브는 그대로 꽉 차 있는가.

이유는 간단하다.
윈도우 WSL2는 내부 파일 시스템을 ext4.vhdx라는 가상 디스크 파일로 관리한다.

Ubuntu 안에서 파일을 지워도
이 가상 디스크 파일 크기는 바로 줄어들지 않는다.

그래서 직접 압축(compact)을 해줘야 한다.

먼저 용량부터 확인하자

바로 diskpart부터 들어가기 전에
어디가 얼마나 먹고 있는지 먼저 확인해야 한다.

WSL 터미널에서 전체 디스크 사용량을 확인한다.

bash
df -h

여기서 /mnt/c 같은 경로가 보이면
윈도우 드라이브가 WSL에 마운트된 상태다.

윈도우 C드라이브가 얼마나 남았는지
터미널 안에서도 대략 확인할 수 있다.

다음은 Ubuntu home 디렉토리 용량 확인이다.

bash
du -h --max-depth=1 ~ | sort -hr

이 명령어는 ~ 아래 폴더별 용량을 큰 순서대로 보여준다.

나는 보통 여기서 먼저 확인한다.

  • .cache
  • .npm
  • 프로젝트 폴더
  • 다운로드 받아둔 임시 파일
  • 오래된 빌드 결과물

이런 것들이 예상보다 크게 잡혀있는 경우가 많다.

WSL 디스크 파일 위치

윈도우 WSL2의 실제 가상 디스크 파일은 윈도우 쪽에 있다.

대략 이런 경로다.

C:\Users\사용자명\AppData\Local\Packages\CanonicalGroupLimited.~~~\LocalState\ext4.vhdx

CanonicalGroupLimited... 폴더 이름은
설치한 Ubuntu 배포판에 따라 조금 다를 수 있다.

핵심은 LocalState 안의 ext4.vhdx다.

이 파일이 WSL Ubuntu의 디스크 본체라고 보면 된다.

작업 전 주의할 점

이 작업은 WSL 가상 디스크 파일을 직접 다룬다.

그래서 반드시 WSL을 종료한 상태에서 해야 한다.

그리고 PowerShell은 관리자 권한으로 실행해야 한다.

가능하면 중요한 작업 파일은 미리 커밋하거나 백업해두자.
디스크 작업은 늘 조심하는 게 좋다.

WSL 종료하기

관리자 권한 PowerShell을 열고
먼저 WSL을 완전히 종료한다.

powershell
wsl --shutdown

실행 중인 Ubuntu, Docker, WSL 기반 프로세스가 모두 종료된다.

diskpart 실행하기

이제 diskpart를 실행한다.

powershell
diskpart

프롬프트가 DISKPART> 형태로 바뀌면
이제 가상 디스크를 선택할 수 있다.

ext4.vhdx 선택하기

본인의 ext4.vhdx 경로를 넣어준다.

diskpart
select vdisk file="C:\Users\YOURNAME\AppData\Local\Packages\CanonicalGroupLimited.~~~\LocalState\ext4.vhdx"

여기서 YOURNAME은 본인 윈도우 사용자 이름으로 바꿔야 한다.

그리고 CanonicalGroupLimited.~~~ 부분도
실제 폴더명으로 맞춰야 한다.

경로가 틀리면 선택되지 않는다.

가상 디스크 압축하기

이제 선택한 가상 디스크를 읽기 전용으로 연결한다.

diskpart
attach vdisk readonly

그 다음 압축한다.

diskpart
compact vdisk

시간이 조금 걸릴 수 있다.

디스크 크기가 클수록 오래 걸린다.
중간에 PowerShell 창을 닫지 말고 기다리자.

완료되면 가상 디스크 연결을 해제한다.

diskpart
detach vdisk

마지막으로 diskpart를 종료한다.

diskpart
exit

다시 WSL 실행하기

이제 다시 WSL을 실행한다.

powershell
wsl

정상적으로 Ubuntu가 열리면 성공이다.

이후 윈도우 C드라이브 용량을 다시 확인해보자.
불필요하게 부풀어 있던 ext4.vhdx가 줄어든 것을 볼 수 있다.

전체 명령어 흐름 정리

헷갈리면 아래 순서만 보면 된다.

powershell
wsl --shutdown
diskpart
diskpart
select vdisk file="C:\Users\YOURNAME\AppData\Local\Packages\CanonicalGroupLimited.~~~\LocalState\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit
powershell
wsl

마무리

윈도우 WSL은 정말 편하다.

하지만 오래 쓰다 보면
보이지 않는 곳에서 디스크가 계속 커질 수 있다.

Ubuntu 안에서 파일을 지우는 것과
Windows의 ext4.vhdx 파일 크기를 줄이는 것은 다른 문제다.

정리 순서는 이렇게 가져가면 된다.

  • WSL 안에서 불필요한 파일을 먼저 지운다.
  • du -h --max-depth=1 ~ | sort -hr로 큰 폴더를 확인한다.
  • wsl --shutdown으로 WSL을 완전히 종료한다.
  • diskpart에서 compact vdisk를 실행한다.

이렇게 한 번씩 관리해주면
윈도우 WSL 때문에 C드라이브가 갑자기 터지는 상황을 꽤 줄일 수 있다.