VM status unknown grey question mark usually means missing storage, a stale lock, or an orphaned config. Here’s the step-by-step fix for Proxmox.

Check the storage first
Most of the time the VM’s disk is on storage that isn’t active. Open Datacenter > Storage and look for a grey question mark next to any storage. If it’s NFS or iSCSI, the connection dropped. Reconnect it or check the server. If the storage is local and still shows a question mark, it might be a ZFS pool that didn’t import after a reboot.
zpool list
zpool import -a
Sometimes the VM config references a storage that no longer exists. That gives the same grey question mark. Edit the VM config and point the disk to a valid storage, or recreate the missing storage with the same name.
Stale locks
A stale lock file can also cause this. Check /var/lock/qemu-server/ for leftover locks. If the VM isn’t actually running, delete the lock file and restart the VM.
ls /var/lock/qemu-server/
rm /var/lock/qemu-server/lock-100.conf
Replace 100 with your VM ID. If the VM is in a cluster, the lock might be on another node. Check the cluster logs and make sure the node that owns the lock is up.

Orphaned configs
If the VM config file is missing or corrupted, Proxmox shows unknown status. Check /etc/pve/qemu-server/ for the config file. If it’s gone, you might have a backup. Restore it from /var/lib/vz/dump/ or from your backup server.
ls /etc/pve/qemu-server/
cat /etc/pve/qemu-server/100.conf
If the config is there but the VM still shows unknown, try moving it out and back in, or restarting the pve-cluster service. Sometimes the cluster filesystem gets out of sync.
My take
This is annoying because Proxmox doesn’t tell you what’s wrong. It just shows a grey question mark. But the fix is usually one of those three things. Check storage, check locks, check config. Don’t overthink it.
If you’re running ZFS, this is similar to the raidz1 pool issue where a faulted disk takes down the pool. Make sure your pool is healthy.