> ## Documentation Index
> Fetch the complete documentation index at: https://docs.windsurf.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Linux で Language Server が「No Space Left on Device」で失敗する

> inotify の watch / instance の上限 (ENOSPC) の枯渇が原因で発生する Linux の Language Server 起動失敗の問題を解決します。症状、診断用コマンド、および sysctl による解決方法を含みます。

Linux では、システムに十分な空きディスク容量があっても、Windsurf の Language Server が **"no space left on device"** を含むエラーとともに起動に失敗する場合があります。これは実際のディスク使用量ではなく、Linux カーネルの **inotify watch** または **inotify instance** 制限の上限に達していることが原因です。

Language Server は、ワークスペース内のファイル変更を監視するために **inotify** を使用します。カーネルの上限に達すると、システムは `ENOSPC` エラーを返し、これが一般的に "no space left on device" として表面化します。

***

<div id="symptoms">
  ## **症状**
</div>

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）が動作しない

***

<div id="diagnosis">
  ## **原因の調査**
</div>

<div id="1-check-your-current-inotify-limits">
  ### **1. 現在の inotify 制限を確認する**
</div>

以下のコマンドを実行します:

```shell theme={null}
# 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 リソースを消費することで、利用可能なリソースがさらに圧迫される場合があります。

<div id="2-check-how-many-inotify-instances-are-currently-in-use">
  ### **2. 現在使用されている inotify インスタンスの数を確認する**
</div>

```shell theme={null}
find /proc/*/fd -lname anon_inode:inotify 2>/dev/null | wc -l
```

この値が `max_user_instances` の値付近（またはそれ以上）に達していると、新しい inotify の利用プロセス（言語サーバーなど）が初期化に失敗することがあります。

***

<div id="solution">
  ## **解決策**
</div>

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

<div id="temporary-fix-until-reboot">
  ### **一時的な対処（再起動まで）**
</div>

```shell theme={null}
sudo sysctl fs.inotify.max_user_watches=524288
sudo sysctl fs.inotify.max_user_instances=1024
```

<div id="permanent-fix-survives-reboot">
  ### **恒久的な解決策（再起動後も有効）**
</div>

```shell theme={null}
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 の設定を適用してもらうよう依頼してください。

***

<div id="when-to-use-which-value">
  ## **どの値をいつ使うべきか**
</div>

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