🦁

【WSL】 割り当てるディスク領域を増やす

2024/02/15に公開

こちらで紹介した方法で、STARのindex作成を行ったところ、以前は成功していたのに同じコマンドでエラーが出るようになった。


エラー画面



書き込み権限関係かと思っていたが、調べてみるとディスク書き込み容量のせいだとか。

https://github.com/alexdobin/STAR/issues/410
https://groups.google.com/g/rna-star/c/qkGJFlE5qh8


しかし、WSLがあるドライブはまだまだ空き容量がある。
ということでWSLに割り当てられているドライブ容量を変更する。
https://learn.microsoft.com/ja-jp/windows/wsl/disk-space#how-to-check-your-available-disk-space


手順

1. WSLを終了

Powershellでwsl --shutdownする。
wsl -l -vで全てのディストリビューションが終了していることを確認できる。)

Docker Desktopが動いているときはwsl --shutdownでちゃんと終わらないかも。タスクバーのDockerアイコンを右クリックしてメニューから終わらせる。

2. diskpart

管理者権限でコマンドプロンプトを立ち上げて、diskpartと打ち込む。

プロンプトが「DISKPART> 」に変わる。

3. 仮想ディスクファイルを選択

「ext4.vhdx」というファイルのファイルパスを使用する。私の場合は次のようなパスであった。

select vdisk file="C:\Users\admin\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\ext4.vhdx"

4. ディスク割り当てサイズを指定する。

detail vdiskコマンドで現在のディスク割り当てが確認できる。

この仮想サイズの上限を上げる。
MB単位で指定するとのこと。1024 GB (1024000 MB)から2048000 MBへ変更する。

expand vdisk maximum=2048000

再び詳細を見ると、仮想サイズの上限が上がっていた。(2048GBではなく2000GBになっていた。)

5. DiskPartを終了

exitでDiskPartを終了する。

exit


6. WSL側も設定

紹介通り進めた。

sudo mount -t devtmpfs none /dev

mount | grep ext4

私の場合は「sdc」だが、ここはドライブによって変わる?みたい。一つ上のコマンドの出力を参照すればいいみたい。

sudo resize2fs /dev/sdc 2048000M


これでSTAR index作成でのディスク容量エラーが解消した。


compact vdiskも行ったが、私の場合は効果が無かった。

https://qiita.com/siruku6/items/c91a40d460095013540d#5-diskpartを使う

【 WSL内のデータを消したのにディスク容量が空かない対策 】

WSLデータを削除しても、なぜかディスクの容量が減らない。データを削除したら仮想ハードディスク(VHD)を手動で最適化する必要があるとのこと。

https://qiita.com/zakoken/items/61141df6aeae9e3f8e36#4-肥大化した-wsl2-をリセットする方法

1. WSLをshutdown

2. Powershellを管理者権限で起動

3. 仮想ハードディスクを最適化

仮想ハードディスクのパスが必要になるので調べておく。例えば以下のようなわかりにくい場所にある。
"C:\Users<ユーザー名>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\ext4.vhdx"

Optimize-VHD -Path "C:\Users\<ユーザー名>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\ext4.vhdx"

こんな感じで進んで、数分で終了した。

「ext4.vhdx」ファイルの容量が減って、ドライブの空き容量が増えているのが確認できるはず。

Discussion