Proxmox 無法開啟 lxc: Too many open files

問題

今天要新增 LXC Container 時發現無法啟動。
從 Web Admin 開啟 CT 可以看到啟動成功,機器狀態也有看到 running,但沒多久機器狀態又跳回 Stopped。

打開 Host 機的 Console,輸入以下指令嘗試手動開啟:

$ pct start <ctid>

發現沒有用,並且會跳出以下錯誤:

Failed to allocate directory watch: Too many open files

上網搜尋後,發現有不少 PVE 的高用量用戶也碰過這個問題,官方貼了一個答覆,大意是 LXC Container 會使用一個名為 “inotify” 的系統變化通知機制,inotify 在系統中的數量是有限制的,在 PVE 上,預設的 inotify 數量限制是 128。因此,如果你開啟太多 LXC Container,在同時運行時就會耗盡可用的 inotify 資源。

解決方案

解決方法很簡單,就是直接把 inotify 數量限制往上拉就好:

$ sysctl fs.inotify.max_user_instances=512

以上指令可以把 inotify 的數量限制往上拉 4 倍,不過這個指令只是暫時拉高限制而已,如果要永久生效的話則要對 /etc/sysctl.conf 進行變更:

fs.inotify.max_user_instances=512
fs.inotify.max_user_watches=262144

上述參數一樣是將現有數量往上拉 4 倍,如果還是太少的話可以視情況再往上拉,最後執行:

$ sysctl -p

讓他生效就可以了。

您可能也會喜歡…