ディスクの圧迫・・・
私はwindows+wsl2の環境でdockerを動かしています。
ビルドイメージが1GBくらいあるので毎回ビルドするたびにディスクの空き容量が減っていきます。
この前開放する前までは容量がいっぱいになってしまい、正常に動作しないケースがあり大変でした。
そこで今回は、WSL2のUbuntu環境が肥大化したときに容量を削減する方法をまとめました。
概要
- Docker のキャッシュなどで肥大化した WSL2 のディスクを削減
^ ext4.vhdx(WSLの仮想ディスク)をコンパクト化 - PowerShellとUbuntuを使って作業します
解放手順
1. Ubuntu を起動
2.使用していないイメージ、コンテナの削除
docker image prune -a -f
docker container prune -f
3.Dockerの不要なファイルを削除
まず、dockerのファイルがどこにあるのか確認しましょう。
以下のコマンドを実施して
sudo ls /var/lib/docker
以下のような結果が出てくると思います。
sudo ls /var/lib/docker
buildkit containers engine-id image network overlay2 plugins runtimes swarm tmp volumes
※dockerフォルダ毎消すことになるので再構築が必要になります。イメージ、コンテナだけ削除で容量が空く場合は削除しなくても良いと思います。
dockerフォルダ以下を削除します。
sudo rm -rf /var/lib/docker
4. PowerShell を開く
PowerShell を開いてください。
5. Ubuntu のパッケージ名を確認
以下のコマンドを実行し、パッケージ名を確認します。
Get-AppxPackage -Name "*Ubuntu*"
PackageFullName
という項目があります。
PackageFullName: CanonicalGroupLimited.Ubuntu20.04LTS_2004.6.16.0_x64__79rhkp1fndgsc
6. ext4.vhdx のパスを確認
エクスプローラーでPackagesまでたどりましょう
C:\Users\<ユーザー名>\AppData\Local\Packages
その中に先ほどのPackageFullName
と同じフォルダが確認できます。
その中のLocalState
にext4.vhdx
があるのを確認できます。
このアドレスをコピーしておきましょう。以下のようになると思います。
C:\Users\<ユーザー名>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx
7. WSLをシャットダウン
poweshellにて以下のコマンドを実行してシャットダウンします。
wsl --shutdown
8. 仮想ディスクを選択して圧縮
powershellにて以下のコマンドを実行します。
diskpart
select vdisk file
コマンドを実行します。file=
以降は先ほどコピーしたアドレスです。
select vdisk file="C:\Users\<ユーザー名>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx"
その後、以下のコマンドを実行していきます。successfully ~~~
のログが出ていたらOKです。
attach vdisk readonly
compact vdisk
detach vdisk
exit
9. ディスクの確認
ここまで完了して、ディスクを確認してみます。
20GBほど容量が空いていることが分かります。
私は以前WSLが300GBほど使っていたことがあったのでその際はかなり助かりました。
ディスク圧迫で困っている方がいらっしゃったらぜひ試してみてください。
参考
https://qiita.com/Yorozuya59/items/6aadee6bb6108e08741d
https://qiita.com/TsuyoshiUshio@github/items/7a745582bbcd35062430