目次
きっかけ
Windows使いの私はWSL2を導入してUbuntu+Dockerで開発しています。
普段使用しているノートPCはLet's Noteで昔自身でSSDに換装してます。
が、容量をケチったのと、容量が無いくせにパーティションを切っている都合上、Cドライブが100GB程しかない状況でした。
Let's Noteいいよ、Let's Note。
軽くてタフなのが魅力。
Macもたまに使用しますが、個人的にはLet's Noteの方がタフな気がしているので持ち歩き用に使用しています。中古で\40,000~\50,000程で売られています。
この話はまた今度。
Cドライブの状況と原因
元々の空き容量は20GB程でした。少ない。
それが気が付けば下記の画像のような状況に。
ディスク容量が少ないことでDocker ImageのPullが失敗するようになりました。
原因としてはWSL2のUbuntuとDockerのイメージやデータがCドライブ(デフォルト)上に存在するため、ImageのPullなどの作業しているといつの間にかディスク容量が圧迫されていく形になります。
Dドライブへの引っ越し vs パーティション容量を増やす
本来の解決方法は大きい容量のSSDを買ってくること。
ケチらないで512GB位にすれば良かったと後悔。
今更容量の大きいSSDに変えるのは面倒なので以下の方法を検討しました。
今回はDドライブへの引っ越しにしました。
Dドライブへの引っ越し
幸いなことにDドライブにはまだ容量に余裕があります。それでも60GB程ですが。
そこにお引越しすればまだ延命可能です。
引っ越しにはツールを使用するかWSLコマンドを実行すれば良さそうです。
パーティション容量を増やす
Dドライブに容量が多少残されているので、Dドライブの一部をCドライブに割り当てれば解消可能そうです。しかしCドライブのパーティションを増やすのは、Cドライブの横にDドライブがある都合上面倒です。以下画像のような状況です。
要はCドライブの右横にDドライブから作成した空き容量を配置する必要があります。
これはWindowsのディスク管理やdiskpartコマンドでは出来ないようです。
以下ではツールを使用して拡張しているみたいです。
加えてフラグメントが発生してディスクのパフォーマンスが落ちるかと思い今回はこの方法は諦めました。
回避方法
今回はCドライブ⇒Dドライブに既存データの移動と設定変更でDドライブのイメージを使用するように変更しました。
また今回は簡単に済ませられそうだったのでツールを使用しています。
ツールをダウンロード
タグから最新バージョンのLxRunOffline-vx.x.x-mingw.zipをダウンロードします。
※Windowsの場合
ダウンロードしたzipファイルを展開します。
解凍ツールは何でも良いです。
私は普段7zipっていうツールを使用しています。
Powershellを管理者権限で起動します。
Dドライブ上にフォルダを作成する。
今回はD:\wslというフォルダを作成しました。
# D driveに変更
PS> D:
# フォルダを作成
PS> mkdir wsl
作成したフォルダに対してPowershellから権限を与える。
# 作成したフォルダに権限を付与
PS> icacls D:\wsl /grant $env:USERNAME":(OI)(CI)(F)"
ダウンロード&解凍したツールのフォルダに移動します。
# C driveに変更(ツールをCドライブ上に解凍した場合)
PS> C:
# ツールのフォルダに移動
PS> cd C:\path\to\folder
wslコマンドでディストリビューションを確認。
# wslコマンドで確認
PS> wsl --list
私の環境はこのような形になっていました。
- docker-desktop
- docker-desktop-data
- Ubuntu
これらを全て移動させます。
WSLマネージャーを一度停止させます。
PS > net stop LxssManager
ツールを使用して移動します。
下記の例はdocker-desktopを移動させた例です。
他も同じ要領で移動させます。
docker-desktop-dataは容量が大きい場合時間が掛かります。
私の場合は15GB程だったので5分程度掛かりました。
PS > .\LxRunOffline.exe move -n docker-desktop -d d:\wsl\docker-desktop
移動が完了しても特にメッセージは表示されないので、次のコマンド入力が可能になったら他のディストリビューションも移動させます。
移動が完了したら停止させたWSLマネージャーを起動します。
PS > net start LxssManager
上記でDドライブに移動した状態で動作します。
wslコマンドでエクスポートしてDドライブにインポートする方法もあるみたいですが、こちらの方が楽ですかね。このツールは内部でwslコマンドを起動させているのか…謎です。