自分用まとめ。
optimize-vhd
コマンドが使えない人向け。(おそらくHyper-V関連をインストせずWSL2?Docker?を利用しているからと思われる)
vhdxファイルのパスを調べる
PowerShellを起動し以下のコマンド実行。(WSL2でUbuntuを利用の場合)
PackageFamilyName
の値をメモ。
> Get-AppxPackage -Name "*Ubuntu*"
Name : CanonicalGroupLimited.Ubuntu20.04onWindows
Publisher : CN=23596F84-C3EA-4CD8-A7DF-550DCE37BCD0
Architecture : X64
ResourceId :
Version : 2004.2021.825.0
PackageFullName : CanonicalGroupLimited.Ubuntu20.04onWindows_2004.2021.825.0_x64__79rhkp1fndgsc
InstallLocation : C:\Program Files\WindowsApps\CanonicalGroupLimited.Ubuntu20.04onWindows_2004.2021.825.0_x64__79rhkp
1fndgsc
IsFramework : False
PackageFamilyName : CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc
PublisherId : 79rhkp1fndgsc
IsResourcePackage : False
IsBundle : False
IsDevelopmentMode : False
NonRemovable : False
Dependencies : {CanonicalGroupLimited.Ubuntu20.04onWindows_2004.2021.825.0_neutral_split.scale-150_79rhkp1fndgsc,
CanonicalGroupLimited.Ubuntu20.04onWindows_2004.2021.825.0_neutral_split.scale-100_79rhkp1fndgsc, C
anonicalGroupLimited.Ubuntu20.04onWindows_2004.2021.825.0_neutral_split.scale-125_79rhkp1fndgsc}
IsPartiallyStaged : False
SignatureKind : Store
Status : Ok
PackageFamilyName
の値をもとにエクスプローラなどで次のディレクトリを確認。
C:\Users\{ユーザ名}\AppData\Local\Packages\{PackageFamilyName}\LocalState\ext4.vhdx
最適化実施(DISKPART利用)
1.PowerShellでWSLを止める
> wsl --shutdown
2. diskpartの操作
PowerShellでdiskpartを起動する(コマンドプロンプトが別途起動)
※Docker DesktopなどWSL上で動いている物があれば、予め停止しておく。
> diskpart
# ここから別に起動したコマンドプロンプト
> select vdisk file="C:\Users\{ユーザ名}\AppData\Local\Packages\{PackageFamilyName}\LocalState\ext4.vhdx"
DiskPart により、仮想ディスク ファイルが選択されました。
> attach vdisk readonly
100% 完了しました
DiskPart により、仮想ディスク ファイルがアタッチされました。
> compact vdisk
100% 完了しました
DiskPart により、仮想ディスク ファイルは正常に圧縮されました。
> detach vdisk
DiskPart により、仮想ディスク ファイルがデタッチされました。
> exit
3. WSL起動
PowerShellでディストリビューションの確認
> wsl -l
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu-20.04 (既定)
docker-desktop-data
docker-desktop
ディストリビューションの実行
> wsl -d Ubuntu-20.04