PR

【保存版】WSL仮想ディスクをCドライブからDドライブへ移動する完全ガイド


【保存版】WSL仮想ディスクをCドライブからDドライブへ移動する完全ガイド

〜C:容量圧迫を解消し、開発環境を最適化する手順〜


🧩 はじめに:WSLがCドライブを圧迫する理由とは?

WSL(特にWSL2)では、Linuxのファイルシステム全体を仮想ディスク(ext4.vhdx)として保持しています。
この仮想ディスクは以下のようなパスに保存されます:

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

✅ 問題点:

  • 初期状態で2〜5GB前後ですが、プロジェクト・仮想環境(例:venv, node_modules)を追加していくと 10GB〜50GB以上 に成長
  • Windowsアップデートやキャッシュと競合し、C:\の空き容量がすぐに枯渇

✅ 解決策:Dドライブへの移行(wsl --export → wsl --import)

WSLには、ディストリビューションをエクスポート(.tar化)→再インポートする機能が標準で備わっています。
これを使えば、仮想ディスクをDドライブなど任意の場所に配置し直すことが可能です。


📋 ステップバイステップ手順


🔍 Step 1:現在のディストリ一覧と場所を確認

wsl -l -v

出力例:

NAME      STATE           VERSION
Ubuntu    Running         2

また、仮想ディスクの場所とサイズ確認(PowerShell):

Get-ChildItem "$env:LOCALAPPDATA\Packages" -Recurse -Filter ext4.vhdx -ErrorAction SilentlyContinue |
  Select-Object FullName, @{Name="Size(GB)";Expression={[math]::round($_.Length / 1GB, 2)}}

🛑 Step 2:WSLを安全にシャットダウン

wsl --shutdown

📦 Step 3:現在のWSLをエクスポート(バックアップ)

wsl --export Ubuntu D:\Backup\ubuntu.tar

🔒 .tarファイルとしてDドライブへ保存される
このファイルがLinux全体のバックアップ


🧼 Step 4:現在のUbuntuをWSLから削除(Cドライブから消す)

wsl --unregister Ubuntu

⚠️ この操作により、WSL環境が一度削除されます(必ずexport済であることを確認)


🚚 Step 5:Dドライブへ再インポート(新しい場所で再構築)

wsl --import Ubuntu D:\WSL\Ubuntu D:\Backup\ubuntu.tar --version 2

D:\WSL\Ubuntuext4.vhdx が生成され、以降はDドライブで動作します


✅ Step 6:動作確認

wsl -l -v

→ Ubuntu が「Running / Version 2」として表示されれば成功です。


🎯 これで得られるメリット

効果内容
💽 Cドライブの容量確保数GB〜数十GBの容量がC:から削減
🧠 複数WSL環境の整理D:配下にプロジェクトごとに分けて配置可能
🔁 .tarの再利用別PCや別ディスクでも環境を複製可能
🔧 容易なバックアップ.tarファイルを定期保存すればOK
🚀 SSDの寿命延命C:\への頻繁な書き込みを軽減

💡 補足:Optimize-VHDで仮想ディスクを圧縮(必要なら)

WSLの ext4.vhdx は不要ファイルを削除しても縮小されません。
手動で縮小するには以下のようにします(Hyper-Vが必要):

diskpart
# または
Optimize-VHD -Path "D:\WSL\Ubuntu\ext4.vhdx" -Mode Full

⚠ 注意点と再設定項目

  • 再インポート後、初回ログインは root になる → adduser / passwd でユーザー作成
  • .bashrc.ssh.venv など個別にバックアップしておくと安全
  • .wslconfig でメモリ/CPU制限など調整するのもおすすめ

🧠 まとめ:こんな人は今すぐ移行しよう

✅ WSLを開発で多用しており
✅ Cドライブの空き容量が少なくなっていて
✅ SSDの書き込みを減らしたい or データ分離したい

Dドライブへの移行は最も効果的な最適化手段です。


📎 おまけ:自動バックアップ用PowerShellスクリプト

# WSLバックアップ(tar化)を定期実行
$timestamp = Get-Date -Format "yyyyMMdd-HHmm"
$dist = "Ubuntu"
$dest = "D:\Backup\$dist-$timestamp.tar"
wsl --export $dist $dest

🔚 おわりに

WSLは非常に強力な開発基盤ですが、仮想ディスクの肥大化には要注意です。
定期的な容量チェック+移行・バックアップ設計を組み合わせることで、長期的に安定した環境構築が可能になります。


コメント

タイトルとURLをコピーしました