WSL2上でDockerを使ってAOSPのソースをダウンロードしていたら、Cドライブの空き容量が100GB以上一気に減ってしまった。
Qiitaにも対処法はいくつかあるけど、Windows 11(Home/Pro)環境で2025年8月時点に動作確認した内容を整理しておく。
参考にした記事
概要
- WSL2仮想ディスクの容量を削減(圧縮)する
- WSL2ディストリビューションをCドライブからDドライブへ移動する
STEP1:WSL2仮想ディスク(ext4.vhdx)を圧縮する
WSL2ではLinuxファイルシステムが ext4.vhdx という仮想ディスクに保存されている。
不要なファイルを削除しても、仮想ディスクのサイズは自動では縮小されない。
① 不要なファイル・Dockerイメージを削除
まず、WSL2内で不要なファイルやDockerイメージを削除しておく。
② PowerShellを管理者権限で起動し、WSLをシャットダウン
Win + X > A => 管理者権限 PowerShell 起動し、以下のコマンドを実行
wsl --shutdown
③ 仮想ディスク(ext4.vhdx)を圧縮する
- ディストリビューション名の確認
wsl -l -v
2. PackageFamilyNameの確認
Get-AppxPackage -Name "*Ubuntu*" | Select PackageFamilyName
3. 圧縮する
- Optimize-VHD が使用できる場合
Optimize-VHD -Path "C:\Users\<ユーザー名>\AppData\Local\Packages\<PackageFamilyName>\LocalState\ext4.vhdx" -Mode Full
Windows11 Pro バージョンの場合、以下の記事を参考にHyper-Vを有効にする
https://qiita.com/shinsaka/items/df588d9824a2c5964ef5
- Optimize-VHD が使用できない場合(diskpartを使用する)
diskpart
DISKPART> プロンプトで以下を実行
select vdisk file="C:\Users\<ユーザー名>\AppData\Local\Packages\<PackageFamilyName>\LocalState\ext4.vhdx"
compact vdisk
exit
④ サイズが圧縮されたことを確認
dir C:\Users\<ユーザー名>\AppData\Local\Packages\<PackageFamilyName>\LocalState\ext4.vhdx
Mode LastWriteTime Length Name
---- ------------- ------ ----
【圧縮前】-a---- 2025/08/07 13:24 107207458816 ext4.vhdx
【圧縮後】-a---- 2025/08/07 15:51 9111076864 ext4.vhdx
STEP2:WSL2 Linux ボリュームを外部ストレージに移動する
① 移動先フォルダの作成(例:Dドライブ)
mkdir D:\WSL
icacls D:\WSL /grant $env:USERNAME":(OI)(CI)(F)"
② LxRunOfflineをインストール
GitHubリリースページから LxRunOffline-v3.5.0-msvc.zip をダウンロード:
https://github.com/DDoSolitary/LxRunOffline/releases
-
C:\Tools\LxRunOfflineに解凍 - Win + X > A => 管理者権限 PowerShell 起動し、以下のコマンドを実行
cd C:\Tools\LxRunOffline
.\LxRunOffline.exe list
③ ディストリビューションをDドライブに移動
注意
Docker Desktopとwslは終了させておくこと
ext4.vhdxのバックアップを取得しておくこと
.\LxRunOffline.exe move -n Ubuntu -d D:\WSL\Ubuntu
.\LxRunOffline.exe move -n docker-desktop -d D:\WSL\docker-desktop
⚠ 移動時にエラーが出た場合
[ERROR] Couldn't set the case sensitive attribute of the directory ...
Reason: Indicates that the directory trying to be deleted is not empty.
以下のように、ext4.vhdx ファイルを手動で移動先へコピーすることで対応可能です:
Ubuntu:
`C:\Users\<ユーザー名>\AppData\Local\Packages\<PackageFamilyName>\LocalState\ext4.vhdx`
↓
D:\WSL\Ubuntu\ext4.vhdx
Docker Desktop:
`C:\Users\<ユーザー名>\AppData\Local\Docker\wsl\main\ext4.vhdx`
↓
D:\WSL\docker-desktop\ext4.vhdx
移動後にWSLを起動し、無事に動作するか確認
wsl -d Ubuntu