WSL2 스토리지 가상 디스크(VHDX) 용량 줄이기

,

WSL 리눅스 내부에서 파일을 삭제해도 윈도우 호스트의 .vhdx 파일 크기는 줄어들지 않습니다. 가상 디스크가 한번 점유한 공간을 운영체제에 자동으로 반환하지 않는 것이 기본 설정이기 때문입니다.

현재 사용 중인 디스크의 용량을 줄이는 방법과 향후 자동화를 위한 팁을 소개합니다.

사전 지식

WSL2의 스토리지는 VHDX라는 파일로 윈도우에 존재합니다. 경로는 이렇습니다.

%userProfile%\AppData\Local\Packages\<배포판-이름>\LocalState\ext4.vhdx

제 경우는 이랬습니다.

C:\Users\mytory\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\ext4.vhdx

diskpart를 이용한 수동 압축

VHDX 파일을 정리하는 안전한 방법입니다. 이 작업은 관리자 권한으로 실행된 명령 프롬프트(CMD) 또는 PowerShell에서 진행해야 합니다.

작업 순서 (100GB 기준 약 5~15분 소요)

  1. WSL 전체 종료
    먼저 실행 중인 모든 WSL을 종료합니다. wsl --shutdown
  2. 관리자 권한으로 터미널 실행
    시작 메뉴에서 CMD 또는 PowerShell을 검색한 뒤, [관리자 권한으로 실행]을 선택합니다.
  3. diskpart 실행 및 작업
    터미널에 다음 명령어를 순서대로 입력합니다. (file= 뒤의 경로는 본인의 실제 VHDX 경로로 수정하세요.)
diskpart

# 이하는 diskpart 프로그램 내에서 내리는 명령

# 가상 디스크 파일 선택
select vdisk file="C:\Users\<사용자계정>\AppData\Local\Packages\...\ext4.vhdx"

# 안정적인 압축을 위해 읽기 전용으로 연결
attach vdisk readonly

# 용량 최적화(압축) 실행
compact vdisk

# 연결 해제 및 종료
detach vdisk
exit

작업 시 주의사항 및 성능

Tip 1. 동적으로 줄어들게 설정하기 (실험적 기능)

WSL2의 실험적 기능으로 Sparse 모드라는 것이 있습니다. 동적으로 사용하지 않는 공간만큼 크기를 줄여 주는 기능입니다. 매번 diskpart를 실행하지 않아도 되는 것이죠.

이 옵션은 기본적으로는 꺼져 있으므로 이미 만든 디스크에 대해서는 따로 켜 줘야 합니다.

단, 실험적 기능이라 그런지, 옵션을 켜는 과저에서 데이터가 망가질 수도 있다고 합니다. 그래서 실행전 백업을 하는 것을 권장합니다.

# 관리자 권한 터미널에서 실행
wsl --manage <배포판이름> --set-sparse true --allow-unsafe

--allow-unsafe 옵션을 보면 아직 실험적 기능이라는 것을 알 수 있죠.

배포판 이름을 확인하려면 wsl --list라고 치면 됩니다.

Tip 2. 신규 생성될 디스크를 위한 선제적 설정

아래 설정은 이미 사용 중인 스토리지에는 영향을 주지 않지만, 앞으로 새롭게 설치할 WSL 배포판에는 자동으로 적용됩니다. %USERPROFILE%\.wslconfig 파일을 생성하거나 편집하여 다음 내용을 추가해 두면 향후 생성할 VHD에 대해서 Sparse 모드를 켜게 됩니다.

[wsl2]
# 신규 생성되는 VHD를 자동으로 Sparse 모드로 설정 (용량 자동 반환)
sparseVhd=true

카테고리

,

17년차 풀스택 웹 개발자 Mytory입니다

웹 개발에서도 중요한 것은 개념입니다.
이 블로그에는 제가 개발하며 익힌 개념들을 정리합니다.

워드프레스를 오래 다뤄 왔고 강의도 두 편 찍었습니다.
– 인프런 “워드프레스 제대로 개발하기 어드민 편, 클라이언트 편
– 클래스101 “누구나 할 수 있는 워드프레스 홈페이지 만들기 – 기획부터 출시까지 한 방에 OK

유튜브 채널에 워드프레스 관련 팁들을 올리고 있습니다.

👉 소개 더 보기

대표글

댓글 남기기