기타

wsl 용량 정리하기

Sila 2025. 5. 1. 10:52

1. intro

노트북에 뭘 깐게 없는게 계속해서 용량이 줄어들어 이상하다고 생각해 어떤 어플리케이션이 얼마나 용량을 먹고 있는지를 확인해보니

ubuntu가 엄청난 용량을 점유하고 있음을 알게 되었다.

윈도우에 우분투를 설치하면 그 우분투가 사용하는 용량이 늘어날수록, C드라이브의 가용 용량이 줄어들게 된다.

문제는, wsl의 파일을 정리해 용량을 줄인다고 해도, 한 번 늘어난 wsl의 하드 점유량이 줄어들지 않아 윈도우에서 사용할 수 있는 용량은 그대로라는 점이다.

이를 해결하려면 우분투 자체를 한 번 지우고 다시 설치하는 방법이 있지만 wsl 내부의 파일이 많을수록 백업과 설정 import에도 시간이 오래 걸리고, 그 떄까지의 config를 제대로 가져오기도 힘들다.

따라서 주기적으로 캐시나 로그 등 wsl에 쌓이는 불필요한 파일들을 정리해 애초부터 wsl의 용량 점유를 늘리지 않는 것이 더 좋은 방법인 것 같다.

2. 용량 점유율 현황 파악

du -sh 파일 경로/* | sort -hr | head -20

다음 명령어를 통해 같이 특정 디렉토리의 용량 점유율이 높은 상위 20개의 디렉토리 리스트를 출력할 수 있다.

(나는 /home 디렉토리에서 했음)

963M    ./lsj/go
646M    ./lsj/work
4.0K    ./lsj/setup.sh
4.0K    ./lsj/restore
4.0K    ./lsj/projects

다음과 같이 어떤 디렉토리가 얼만큼의 용량을 차지하고 있는지를 확인할 수 있는데, 정리 전에는 기가 단위의 디렉토리가 여러 개 있었다.

3. 삭제 해볼만한 대상들 리스트 업

1. cache

가장 큰 용량을 차지하고 있던 것들은 cache 들인데, 이건 쌓이는 건 계속 쌓이는데 스스로 지워지지는 않는 것 같고, 주기적으로 직접 지워줘야 wsl의 용량이 계속 늘어나는걸 막을 수 있을 것 같다.

du -sh ~/.cache/* | sort -hr | head -20

다음 명령어를 실행했더니, 우분투를 재설치한지 하루가 채 지나지 않았음에도 다음과 같은 결과를 얻었다.

1.3G    /home/lsj/.cache/go-build
42M     /home/lsj/.cache/gopls
4.5M    /home/lsj/.cache/golangci-lint
12K     /home/lsj/.cache/Microsoft
8.0K    /home/lsj/.cache/go
0       /home/lsj/.cache/motd.legal-displayed

해당 디렉토리를 다음과 같이 삭제했다.

rm -rf ~/.cache/*

# 압도적으로 용량을 차지하는 go-build만 지우려면
rm -rf ~/.cache/go-build

삭제 시, 용량이 얼마나 회수되는지 (ubuntu에서의 용량이지 윈도우의 용량은 아님) 확인하고 싶다면 다음 명령어를 사용할 수 있다

sudo du -sh ~/.cache/*

2. docker

docker image를 로컬에서 빌드한다면 이 이미지들도 용량을 먹는 주범 중 하나가 된다. 다음과 같은 명령어를 통해 삭제할 수 있다.

docker system prune -a

4. 결론

wsl의 c 드라이브에서의 용량 점유는 늘기만 하고, 이 후 용량을 비워도 알아서 줄지 않는다.

따라서 wsl 내부에 불필요한 파일을 설치하는걸 최대한 지양하고, 도커 이미지와 캐시를 주기적으로 지워주는게

좋을 것 같다.