WSL 안에서 지웠는데 왜 ext4.vhdx 크기가 그대로인가요?

개발 폴더 · 2026-09-07 확인

이 파일은 커지기만 하고 저절로 줄지 않습니다. 리눅스 안에서 30GB를 지워도 윈도우가 보는 파일 크기는 그대로입니다. 줄이려면 wsl --shutdown으로 끄고 Optimize-VHD로 쪼그라뜨려야 합니다. 파일을 지우면 그 리눅스 환경이 통째로 사라지니 절대 지우지 마세요.

왜 안 줄어드나

ext4.vhdx는 리눅스의 저장소 전체를 담은 가상 디스크 파일입니다. 안에서 파일을 지우면 리눅스 입장에서는 빈 공간이 생기지만, 그 자리는 여전히 vhdx 파일 안에 할당된 채로 남습니다.

윈도우는 그 안을 못 봅니다. 밖에서 볼 수 있는 건 파일 크기 하나뿐이고, 그 값은 안 줄어듭니다.

줄이는 순서

1. 먼저 리눅스 안에서 필요 없는 걸 지웁니다. (예: docker system prune, apt clean, 캐시 삭제)

2. 윈도우 검색창에 "PowerShell"을 치고 마우스 오른쪽 → "관리자 권한으로 실행".

3. wsl --shutdown (WSL을 완전히 끕니다. 켜져 있으면 다음 단계가 실패합니다)

4. Optimize-VHD -Path "C:\Users\이름\AppData\Local\Packages\...\ext4.vhdx" -Mode Full

경로는 배포판마다 다릅니다. Packages 폴더 안에서 배포판 이름이 들어간 폴더를 찾으면 그 안에 있습니다.

Optimize-VHD가 없다고 나올 때

Hyper-V 관리 도구에 들어 있는 명령입니다. Windows 기능 켜기/끄기에서 "Hyper-V → Hyper-V 관리 도구 → Hyper-V 모듈(Windows PowerShell용)"을 켜면 쓸 수 있습니다.

Home 에디션이면 이 방법 대신 diskpart의 compact vdisk를 씁니다.

경로 찾는 법

Store에서 설치한 배포판은 %LOCALAPPDATA%\Packages\ 아래에 배포판 이름이 들어간 폴더가 있고, 그 안 LocalState 폴더에 ext4.vhdx가 있습니다.

wsl --list --verbose 로 배포판 이름을 먼저 확인하면 폴더를 찾기 쉽습니다.

Docker Desktop이 만든 것은 %LOCALAPPDATA%\Docker\wsl\ 아래에 따로 있습니다. 둘 다 쓰신다면 두 파일을 각각 줄여야 합니다.

리눅스 안에서 먼저 비울 것

sudo apt clean — 받아둔 패키지 파일입니다. 다시 받을 수 있습니다.

~/.cache 아래 — pip·npm·huggingface 캐시가 여기 쌓입니다. AI 작업을 하셨다면 모델 캐시만 수십 GB인 경우가 있습니다.

리눅스 안에서 Docker를 쓰신다면 docker system prune -a 도 같이.

지운 다음 df -h 로 리눅스 안의 여유 공간을 확인하세요. 여기서 빈 만큼이 다음 단계에서 줄일 수 있는 최대치입니다.

자주 묻는 것

ext4.vhdx를 지우면 어떻게 되나요?

그 리눅스 환경이 통째로 사라집니다. 안에 설치한 것, 만든 것 전부입니다. 되돌릴 방법이 없습니다.

얼마나 줄어드나요?

안에서 지운 만큼입니다. 리눅스 안에서 아무것도 안 지우고 Optimize-VHD만 돌리면 거의 안 줄어듭니다.

이걸 직접 찾아드립니다

테라클린은 이 글에 나온 것들을 실제로 재서, 지워도 되는 것만 이유와 함께 보여줍니다. 파일은 기기를 떠나지 않고, 무료입니다.

무료로 받기

같이 보면 좋은 글