メインコンテンツへスキップ
Linux では、システムに十分な空きディスク容量があっても、Windsurf の Language Server が “no space left on device” を含むエラーとともに起動に失敗する場合があります。これは実際のディスク使用量ではなく、Linux カーネルの inotify watch または inotify instance 制限の上限に達していることが原因です。 Language Server は、ワークスペース内のファイル変更を監視するために inotify を使用します。カーネルの上限に達すると、システムは ENOSPC エラーを返し、これが一般的に “no space left on device” として表面化します。

症状

Windsurf の出力ログに以下のような内容が記録される場合があります:
Language server failed - no space left on device: no space left on device
多くの場合、次のようなコンポーネントを参照するスタックトレースを伴います:
  • file_watcher
  • AddTrackedWorkspace
  • AddDirectoriesRecursive
典型的に見られる挙動:
  • Windsurf は通常どおり起動する
  • Language Server は起動してすぐに終了する
  • Language Server に依存する機能(例: Cascade、Autocomplete)が動作しない

原因の調査

1. 現在の inotify 制限を確認する

以下のコマンドを実行します:
# Check the maximum number of inotify watches per user
cat /proc/sys/fs/inotify/max_user_watches

# ユーザーごとの inotify instance の最大数を確認
cat /proc/sys/fs/inotify/max_user_instances
一般的なデフォルト値は、watch の数が 8192、インスタンス数が 128 です。これらは大規模なワークスペース(特にモノレポ)での IDE 利用にはしばしば不足し、さらに他のプロセス(コンテナ、同期ツール、別のエディタ、バックグラウンドサービスなど)が inotify リソースを消費することで、利用可能なリソースがさらに圧迫される場合があります。

2. 現在使用されている inotify インスタンスの数を確認する

find /proc/*/fd -lname anon_inode:inotify 2>/dev/null | wc -l
この値が max_user_instances の値付近(またはそれ以上)に達していると、新しい inotify の利用プロセス(言語サーバーなど)が初期化に失敗することがあります。

解決策

inotify の制限値を増やします。変更は一時的(再起動まで)にも、恒久的にも適用できます。

一時的な対処(再起動まで)

sudo sysctl fs.inotify.max_user_watches=524288
sudo sysctl fs.inotify.max_user_instances=1024

恒久的な解決策(再起動後も有効)

echo "fs.inotify.max_user_watches=524288" | sudo tee -a /etc/sysctl.conf
echo "fs.inotify.max_user_instances=1024" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
いずれかの対処を行ったら、Windsurf を再起動してください。Language Server は正常に起動するはずです。 これは Linux 上でよく知られている制限であり、ファイルウォッチャーに依存する他の IDE や開発ツールにも影響します。組織でシステム設定を一元管理している場合は、IT/インフラチームにこれらの sysctl の設定を適用してもらうよう依頼してください。

どの値をいつ使うべきか

  • fs.inotify.max_user_watches=524288
    大規模なリポジトリやモノレポの場合に推奨される設定値です。監視対象のファイル/ディレクトリごとにカーネルメモリを消費します(64ビットシステムでは 1 ウォッチあたり一般的に約 1 KB)。そのため、524288 ウォッチでおおよそ 512 MB 前後 のカーネルメモリを使用します。
  • fs.inotify.max_user_instances=1024
    複数の inotify インスタンスを作成するアプリケーション(複数の IDE ウィンドウ、コンテナ、ファイル同期ツールなど)を実行する場合に推奨される値です。デフォルト値の 128 では、開発環境ではすぐに使い切ってしまう可能性があります。