blog

作成日 : 2025/02/12
更新日 : 2025/02/12

Proxmoxで状態が表示されない場合の対処方法

前提

・ Proxmox VE 8.1.4 (以下、Proxmoxと呼ぶ)を利用

・ クラスタを組んでいない状態

   詳細な構成については、

   Proxmox VEを使ってみる (2) – Proxmox VEのインストールと設定 を参照

発生した事象

ProxmoxのWeb UIのVM及び、Storageの一覧を閲覧するときに、状態が?になった。

対処方法

状態が確認できないノードにログインし、pvestatdサービスを再起動した。

# 原因を解析した結果、今回は、pvestatdが停止していたと考えられるため、startでもよかった
# systemctl start pvestatd
systemctl restart pvestatd

原因解析

まず、pvestatdのログを確認したところ、process id 1のsystemdが、killしたことが判明した。

$ journalctl -u pvestatd.service
...
Sep 25 09:32:49 xxxxxx systemd[1]: pvestatd.service: Main process exited, code=killed, stat>
Sep 25 09:32:49 xxxxxx systemd[1]: pvestatd.service: Failed with result 'signal'.
Sep 25 09:32:49 xxxxxx systemd[1]: pvestatd.service: Consumed 22min 18.972s CPU time.
...

次に、システムログを確認したところ、pvestatdのセグメンテーションフォルトにより、pvestatd.serviceがkillされたことが判明した。

Sep 25 09:32:49 xxxxxx kernel: pvestatd[1502]: segfault at 128 ip 0000561cb3a1a12a sp 00007ffc8c9b4f00 error 4 in perl[561cb3931000+195000] likely on CPU 8 (core 16, socket 0)
Sep 25 09:32:49 xxxxxx kernel: Code: ff 00 00 00 81 e2 00 00 00 04 75 11 49 8b 96 f8 00 00 00 48 89 10 49 89 86 f8 00 00 00 49 83 ae f0 00 00 00 01 4d 85 ff 74 19 <41> 8b 47 08 85 c0 0f 84 c2 00 00 00 83 e8 01 41 89 47 08 0f 84 05
Sep 25 09:32:49 xxxxxx systemd[1]: pvestatd.service: Main process exited, code=killed, status=11/SEGV
Sep 25 09:32:49 xxxxxx systemd[1]: pvestatd.service: Failed with result 'signal'.
Sep 25 09:32:49 xxxxxx systemd[1]: pvestatd.service: Consumed 22min 18.972s CPU time.

所感

今回の事象が発生した根本的な原因としては、セグメンテーションフォルトであるため、Proxmoxのバグの可能性がある。 そのため、Proxmoxのバージョンが上がると、発生しなくなる可能性がある。

ただし、pvestatdは、VM, storage, containerの状態を定期的に確認し、全てのノードに確認した状態を送信するサービスである。そのため、今回の事象と同じように、ProxmoxのWeb UI上でVM, storage, containerの一覧で状態を確認できない場合は、pvestatdを再起動することで、解決できる可能性は高いと考えられる。

参考

pvestatdの公式ドキュメント

https://pve.proxmox.com/pve-docs/pvestatd.8.html

ProxmoxのForum上にあるWeb UI上のステータスが?になっていることに関連する議論

https://forum.proxmox.com/threads/proxmoxve-web-shows-status-unknown.138733