
Windows 11でWSL2を利用して開発していると、Windows側とLinux側の間(いわゆる/mnt/cなど)のファイルアクセス速度が遅いと感じることがあるかもしれません。
特に、プロジェクトのソースコードをWindows側に置き、WSL2上のNode.jsやPythonから読み込んでビルドやパッケージのインストールを実行すると、非常に時間がかかる場合があります。これは、従来使用されていた「9p」と呼ばれるネットワーク共有プロトコルのオーバーヘッドが原因です。
この課題を根本的に解決するため、最新のWSL2では新しいファイルシステム共有プロトコル「virtiofs」が導入されました。本記事では、このvirtiofsを有効にしてファイルアクセス速度を向上させるための手順を詳しく解説します。
この記事で行うこと
前提条件
注意点
手順1:WSLのバージョンを確認・アップデートする
まず、お使いの環境のWSLがvirtiofsに対応しているか確認します。 PowerShellを起動し、以下のコマンドを実行します。
wsl --version
出力結果に表示される「WSL バージョン」を確認してください。対応する最新機能を使用するために、以下のコマンドでWSLを最新の状態にアップデートすることをおすすめします。
wsl --update
プレリリース版の機能を含めて最新化する場合は、以下のコマンドを実行します。
wsl --update --pre-release
手順2:.wslconfig ファイルを編集して virtiofs を有効化する
WSLのグローバル設定ファイルである .wslconfig に設定を追加します。
このファイルは、Windowsユーザープロファイルフォルダーの直下に配置します。 具体的には、以下のパスです(ユーザー名はご自身のWindowsアカウント名に置き換えてください)。
C:\Users\ユーザー名\.wslconfig
エクスプローラーのアドレスバーに %USERPROFILE% と入力してEnterキーを押すと、対象のフォルダーを簡単に開くことができます。
ファイルが存在しない場合は、新規にテキストファイルを作成し、ファイル名を .wslconfig に変更してください(拡張子の .txt が残らないように注意してください)。
作成した .wslconfig ファイルをテキストエディターで開き、以下の内容を記述して保存します。
[wsl2]
virtiofs=true
すでに他の設定が記載されている場合は、[wsl2] セクションの配下に virtiofs=true を追加してください。
手順3:WSL2を再起動して設定を適用する
設定を反映させるために、実行中のWSLを完全にシャットダウンします。 PowerShellで以下のコマンドを実行してください。
wsl --shutdown
コマンドの実行後、再度WSLのターミナル(Ubuntuなど)を起動すると、自動的に新しい設定が反映されます。
パフォーマンスの確認
virtiofsが有効になっているか確認する
設定が正しく適用されているか確認するには、WSL2のターミナル内で以下のコマンドを実行します。
mount | grep virtiofs
出力に virtiofs on / type virtiofs のような行が含まれていれば、virtiofsが正しく動作しています。何も表示されない場合は、WSLのバージョンが古い可能性があるため、手順1に戻ってWSLのアップデートを確認してください。
体感できる効果
virtiofsを有効にした後、WindowsとLinux間のファイル共有フォルダ(/mnt/c/ 配下など)でファイル読み書きを行うと、特に小さなファイルを大量に読み書きする処理(npm install など)で実行時間が大幅に短縮される場合があります。
Microsoftの公式ブログや複数のユーザー報告によると、従来の9pプロトコルと比較して、クロスOS間のファイル操作速度が最大で2倍程度に向上することが報告されています。効果の大きさは環境やワークロードによって異なりますので、ご自身の環境で実際にお試しください。
元に戻す方法
もし設定後に動作が不安定になったり、期待した効果が得られなかったりした場合は、設定を元に戻すことができます。
%USERPROFILE%\.wslconfigファイルをテキストエディターで開きます- 記述した
virtiofs=trueの行を削除するか、行頭に#を記述してコメントアウトします - ファイルを保存し、PowerShellで
wsl --shutdownを実行して再起動します
よくある質問
Q. 設定してもファイルアクセス速度が変わらないように感じます。
A. プロジェクトのソースコードは、Windows側(/mnt/c/)ではなく、WSLのホームディレクトリ(~/)側に置くのが最も高速です。virtiofsはあくまでWindows側のファイルにアクセスする際の速度向上策ですので、本質的な高速化を求める場合は、ファイルをLinuxファイルシステム側に配置することをお勧めします。
Q. 設定後、WSLが起動しなくなりました。
A. WSLのバージョンが古い可能性があります。手順1に従ってWSLを最新版にアップデートするか、一度設定を元に戻して起動できるか確認してください。
まとめ
WSL2の新しいファイルシステム共有プロトコルであるvirtiofsを有効にすることで、WindowsとLinux間のファイルアクセスで発生していたボトルネックを大幅に軽減できます。
設定手順は .wslconfig に1行追加するだけと非常にシンプルですので、WSL2上の開発速度を向上させたい方はぜひ試してみてください。
参考情報
- Microsoft Learn:WSL の詳細設定構成
- WSL GitHub リポジトリ・リリースノート

