みなさんWSL2は使い倒していますか。
筆者はフロントエンド開発を進めていますが、その際にWSL2をよく使うようになりました。
このWSL2、直接Windowsのフォルダとファイル共有できるのも一つメリットではあると思いますが、
今回は知ってると開発効率を上げられるWSLとWindowsのファイル共有の仕組み と事例を綴っていきます。
とは言いつつ、初めての記事なのでお手柔らかに…
(結論から知りたい人は実例と速度比較まで飛んでください)
目次
- WSL2とWindowsの関係
- 実例と速度比較
- おわりに
1. WSL2とWindowsの関係
WSLとWindowsの関係に入る前にざっくりWSLについての公式の内容です。
(あくまでファイル共有に関する内容のため、WSLとWSL2の違いについては割愛します。)
- WSL(公式より引用)
Linux 用 Windows サブシステムを使用すると、開発者は、従来の仮想マシンまたはデュアルブート セットアップのオーバーヘッドなしで、ほとんどのコマンド ライン ツール、ユーティリティ、アプリケーションを含む GNU/Linux 環境を変更せずそのまま Windows 上で直接実行できます
以下は公式から引用したWSLの仮想マシンとWindowsホストの関係図です。
(Microsoft Devblogより引用)
-
Windows -> WSL2 のディレクトリ参照
WindowsからWSLのディレクトリへアクセスする際は見慣れたエクスプローラーを使って、
アドレス入力部分で\\wsl$
を入れると
インストール済みのWSLのディストリビューション毎のファイルシステムにアクセスできます。
-
WSL2 -> Windows のディレクトリ参照
WSLからWindowsへアクセスする際は/mnt/c/
(Cドライブ基準)に移動することで
Windowsディレクトリへのアクセスが可能になります。
以下は遷移先のディレクトリで、Windowsのものと一致していることがわかると思います。
(画像は一部加工しています)
3. 実例と速度比較
さて、ここまでWSLとWindowsのディレクトリ遷移方法について述べましたが、
アクセス方法に遅延が生じるのは「仮想ファイルシステムとしてマウントしているディレクトリへのアクセス」が原因です。
実際に私が構築したReactでビルドしてからブラウザの立ち上がりまでの時間を計測した結果が以下になります。
方法 | 起動までの時間 |
---|---|
Windowsのディレクトリ上でビルドした場合 | 約150秒 |
WSL2のディレクトリでビルドした場合 | 約7秒 |
上記の通りWindowsを用いた時の遅延が一目瞭然です。
また、Windows上のディレクトリでビルドすることによってホットリロードも効かないということがわかり、
開発速度がメタメタに落ちます。
これらのことからWSL2上で動かしたいプログラムはWSL2上のディレクトリを使いましょう。
ちなみにWSLとWSL2のアクセスパフォーマンスについては公式でも発表されていました。
4. 終わりに
いかがだったでしょうか。
今回は初のQiita記事でWSL2とWindowsのディレクトリアクセスの速度についてのお話をしました。
結果として、WSLとWindowsはそれぞれの環境の上で実行するのが実行速度は速いということですが、
さらに高速化したいという方は、
ぼうびろぐさんのWSL2とWindowsのファイルのやり取りを500MB/sまで高速化した
を使うことでもさらに速度を向上できるようなので是非試してみてください。
記事の内容に不自然な部分もあると思いますが、コメントいただければ更新もしていきますので宜しくお願いいたします。
-以上-