WSL2のストレージを移動させる

はじめに

WSL2でDockerを使っていると、WSL2のストレージ容量がどんどん膨らみ、 Cドライブの残り容量が逼迫するようになったので、WSL2のストレージ(仮想HDD)をDドライブに移動させた。備忘も兼ねてその手順を記載する。

作業情報

筆者環境

  • Windows 11 Home 64bit
  • WSL2 をセットアップ済み
  • Docker Desktop for Windows をセットアップ済み
    • WSL2をバックエンドに動作

作業内容

作業の流れ

  1. ディストリビューション名の確認、移動先フォルダの作成
  2. Docker DesktopとWSL2の停止
  3. ディストリビューションのエクスポート
  4. 現行ディストリビューションの削除
  5. ディストリビューションのインポート
  6. デフォルトのログインユーザーの変更
  7. 動作確認
  8. 撤収作業

手順

ディストリビューション名の確認、移動先フォルダの作成

ストレージを移動させたいディストリビューション名を確認する。 wsl -l で確認が可能。

移設先と、エクスポートしたファイル置き場が必要になるので、必要に応じてフォルダ作成などをする。

今回は例として、以下のような場合のコマンドを記載する。

  • D:\WSL\にファイルをエクスポートする

  • D:\WSL\[ディストリビューション名]\にストレージを移動させる

以下、特に記載のない限り、PowerShellのコードを記載。

#WSL2のディストリビューション名の確認
wsl -l

#移動先のフォルダを作成
mkdir D:\WSL

#ディストリビューション名でフォルダを作成
cd D:\WSL
mkdir Ubuntu-20.04
mkdir docker-desktop-data
mkdir docker-desktop

#結果確認
ls

※フォルダ作成はエクスプローラーなどでもOK

【確認】

  • 移動先のフォルダが作成されていること

Docker DesktopとWSL2の停止

タスクトレイのDockerのアイコンを右クリックして、「Quit Docker Desktop」をクリックして、Docker Desktopを停止させる。

その後、wsl --shutdownでWSL2を停止させる。

wsl -l -vですべてのディストリビューションSTOPPEDになっていることを確認する。

#WSL2シャットダウン
wsl --shutdown

#WSL2の稼働状況確認
wsl -l -v

【確認】

ディストリビューションのエクスポート

wsl --export <Distribution Name> <FileName>ディストリビューションのエクスポートを行う。

tar形式で出力されるため、出力先パスも.tarにしている。

wsl --export Ubuntu-20.04 D:\WSL\ubuntu.tar
wsl --export docker-desktop-data D:\WSL\dkdata.tar
wsl --export docker-desktop D:\WSL\dk.tar

【確認】

  • tarファイルが出力されていること

ディストリビューションの削除

wsl --unregister <Distoribution Name>ディストリビューションを削除する。

このコマンドを実行すると既存のストレージは削除されるため、前手順で、tarファイルがエクスポートできているかを確認してから実施する。

wsl --unregister Ubuntu-20.04
wsl --unregister docker-desktop-data
wsl --unregister docker-desktop

ディストリビューションのインポート

wsl --import <Distribution Name> <InstallLocation> <FileName>⁠でディストリビューションをインポートする。

今回はWSL2のインポートなので、忘れずに --version 2 を指定する。

wsl --import Ubuntu-20.04 D:\WSL\Ubuntu-20.04 D:\WSL\ubuntu.tar --version 2
wsl --import docker-desktop-data D:\WSL\docker-desktop-data D:\WSL\dkdata.tar --version 2
wsl --import docker-desktop D:\WSL\docker-desktop D:\WSL\dk.tar --version 2
#インポートできているか確認
wsl -l

【確認】

デフォルトのログインユーザーの変更

この方法で作成したディストリビューションはrootユーザーでのログインとなってしまうので、以下のコマンドでデフォルトのログインユーザーを変更する。

<DistributionName> config --default-user <Username>

Ubuntu-20.04 config --default-user ユーザー名

動作確認

WSL2と、Docker Desktopを起動してうまく動くか確認する。

撤収作業

エクスポートしたtarファイルはそのまま残るため、不要な場合は手動で削除する。

参考サイト