WSL2のストレージを移動させる
はじめに
WSL2でDockerを使っていると、WSL2のストレージ容量がどんどん膨らみ、 Cドライブの残り容量が逼迫するようになったので、WSL2のストレージ(仮想HDD)をDドライブに移動させた。備忘も兼ねてその手順を記載する。
作業情報
筆者環境
- Windows 11 Home 64bit
- WSL2 をセットアップ済み
- Ubuntu-20.04を使用
- Docker Desktop for Windows をセットアップ済み
- WSL2をバックエンドに動作
作業内容
- WSL2のディストリビューションのストレージをCドライブのデフォルトの場所から、Dドライブの任意の場所に移動させる。
- 記載例では以下を実施。
- 移動させるディストリビューション名
- Ubuntu-20.04
- docker-desktop-data
- docker-desktop
- 移動先ディレクトリ
D:\WSL\
- 移動させるディストリビューション名
作業の流れ
- ディストリビューション名の確認、移動先フォルダの作成
- Docker DesktopとWSL2の停止
- ディストリビューションのエクスポート
- 現行ディストリビューションの削除
- ディストリビューションのインポート
- デフォルトのログインユーザーの変更
- 動作確認
- 撤収作業
手順
ディストリビューション名の確認、移動先フォルダの作成
ストレージを移動させたいディストリビューション名を確認する。
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
【確認】
- すべてのディストリビューションのSTATEが、
Stopped
になっていること
ディストリビューションのエクスポート
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ファイルはそのまま残るため、不要な場合は手動で削除する。
参考サイト
WSL の基本的なコマンド | Microsoft Docs https://docs.microsoft.com/ja-jp/windows/wsl/basic-commands
WSL2のLinuxおよびDockerイメージ格納先を任意のディレクトリに移動する - SIS Lab https://www.meganii.com/blog/2021/07/11/move-the-destination-of-wsl2-linux-and-docker-image-container-to-another-directory/
WSL2のストレージを移動する - (名称未定) https://okutom.hatenablog.com/entry/2020/12/28/172725