WSL2で他のディスクをマウント
はじめに
WSL2はとても便利なのですが、FPGA開発等をしているとすぐに容量が足りなくなってきます。
ちなみに私の環境は、システム用にSSD(Cドライブ)、データ用に大容量HDD(Dドライブ以降)、ネットワーク経由でNAS(QNAP) という構成になっています。
WSLの中でも、普段よく使うものは高速なSSDに置いたまま、大きなものをHDDやSSDに置きたくなってきます。
そこでこれらがマウントできないか少し調べてみました。
同じPCの別の vhdx をマウントする
Microsoft Store から入手した WSL を使う
おもにこちらの情報。
ディスクの管理から vhdx ファイルは作成可能なので、例えば Dドライブに ext4.vhdx のようなファイルを作って、PowerShell から
wsl --mount "D:\ext4.vhdx" --vhd --bare
とすれば、WSL 内に表れるので fdisk などでパーティーションを作成して mkfs.ext4 などのコマンドでフォーマットしておく。
以降は PowerShell から
wsl --mount "D:\ext4.vhdx" --vhd --partition 1 --name work-disk
のような感じで、 /mnt/wsl/work-disk などにマウントできる模様。ただ起動時に自動マウントさせるのがまだうまくいっていない。
Microsoft Store から入手した WSL を使わない
ディスクの管理から接続した vhd ファイルは PowerShell から下記のコマンドで参照できるので、
GET-CimInstance -query "SELECT * from Win32_DiskDrive"
ディスク番号を調べて、例えば6番目のディスクになっていたら下記のような感じで
wsl --mount \\.\PHYSICALDRIVE6 --bare
とか
wsl --mount \\.\PHYSICALDRIVE6 --partition 1 --name work-disk
でマウントできる。
ディスクの管理から接続は PC を再起動すると切れるので、自動接続したい場合は
こちらの情報が参考になりそうです。
vhdmount.txt を以下のように用意しておき
sel vdisk file="d:\ext4.vhd"
attach vdisk
automount.bat を下記のように準備して、
diskpart -s D:\vhdmount.txt
タスクスケジューラを用いて、スタートアップ時をトリガに起動するように設定するとよいようです。
NAS をマウントする
NFS でマウント
おもにこちらを参考に、NSFでのマウントを試みてみました。
sudo mkdir -p /run/sendsigs.omit.d/rpcbind
sudo /etc/init.d/rpcbind start
sudo /etc/init.d/nfs-common start
我が家にあるのは QNAP の TS-219P+ ですが、/etc/fstab に、下記のような感じで書き足せば、マウントできるようです。
XX.XX.XX.XX:/nfsshare /mnt/nfs nfs rw,auto 0 0
その他の方法
ほかにもこちらなどによると、FTPFSやsshfsなども候補になりそうに思いました。
Discussion