WSLは仕事が速い同居人のようなものです。ただし、机の上を片づけるのは少し苦手です。Ubuntuの中でパッケージを入れ、Dockerイメージを落とし、ビルドを回し、データセットを置く。Linux側では自然に見えますが、Windowsに戻るとCドライブが何十GBも減っていることがあります。さらに、WSL内で大きなファイルを削除しても、Windows側の空き容量がすぐ戻らないことがあります。
だからこそ、2026年でもWSLにはディスク掃除ツールが必要です。WSL 2はLinuxファイルシステムを動的拡張の仮想ディスクに入れます。多くの場合、そのファイルは ext4.vhdx です。必要に応じて大きくなりますが、ファイルを消したからといって常に自動で小さくなるわけではありません。MicrosoftのWSLディスク容量ドキュメントでも、VHDの場所確認、サイズ変更、仮想ディスクの圧縮は個別の作業として扱われています。
いくつかのユーザー反応は、かなり現場感があります。ユーザー v は、PowerShellからDiskPartを使い、WSLのディスクを選んで圧縮すると話しています。ユーザー J は、WSL内の大きなファイルを削除しても仮想ディスクは自動で小さくならないため、ChatGPTにも同じ方向をすすめられたと言います。ユーザー L はGeminiにすすめられて使い始めたと話し、ユーザー p は以前からWizTreeを使っていると述べています。ユーザー k はWinDirStatに似ているがファイルサイズ表示が分かりやすいと見ており、ユーザー N はWizTreeがNTFSの特性を利用するため速く、WinDirStatの代替にもなると補足しています。
このコメント欄が示しているのは、単一の正解ではありません。問題の分解です。
- まず、何が容量を使っているかを見る。
- 次に、何を消してよいか判断する。
- 最後に、WSLの仮想ディスクを圧縮してWindows側へ容量を返す。
3つ目を忘れると、部屋のゴミを袋にまとめただけで、玄関に置きっぱなしにした状態になります。
WinDirStat:遅めだが、見通しがよい#

下の画像はWinDirStatで実際にCドライブを見ているものです。右側の拡張子一覧では .vhdx が90.2 GiBを占めています。左側のパスは Users > AppData > Local > Packages > CanonicalGroupLimited... の下にあり、Microsoft Store版UbuntuなどのWSLディストリビューションがローカル状態を保存する場所です。つまりこれは謎のWindowsゴミではなく、WSLの仮想ディスクが大きくなっている状態です。
WinDirStat の良さは、見れば分かることです。上部のツリーでパスが分かり、下部のtreemapで巨大ファイルが視覚的に目立ちます。無料でオープンソース、コードは GitHub にあり、ライセンスはGPL-2.0です。信頼性を考えるなら、公式サイトかGitHubのリリースから入手するのが無難です。
弱点は速度です。大きなディスクではスキャンに時間がかかります。UIも新しいとは言えません。それでも、ディスク分析ツールに必要なのは流行の見た目ではなく、「90GBはどこへ行ったのか」を正直に示すことです。
WizTree:かなり速いが、オープンソースではない#
ユーザー反応の中で何度も出てくる WizTree は、実際に速いツールです。NTFSボリュームではファイルシステムのメタデータを利用できるため、通常のディレクトリ走査より短時間で結果が出ます。開発用PCでは、この速さがかなり効きます。Cドライブが太ったかも、と思った時点で、もう犯人候補が並んでいるような感覚です。
ただし、ライセンスは明確に区別する必要があります。WizTreeはオープンソースではありません。公式サイトでは個人利用は無料、商用・業務利用は有料ライセンスが必要とされています。信頼性の面では有名なWindowsユーティリティですが、入手先は diskanalyzer.com の公式サイトに限定した方がよいです。
おすすめの分け方はこうです。
- 個人PC:WizTreeは非常に便利。
- 会社PC:ライセンス条件を先に確認。
- オープンソース重視:WinDirStatを選ぶ。
DiskPart:Windows標準だが、慎重に使うべき#
コメントに出てくるDiskPartは、怪しい裏技ではありません。Windows標準のツールで、Microsoftは動的拡張仮想ディスクを圧縮する compact vdisk コマンドを文書化しています。
典型的な手順は次のようになります。
wsl --shutdown
diskpart
select vdisk file="C:\Users\<you>\AppData\Local\Packages\<distro>\LocalState\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit注意点があります。
- 先に
wsl --shutdownを実行する。 ext4.vhdxのパスを必ず確認する。- 圧縮前に、WSL内で不要なキャッシュや大きなファイルを削除する。
Optimize-VHDも使える場合がありますが、Hyper-V PowerShellモジュールの有無やWindowsエディションに左右されます。
DiskPartはMicrosoftの標準ツールなので信頼できます。ただし、ディスクに近い操作をするため、軽い気持ちで使うものではありません。ドキュメントを開いたまま作業するくらいがちょうどよいです。
2026年の現実的なWSL掃除手順#
まず、WSL内で容量を確認します。
du -h --max-depth=1 ~ | sort -h
sudo du -h --max-depth=1 /var | sort -h
docker system dfよく大きくなるのは、Dockerイメージとvolume、node_modules、パッケージキャッシュ、ビルド成果物、Python/Conda環境、データセット、ログ、一時テストファイルです。
次に、理解できるものだけ削除します。
sudo apt autoremove
sudo apt clean
docker system pruneDockerの prune、特に -a やvolume削除は慎重に扱ってください。これは最適化ボタンではなく削除コマンドです。
その後、Windows側でWinDirStatまたはWizTreeを使い、.vhdx がまだ大きいか確認します。WinDirStatは遅いがオープンソース。WizTreeは速いがクローズドソースで、個人無料・商用有料です。
最後にWSLを停止し、仮想ディスクを圧縮します。
wsl --shutdownそしてMicrosoftの手順に従ってDiskPartの compact vdisk、または利用可能なら Optimize-VHD を使います。ここでようやく、Linux側で空けた容量がWindows側に戻ります。
どれをすすめるべきか#
普通のユーザーには、まずWinDirStatをすすめます。無料、オープンソース、信頼しやすく、スクリーンショットでも説明しやすいからです。速さではWizTreeに負けますが、透明性があります。
開発用PCをよく掃除する人には、WizTreeとDiskPartの組み合わせが便利です。WizTreeで素早く場所を見つけ、DiskPartでVHDXを圧縮します。ただしWizTreeのライセンスとDiskPartのパス指定には注意が必要です。
覚え方はシンプルです。
- WinDirStat/WizTree:容量の場所を見る。
- WSL/Linuxコマンド:不要な中身を消す。
- DiskPart/Optimize-VHD:Windows側の仮想ディスクを小さくする。
WSLが悪いのは容量を使うことではありません。本格的な開発環境なら容量は使います。問題は、それが1つの大きな .vhdx の中で静かに進むことです。ディスク掃除ツールは、その黒い箱をもう一度地図に戻してくれます。
参考#
- Microsoft Learn: How to manage WSL disk space
- Microsoft Learn: compact vdisk
- WinDirStat: Official site and GitHub repository
- WizTree: Official site and commercial license page