WSL 을 이용해서 리눅스 배포판을 설치하면 root file system 이 담겨있는 가상 디스크 이미지는 C:\Users\<사용자>\AppData\Local\Packages 에 특정 디렉토리 내에 위치하게 된다.
예를 들어, Ubuntu 20.04를 이용해서 생성했을 때,
C:\Users\<사용자>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04LTS_79rhkp1fndgsc\LocalState
내에 ext4.vhdx 라는 이름으로 관리된다.
규칙성이 있어 보이긴 하나 디렉토리 이름을 명명하는 방법은 정확히 알 수는 없다.
문제는 root file system은 패키기를 설치할 수록 지속적으로 커지게 되고, 일반적으로 용량이 크기 때문에 C 디렉토리에 용량이 부족한 상황이 발생할 수 있다.
이러한 문제를 개선하기 위해서 다음과 같은 방법으로 root file system을 다를 디스크로 이동시킬 수 있었다.
우선 배포판을 확인한다.
wsl --list -v
NAME STATE VERSION
Ubuntu-20.04 Running 2
Ubuntu-20.04 라는 배포판을 다른 곳으로 export 시킨다.
wsl --export Ubuntu-20.04 g:\wsl-rfs\ubuntu-20.04-test\ubuntu-20.04-test.tar
g:\wsl-rfs\ubuntu-20.04-test 디렉토리에 export 한 파일이 생성된다. 이것 자체만으로는 바로 사용할 수 있는 것도 아니고 기존의 Ubuntu-20.04 배포판은 그대로 존재하는 상태이다.
C 드라이브 용량을 절약하기 위해서 기존 배포판을 제거한다.
wsl --unregister Ubuntu-20.04
앞서서 예를 들었던, C:\Users\<사용자>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04LTS_79rhkp1fndgsc\LocalState 디렉토리로 접근하면 ext4.vhdx 파일이 제거되었고 용량도 확보된 것을 확인할 수 있다.
이전에 export 했던 파일을 다시 새로운 배포판을 살려낸다. ext4.vhdx 를 생성할 위치를 하나 정해야 한다. 예를 들어 g:\wsl-test 라는 디렉토리로 정했다면,
g:
cd g:\wsl-test
wsl --import Ubuntu-20.04-test ./ g:\wsl-rfs\ubuntu-20.04-test\ubuntu-20.04-test.tar
다시 배포판 리스트를 확인해보면,
wsl --list -v
NAME STATE VERSION
Ubuntu-20.04-test Stopped 2
좀 번거로울 수는 있지만, 이 방법으로 원하는 위치에 wsl 배포판 root file system을 관리할 수 있다.