WSL の仮想ハードディスクのサイズを縮小する diskpart

updated: 2020-08-15

WSL の仮想ハードディスクのサイズが大きくなっていたので, diskpart を使ってサイズを縮小した. How to Shrink a WSL2 Virtual Disk – Stephen’s Thoughts に有るように

  • wsl.exe --terminate <distro>
  • diskpart
  • DISKPART> select vdisk file="C:\Users\user_name\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_xxxxxxxxxxx\LocalState\ext4.vhdx"
  • DISKPART> compact vdisk

と実行して数分待つとサイズが小さくなった.

実行前 実行後

WSL の仮想ハードディスクファイル自体は C:\Users\user_name\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_xxxxxxxxxxx\LocalState\ext4.vhdx などにある. このファイルサイズを適切に縮小するにはWSL 2 should automatically release disk space back to the host OS #4699にもあるように optimize-vhd を実行すればいいらしいけれど, optimize-vhd コマンドが見つからないというエラーになったので代替の方法を使った. 特に WSL 内で Docker を使ったりすると,適切にディスクサイズが小さくならないらしい.