WSL, Docker Desktop 관련 Distro의 크기 줄이기

WSL, Docker Desktop 관련 Distro의 크기 줄이기

1테라도 부족해

지금도 가난하지만 더 가난했던 어린 시절, 컴퓨터는 무조건 중고였던 때에는 40GB, 20GB, 심지어 4GB 하드 디스크를 사용했던 적도 있다. 특히 4GB짜리를 사용할 때엔 초등학교 4학년이었는데, 당시 재밌게 즐겼던 워록이라는 FPS 게임을 설치하기 위해 크레이지 아케이드, 서든어택을 지우고 시스템 드라이브에서 필요 없다고 판단되는 폴더들을 최대한 지운 뒤1 당시 시골 깡촌에서 ADSL 회선의 느려터진 초당 120KBps로 600MB 가까이 되는 워록 설치 파일을 받고, 또 그걸 설치하고 실행하고 하는 생 쇼를 했었다.

시간이 지나 현재 1테라 NVMe SSD 3개, 512GB SSD 한 개, 2테라 하드디스크 한 개를 합해 총 5.5TB를 굴리고 있는 입장에서 보면 말도 안 되는 짓거리이긴 하나, 4GB 하드를 사용한 기간은 길지 않았고 어차피 게임 한두개에 어도비 플래시 MX 또는 8, 포토샵, Visual Studio 2008을 설치하기만 했으면 됐기에 큰 문제는 아니었다.

그러나 이제는 문제가 된다. 5.5TB도 부족하기 때문이다. 심지어 어디 한 곳에 쏠려 있으면 분산이라도 시키겠는데, 용도별로 딱 딱 정리된 상태가 이렇다. 각 디스크에 많아야 200GB 여유가 있고, 평균 100GB정도 여유가 있다.

용량이 왜 이리 부족할까

근 10년간 쌓인 용량이기에 한 번은 도대체 뭐가 들어있어서 이렇게 용량이 부족할까 하여 TreeSize 툴로 분석을 해봤다. 당시 C드라이브는 일단 Visual Studio 2019가 100기가바이트를 넘게 차지했고, Adobe, Cocos, Unity, Unreal, … 등과 NuGet package cache, ReSharper cache, WSL Ubuntu distro, Docker Distro, … 아무튼 많았다. 다른 드라이브는 주로 개발에 필요한 라이브러리들, 가상머신 가상 디스크들, 프로그램 설치 파일들이 주를 이뤘고 다른 드라이브는 영상, 이미지, 음악 등이 주를 이뤘으며 다른 드라이브는 업무 프로젝트 파일, 개인 프로젝트 파일, 외부 소스(특히 크로미움 소스는 아주 돋보였다), 또 다른 드라이브는 데이터베이스 파일들이 주를 이뤘다.

그게 1년 반 정도 전의 일인데, 지금도 크게 다를 것은 없었다.

WSL 저장소는 늘어나기만 해

WSL의 가상 하드디스크는 필요할 때 늘어나기만 하고 자동으로 줄어들지 않는다. 다시 말해, 디스트로 내에서 파일을 삭제하더라도 vhdx 사이즈는 그대로라는 것이다.

일단 이것 저것 개발을 위해 많이도 설치한 Docker쪽 디스트로의 사이즈가 200GB가 조금 넘었다. 마찬가지로 개발 용도로 이것 저것 깔린 우분투 디스트로 역시 120GB가량 되었다. 그리고 이 모든 것이 C드라이브에 박혀있으니 별로 깐 것도 없는데 용량이 부족할 수밖에 없던 것이다.

문제는, 우분투도 도커도 아무리 봐도 용량이 저렇게까지 늘어날 일이 없었다는 것이다. 용량이 필요할 때 알아서 늘어나는 건 알겠는데, 저 정도로 늘어날 일이 적어도 내 기억 상에는 없었다는 것이다. 이건 문서를 찾아보지 않아서 확실하진 않지만 조금 넉넉하게 확보해두는 로직이 있는 게 아닐까.

늘어난 용량 줄이기

아무튼 지금 급한 것은 용량을 줄이는 것이다. 감사하게도 언제부터인지 DISKPART에 관련 기능이 생겼다. 하지만 우선 WSL을 꺼야 한다.

wsl.exe --shutdown

WSL을 껐으면 이제 디스트로들의 위치를 파악해보자. 따로 건드린 게 없다면 도커와 우분투는 각각 다음 위치에 있다.

도커: %LOCALAPPDATA%\Docker\wsl\data\ext4.vhdx
우분투: %LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\ext4.vhdx

이제 각 경로에 대해 다음 명령어를 실행하면 확보 가능한 용량만큼 vhdx 파일의 사이즈가 줄어든다.

DISKPART
SELECT VDISK file="{vhdx 경로}"
COMPACT VDISK

샘숭 NVMe, i9 13900k 기준으로 200GB가 조금 넘는 vdisk를 처리하는 데 1분 정도 걸렸다.

용량 확보 완료!

내 경우 200GB가 좀 넘던 도커 가상 디스크는 100GB 정도로 거의 절반으로 줄어들었고, 우분투는 약 25% 정도 줄어들었다. 안의 내용을 보면 이제 좀 납득할 수 있는 수준의 크기로 줄어든 느낌이다.


  1. 이 때 시행 착오를 좀 많이 겪었다. 하지만 덕분에 포맷이 생각보다 두려운 작업이 아니라는 것을 알게 되기도 했다. ↩︎

댓글

이 블로그의 인기 게시물

C# 남아도는 메모리에도 불구하고 OutOfMemoryException이 발생한다면?

MySQL 데이터 타입과 Java 데이터 타입 비교/매칭

테일즈위버 OST 전곡 모음