【WSL】 割り当てるディスク領域を増やす
こちらで紹介した方法で、STARのindex作成を行ったところ、以前は成功していたのに同じコマンドでエラーが出るようになった。
エラー画面
書き込み権限関係かと思っていたが、調べてみるとディスク書き込み容量のせいだとか。
https://github.com/alexdobin/STAR/issues/410
https://groups.google.com/g/rna-star/c/qkGJFlE5qh8
しかし、WSLがあるドライブはまだまだ空き容量がある。
ということでWSLに割り当てられているドライブ容量を変更する。
手順
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)を手動で最適化する必要があるとのこと。
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