WSLの開発が遅い?/mnt/cとLinux側の保存場所を確認する

WSLで開発していると、同じPCなのにファイル一覧の取得や依存関係の処理が重く感じることがあります。CPUやメモリの設定を変える前に、使っているツールとプロジェクトの保存場所を見ておくと、原因を考える手掛かりになります。

WSL 2では、Linux側のファイルシステムと、/mnt/cなどを経由するWindows側のファイルを利用できます。どちらにも保存できますが、普段処理するツールが動く側へファイルを置くのが、Microsoftが案内する選び方です。


使っているツールが動く場所を見る

最初に、ビルドやパッケージ管理をWindowsとLinuxのどちらで実行しているかを見ます。WindowsのPowerShellでWindows版のツールを使う場合と、WSLのLinux端末でLinux版のツールを使う場合では、適した保存先も変わります。エディターのウィンドウがWindows上にあることだけでは、処理の実行場所までは分かりません。

Linuxのコマンドラインで扱うプロジェクトは、たとえばLinuxユーザーのホーム配下の/home/ユーザー名/projectsへ置く方法があります。Windowsのコマンドラインで処理するファイルは、Windows側の作業フォルダーへ置くのが基本です。両方のツールから同じファイルを触る必要がある場合は、主に行う処理と共有の必要性を合わせて判断してください。

現在の保存場所を確かめる

WSLのLinux端末でプロジェクトのフォルダーを開き、次を実行します。現在のパスと、その場所が属するファイルシステムの情報を表示する読み取り用のコマンドです。

pwd
df -T .

pwdの結果が/mnt/c/...なら、通常はWindowsのCドライブ上のファイルをLinuxから参照しています。/mnt/d/...も同じようにDドライブ上の場所です。Linuxユーザーのホーム配下とは保存経路が異なります。

df -T .では、現在の場所のファイルシステム種別やマウント先も読めます。表示される名前だけを全環境共通の判定条件にせず、実際のパスとマウント先を合わせて見てください。シンボリックリンクや追加のマウントを使う環境では、ホーム配下に見える名前だけで保存先を決めつけないことも大切です。

小さな作業用コピーで違いを見る

保存場所を変えるか迷ったら、既存のプロジェクトをいきなり移動するより、秘密情報や業務データを含まない小さな作業用コピーで試すと判断しやすくなります。同じファイル構成を用意し、同じLinuxツール・同じ操作を両方の場所で実行してください。

比較する際は、初回だけのキャッシュや起動時間が混ざることがあります。複数回繰り返し、実行順も入れ替えると、1回の結果だけで結論を出しにくくなります。ファイル一覧の取得が軽くなっても、ビルド全体やネットワークからのダウンロードまで同じ割合で速くなるとは限りません。

多数の小さなファイルを調べる処理と、少数の大きなファイルを読む処理でも条件は変わります。自分の作業に近い処理で比較し、保存場所を見直しても変化が小さい場合は、処理自体の負荷や通信待ちなど別の要因へ調査を進められます。

WindowsからLinux側のファイルを開く

Linux側へ置いたファイルは、Windowsのエクスプローラーからも参照できます。アドレス欄の\\wsl$から目的のディストリビューションを選ぶ方法をMicrosoftが案内しています。複数のUbuntuを登録している場合は、実際に作業している登録名の環境を選んでください。

Windowsから開けることと、Windows側にファイルを保存していることは同じ意味ではありません。エディターやビルドツールがどの経路を使うかも合わせて見直すと、保存場所の判断を保ちやすくなります。

プロジェクトの配置と仮想ディスクの移設を分けて考える

Linux側へプロジェクトを置く話は、WSLディストリビューション自体を別ドライブへ移す話とは目的が異なります。Cドライブの空き容量を確保したい場合は、WSLの保存ドライブを変更する手順のように、ディストリビューションの保存先を検討することになります。

また、Windowsに置いた成果物をコンテナーへ渡す使い方には、WSL containersでWindowsへファイルを保存する方法があります。Linux側の処理を優先する場面と、Windowsとのファイル共有が必要な場面を、それぞれの作業に合わせて選んでください。

参考資料

このブラウザからの自分のアクセスを解析から除外できます。