Windows 11でvagrant-winnfsdが動作しない問題の解決方法

問題の概要

Windows 10からWindows 11にアップグレード後、VagrantでNFSを使用したファイル共有が動作しなくなる問題に遭遇しました。

この記事では、その症状、原因、そして解決方法について詳しく説明します。

環境

  • OS: Windows 11(Windows 10からアップグレード)
  • Vagrant: vagrant-winnfsd 1.4.0プラグイン使用
  • VM: CentOS 6.9(bento/centos-6.9)
  • 仮想化: VirtualBox

症状

1. 高いLoad Average

$ uptime
18:45:49 up 7 min,  0 users,  load average: 11.91, 9.52, 5.06

2. httpdプロセスがD状態(ディスクI/O待ち)でハング

$ ps aux | grep ' D '
apache    3841  0.0  0.3 494516 11916 ?        D    17:48   0:00 /usr/sbin/httpd
apache    3842  0.0  0.3 494516 11916 ?        D    17:48   0:00 /usr/sbin/httpd
apache    3843  0.0  0.3 494516 11900 ?        D    17:48   0:00 /usr/sbin/httpd
# ... 多数のhttpdプロセスがD状態

3. dmesgでNFS接続エラー

$ dmesg | tail
nfs: server 192.168.33.1 not responding, still trying
nfs: server 192.168.33.1 not responding, still trying

4. NFSマウントへのアクセスがタイムアウト

$ ls /vagrant/
# コマンドがハングして応答なし

原因

Windows 11では、セキュリティが強化されており、Windows Defenderがwinnfsd.exe(VagrantのNFSサーバー)をブロックしていることが原因でした。

解決方法

Windows Defenderの除外設定

最小限の設定で問題を解決できました:

  1. Windows セキュリティを開く(Windowsキー + 「セキュリティ」で検索)
  2. ウイルスと脅威の防止をクリック
  3. ウイルスと脅威の防止の設定の下の設定の管理をクリック
  4. 除外セクションまでスクロールして除外の追加または削除をクリック
  5. 除外の追加プロセスを選択
  6. プロセス名としてwinnfsd.exeを入力して追加

確認方法

除外設定後、Vagrantを再起動して確認:

# Vagrantを再起動
$ vagrant reload

# VM内でNFSマウントを確認
$ vagrant ssh
$ mount | grep nfs
192.168.33.1:/C/Users/[username]/src/project-folder on /vagrant type nfs (rw,vers=3,udp,vers=3,udp,nolock,addr=192.168.33.1)

# Load Averageが正常値に戻ったことを確認
$ uptime
18:45:49 up 7 min,  0 users,  load average: 0.25, 0.16, 0.09

その他の考慮事項

代替案:rsyncへの切り替え

Windows Defenderの設定変更が難しい環境では、Vagrantfileを修正してNFSからrsyncに切り替える方法もあります:

# NFSからrsyncに変更
config.vm.synced_folder ".", "/vagrant", type: "rsync"

まとめ

Windows 11へのアップグレード後、セキュリティ強化によってvagrant-winnfsdがブロックされる問題は、Windows Defenderの除外設定にwinnfsd.exeを追加するだけで解決できました。

この簡単な設定変更により、Windows 10と同様にVagrant + NFSの開発環境を継続して使用できます。

コメント

タイトルとURLをコピーしました