0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSL2 VHDXをDドライブへ移動してCドライブを節約する手順

0
Posted at

環境

項目 内容
OS Windows 11 Home
WSLディストリビューション Debian, Ubuntu
問題 CドライブにVHDXが占有(計46GB)、残り46GB
解決策 VHDXをDドライブへ移動(SSD 151GB空き)

背景知識:WSL2 VHDXの特性

項目 内容
初期サイズ 1GB程度
最大サイズ(上限) デフォルト 1TB(1007GB)
拡張タイミング WSL内でファイルが増えた瞬間
拡張単位 ブロック単位(数MB)で自動拡張
縮小 自動では行われない(手動が必要)

VHDXは動的拡張方式のため、増えるのは自動、減るのは手動。

VHDXファイルの場所

# Debian
C:\Users\<ユーザー名>\AppData\Local\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\ext4.vhdx

# Ubuntu
C:\Users\<ユーザー名>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\ext4.vhdx

注意: Store版WSLの場合、%LOCALAPPDATA%\Packages\ 配下に格納される。

実施手順

Step 1:実使用量の確認

wsl -d Debian df -h /
wsl -d Ubuntu df -h /

Step 2:エクスポート

wsl --export Debian "D:\WSL\Debian_export.tar"
wsl --export Ubuntu "D:\WSL\Ubuntu_export.tar"

Step 3:既存ディストリビューションを削除

wsl --unregister Debian
wsl --unregister Ubuntu

Step 4:Dドライブへインポート

wsl --import Debian "D:\WSL\Debian" "D:\WSL\Debian_export.tar"
wsl --import Ubuntu "D:\WSL\Ubuntu" "D:\WSL\Ubuntu_export.tar"

インポート完了時に以下の警告が出るが正常終了:
wsl: スパース VHD のサポートは、データの破損の可能性があるため、現在無効になっています。
この操作を正しく終了しました。

Step 5:デフォルトユーザーの修正

wsl -d Ubuntu cat /etc/passwd | grep -v nologin | grep -v false
ubuntu config --default-user <ユーザー名>
debian config --default-user <ユーザー名>

Step 6:不要なtarファイルを削除

Remove-Item "D:\WSL\Debian_export.tar"
Remove-Item "D:\WSL\Ubuntu_export.tar"

結果

ディストリ 移動前 移動後 削減
Debian 28.14GB 24.17GB -3.97GB
Ubuntu 18.15GB 15.20GB -2.95GB
合計 46.29GB 39.37GB -6.92GB
  • CドライブからDドライブへ約46GB分を移動
  • エクスポート→インポートにより約7GBのデータ圧縮効果

補足:Windows 11 Homeでの制限事項

手段 結果
Optimize-VHD Hyper-Vツール未対応(Home版不可)
diskpart compact WSL2のVHDXは認識されない
wsl --manage --set-sparse true データ破損リスクのため無効化
wsl --manage --set-sparse true --allow-unsafe 効果なし(ほぼ変化なし)

Windows 11 HomeでのWSL2 VHDX縮小は wsl --export / --import が唯一の実用的手段。

参考コマンド:VHDXサイズ確認

Get-Item "D:\WSL\Debian\ext4.vhdx" | Select-Object @{N="GB";E={[math]::Round(.Length/1GB,2)}}
Get-Item "D:\WSL\Ubuntu\ext4.vhdx" | Select-Object @{N="GB";E={[math]::Round(.Length/1GB,2)}}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?