目次
WSL(Windows Subsystem for Linux)やDockerを使っていると、ディスク容量が不足することがあります。
特に多くのコンテナを使用している場合や、大きなファイルをダウンロードした場合には、すぐに容量不足になります。
容量不足になったとき毎回対処法を忘れるので、備忘録としてまとめておきます。
容量不足がwslやdocker由来か確認する
まず、現在のディスク使用状況を確認します。
powershellで以下のコマンドを使用して、ディスク使用量を確認できます。
Get-ChildItem C:\ -Recurse -Force -ErrorAction SilentlyContinue |
Sort-Object Length -Descending |
Select-Object FullName, @{Name="Size(GB)";Expression={[math]::round($_.Length /1GB, 2)}} -First 20
このコマンドは、Cドライブのファイルをサイズ順に上位20個表示します。
もし、ここにdocker_data.vhdx
またはext4.vhdx
というファイルがある場合、DockerやWSLのディスク容量が原因です。
Docker内の不要なデータを削除する
Dockerでは、使用していないイメージやコンテナが貯まっていくことがあります。
以下のコマンドで不要なものを一掃しましょう。
docker system prune -a --volumes
これにより、不要なデータを一気に削除できます。
ただしこれだけだと先ほどのdiskの容量が減らない場合があります。
その場合は、下記の仮想ドライブのサイズを最適化する必要があります。
DockerおよびWSLのディスク容量不足の対処法
下記の引用にある通り、WSL(DockerもWSLを利用)では使い方に合わせて仮想ドライブのサイズが自動的に増えていきます。
WSL 2 では、ストレージのニーズに合わせてこれらの VHD ファイルのサイズが自動的に変更されます。 - Microsoft
一方で増えてしまったサイズは、自動的に減らすことができません。
そのため、手動でサイズを減らす必要があります。
WSLを停止する
WSLの仮想ドライブのサイズを変更するためには、まずWSLを停止する必要があります。
下記コマンドをPowershellの管理者権限で実行して、WSLを停止します。
wsl --shutdown
Hyper-Vの確認
次にHyper-V が使えるか確認します。
検索バーに「Windowsの機能の有効化または無効化」と入力し、「Windowsの機能の有効化または無効化」を開きます。
もしHyper-Vのチェックボックスがオンになっていない場合は、オンにしてください(再起動が必要です)。
ない場合、あるいはHyper-Vを使いたくない場合は「Diskpartを使って仮想ドライブのサイズを最適化する」に進んでください。
Hyper-Vを使って仮想ドライブのサイズを最適化する
PowerShellを管理者権限で起動し、以下のコマンドを実行して、仮想ドライブのサイズを最適化します。
Optimize-VHD -Path "{仮想ドライブのパス}" -Mode Full
{仮想ドライブのパス}
は、先ほど確認したdocker_data.vhdx
またはext4.vhdx
のパスを指定してください。
これで、仮想ドライブのサイズが最適化され、ディスク容量を節約できます。
Diskpartを使って仮想ドライブのサイズを最適化する
Hyper-Vを使わない場合は、Diskpartを使って仮想ドライブのサイズを最適化します。
下記コマンドをPowershellの管理者権限で実行して、Diskpartを起動します。
diskpart
次に、以下のコマンドを実行して、仮想ドライブのサイズを最適化します。
select vdisk file="{仮想ドライブのパス}"
attach vdisk readonly
compact vdisk
detach vdisk
exit
{仮想ドライブのパス}
は、先ほど確認したext4.vhdx
のパスを指定してください。
これで、仮想ドライブのサイズが最適化され、ディスク容量を節約できます。
参考
- https://learn.microsoft.com/ja-jp/windows/wsl/disk-space
- https://qiita.com/msy-s/items/282a2212b93380511437
- https://dev.classmethod.jp/articles/windows-virtual-disk-compression/
- https://blog.k-bushi.com/post/tech/container/compress-virtual-disk-using-docker-desktop/
- https://zenn.dev/haretokidoki/articles/49dacc3516c441