SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

vhdxファイルを小さくする(WSLの仮想ディスクの縮小)

問題

wslのLinux環境の中のファイルを削除しても、vhdxのファイル容量は減らないようです。

肥大する一方のようですが、これを縮小することはできますか?

答え

大きくなると、最適化するまで小さくならないというのは、データベースのファイルなどでもよくある挙動。

vhdxにも最適化コマンドがある。

使用中だとマウントできないので、wslはシャットダウン。

wsl --shutdown

PowerShellにて以下を実行。

Mount-VHD "VHDXファイルのパス" -NoDriveLetter -Readonly
Optimize-VHD "VHDXファイルのパス" -Mode Quick(またはFull)
Dismount-VHD "VHDXファイルのパス"

wsl側で不要なファイルを削除した後でOptimize-VHDすると、vhdxファイルが小さくなる。

Quickで1分もかからない感じ。Fullでも何分もかかるほどではなかった。

メモ

Mount-VHD、Optimize-VHD、Dismount-VHD 等のコマンドがない場合は、Windowsの機能の有効化でHyper-Vを有効にする。

Optimize-VHD などのコマンドがない環境では、diskpartコマンドでも対応できるらしい。10分、20分かかっている人もいるようなので、処理時間に差が出るかもしれない。

diskpart → 別ウインドウ開く

select vdisk file="C:\WSL-Distros\…\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit

関連するメモ

コメント