Possible Proxmox VE issue: ESXi storage backed by remote vCenter causes another node to become grey/unknown after a reboot

Jun 14, 2022
4
1
23

Hello,​


I would like to report and discuss a behavior I have observed in a Proxmox VE 9.2 cluster and ask whether this could be related to the way pvestatd refreshes storage status/statistics.

Environment​

I have a 5-node Proxmox VE cluster.

All five nodes have identical hardware and are fully updated. The current software versions are:
  • Proxmox VE: 9.2.0
  • PVE Manager: 9.2.9
  • Kernel: 7.0.14-9-pve
  • pve-esxi-import-tools: 1.0.1
  • Corosync: 3.1.10-pve3
The cluster is located in one data center, which I will call Site A.

There are five ESXi-type storages configured in Proxmox:
  • Four storages point directly to individual ESXi hosts located in the same subnet as the Proxmox cluster.
  • The fifth storage points to a vCenter Server located in a different subnet and in a geographically different data center.
The vCenter manages an ESXi cluster consisting of:
  • 6 ESXi hosts in the vCenter's local subnet/data center.
  • 4 additional ESXi hosts in the same subnet as the Proxmox cluster.
For privacy, I have replaced the real hostnames and infrastructure names with generic names.


Background: why I configured the ESXi storages​

I initially had a single ESXi storage configured against the vCenter.

However, when accessing this storage from Proxmox, I noticed significant delays.

For example, when opening the import workflow and asking Proxmox to list the available VMs, the request could take a considerable amount of time and eventually return a connection error.

If I waited and repeated the operation, the VM list could eventually appear.

However, when selecting a VM from the list and proceeding with the import, Proxmox needed to query the VM's information again in order to display its hardware configuration. At that point I would again get a connection error.

In practice, I was unable to reliably import a VM through the vCenter-based ESXi storage.

This behavior was particularly noticeable from the Proxmox cluster because the vCenter is located in another data center/subnet and there is additional network latency between the two sites.

Because of this, I configured individual ESXi storages pointing directly to the ESXi hosts.

Those direct ESXi connections are much more responsive because the ESXi hosts are in the same subnet as the Proxmox cluster.


The behavior I observed​

For several days I had been noticing an unusual behavior during maintenance windows involving Proxmox node reboots.

When a node was rebooted, another node in the cluster — specifically the node I use as a test node and which had the vCenter-based ESXi storage configured — would sometimes appear in the Proxmox GUI with a grey/unknown status.

The node itself was actually running normally.

The interesting part was that the affected node would remain grey/unknown for approximately 15 minutes, and would eventually return to green/online without any intervention.

I initially suspected a problem with the node itself, pvestatd, corosync, or the cluster communication.

However, today's maintenance window allowed me to reproduce the behavior in a much more controlled way.


Test performed today​

The cluster consists of five nodes:
  • node1
  • node2
  • node3
  • node4
  • node5
Before the test, nodes 1, 2 and 3 had already been rebooted as part of the maintenance window.

I then performed the following test.

1. Enable the ESXi storages​

I enabled:
  • On node4: an ESXi storage pointing directly to an ESXi host in the same subnet as the Proxmox cluster.
  • On node5: the ESXi storage pointing to the remote vCenter.
The important difference is therefore:

node4 → direct ESXi host → same subnet / low latency

node5 → vCenter → different subnet/data center / higher latency


2. Reboot node4​

I then rebooted node4.

Node4 came back normally.

However, while node4 was rebooting / coming back online, node5 became grey/unknown in the Proxmox GUI.

Node5 itself had not been rebooted.

This is the part that caught my attention.

After approximately 15 minutes, node5 returned to green/online by itself.


Why I suspect the vCenter-based storage​

The important observation is that node5 was the only node in this test with the ESXi storage pointing to the remote vCenter.

The other ESXi storages point directly to ESXi hosts in the same subnet as the Proxmox cluster.

Therefore, my current hypothesis is that the problem may not be related to the node itself, but rather to the time required to obtain information from the vCenter-based storage.

My understanding is that pvestatd periodically collects status/statistics information for nodes and storages.

If a storage operation involves communicating with a remote vCenter, and that operation is slow or temporarily blocked because of network latency, I wonder whether this can delay or block the status/statistics update sufficiently to make the node appear as grey/unknown in the GUI.

In other words, I am wondering whether something similar to this could be happening:

Proxmox node
|
| pvestatd / storage status query
|
v
ESXi storage
|
v
remote vCenter
|
| network latency / delayed response
|
v
vCenter / ESXi inventory

While this query is taking place, the node's status information may not be refreshed within the expected interval, causing the GUI to display the node as unknown.


Additional observation​

I also tested the behavior with the vCenter-based storage enabled on node5 while rebooting node4.

Node4, which had the direct ESXi storage configured, did not remain grey after reboot. It came back normally after the expected boot time.

Node5, which had the remote vCenter storage configured, was the node that became grey.

This makes me think the difference between the two storage configurations may be relevant.

The hardware is identical across all nodes, and all nodes are running the same Proxmox/kernel versions, so I do not currently have a reason to suspect a hardware or software-version difference between the nodes.


Previous observations with the vCenter storage​

The storage pointing to the remote vCenter has also shown significantly different behavior when used for VM import.

From the Proxmox GUI:
  1. I request the list of VMs from the vCenter-based ESXi storage.
  2. The request takes a long time.
  3. Eventually Proxmox reports a connection error.
  4. If I wait and try again, the VM list may eventually appear.
  5. I select a VM and start the import process.
  6. Proxmox then needs to query the VM again to obtain its hardware information.
  7. At this point, the GUI again reports a connection error and never reaches the point where the VM hardware information is displayed.
Because of this, I have configured direct ESXi-host storages instead.

These direct connections work much better for my use case.


Current situation​

As I now have direct access to the ESXi hosts that I need for the migration process, I no longer need the vCenter-based ESXi storage for VM imports.

I have therefore removed the vCenter-based ESXi storage from the Proxmox clusters.

I am nevertheless interested in understanding the behavior because it seems possible that the storage configuration was indirectly affecting the status reporting of the node.


Questions​

I would appreciate feedback from the Proxmox developers/community on the following:
  1. Can a slow or unreachable ESXi/vCenter storage operation affect pvestatd enough to cause a node to appear grey/unknown in the GUI?
  2. Does pvestatd perform storage status/statistics queries in a way that could be affected by a high-latency remote vCenter connection?
  3. Could a delayed storage query cause the node's status information to become stale and therefore make the GUI display the node as unknown?
  4. Is there a timeout mechanism for ESXi/vCenter storage queries that prevents a slow remote API call from affecting the normal node status reporting?
  5. Is there a recommended way to diagnose this relationship, for example by tracing pvestatd activity or identifying which storage operation is blocking/delaying the status update?
I am particularly interested in whether the ~15 minute period during which node5 remained grey/unknown could be consistent with a timeout/retry mechanism associated with the remote vCenter storage.

I am not claiming that the vCenter storage is definitely the cause. However, after today's controlled test, the correlation seems strong enough that I would like to understand what is happening internally.

Thanks in advance for any feedback.
 
Grey/unknown in the GUI doesn't mean the node left the cluster; it means no other node has received a fresh status update from it for a period of time.

pvestatd [0] runs a single loop per node covering node, qemu, lxc and storage status, and writes the result into pmxcfs. If one storage call blocks, the whole loop stalls and nothing gets published, so the node greys out while running perfectly well.

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