Verified against Proxmox VE 9.2.4 · Proxmox Backup Server 4.2.5 · Ceph Squid / Tentacle · Debian 13 (Trixie) · Linux kernel 7.0 (PVE 9.2 default) · 2026-08-12
○Not yet marked complete on this device.
Why this matters in production
Quorum is the safety property that stops two halves of a partitioned cluster
from both believing they are in charge. Losing it freezes every configuration
change, stops HA from acting, and produces a cluster that looks healthy and
refuses to do anything.
The arithmetic is trivial. What is not trivial is the QDevice, which behaves
differently depending on whether your cluster has an odd or an even number of
nodes — a distinction that decides whether adding one improves your
resilience or reduces it.
The arithmetic
For a cluster with N expected votes, quorum is a strict majority:
Quorum = ⌊N/2⌋ + 1
Cluster
Expected votes
Quorum
Node failures tolerated
1 node
1
1
0
2 nodes
2
2
0
3 nodes
3
2
1
4 nodes
4
3
1
5 nodes
5
3
2
6 nodes
6
4
2
7 nodes
7
4
3
2 nodes + QDevice
3
2
1
⚙Interactive · Quorum Simulator
Toggle node failures and network link losses to see whether the cluster keeps quorum. The goal
of this exercise is to build intuition for the difference between alive nodes and quorate partition.
3 nodes × 1 vote each. Expected = 3, quorum = 2.
Click a node circle to toggle alive/down. To simulate network partition, click a link
below.
Cluster state
QUORATE
Expected
3
Alive
3
Needed
2
Safe. Cluster-wide operations (VM start/stop, migration, HA actions) can
proceed. Self-fencing is not triggered.
What is happening mathematically?
Corosync uses a majority-vote model. With 3 expected votes, quorum
requires ⌊3/2⌋ + 1 = 2 votes. With a QDevice,
the cluster tolerates one PVE-node failure even in a 2-node setup because the QDevice
breaks the symmetric partition.
Reading the votes
Read-only / Safea two-node cluster with a working QDevice— Expected votes 3 against 2 nodes is the QDevice being counted. The Qdevice column reads A,V,NMW: Alive, Vote granted, and Not Master Wins. A node showing NA or NV there has a QDevice problem that pvecm status will otherwise report as quorate.
# pvecm status
Cluster information
-------------------
Name: edge-cluster
Config Version: 4
Transport: knet
Secure auth: on
Quorum information
------------------
Date: Wed Aug 12 13:22:07 2026
Quorum provider: corosync_votequorum
Nodes: 2
Node ID: 0x00000001
Ring ID: 1.9f
Quorate: Yes
Votequorum information
----------------------
Expected votes: 3
Highest expected: 3
Total votes: 3
Quorum: 2
Flags: Quorate Qdevice
Membership information
----------------------
Nodeid Votes Qdevice Name
0x00000001 1 A,V,NMW 10.0.0.11 (local)
0x00000002 1 A,V,NMW 10.0.0.12
0x00000000 1 Qdevice
Illustrative output
Three lines carry the state:
Expected votes comes from corosync.conf plus the QDevice. It is what
the cluster believes it should have.
Total votes is what is actually present right now.
Quorum is the threshold. Activity blocked appears next to it when
total votes fall below it.
The Qdevice column in the membership list is easy to skim past and is the
only place a broken QDevice shows up while the cluster is still quorate.
A,V means alive and granting its vote. NA means not alive — you have lost
the QDevice and nobody has told you.
The QDevice
A QDevice is an external vote holder. It runs corosync-qnetd on a host that
is not a cluster member, and it participates in quorum decisions without
running any workload.
The only requirements on that host are network reachability to the cluster
and the corosync-qnetd package. It can be a small VM elsewhere, a physical
box, or a Raspberry Pi — it needs almost no resources.
Configuration changesetting up a QDevice— Configuration change affecting quorum. Run the setup command from one cluster node; it installs and configures corosync-qdevice on every node and increases expected votes cluster-wide. Do it while the cluster is quorate and healthy.
set -euo pipefail
QNETD_HOST=192.0.2.50
# --- On the external host ---
# apt install -y corosync-qnetd
#
# Root SSH access from the cluster nodes to this host is required for the
# setup step, because pvecm has to exchange certificates with it. Restore
# whatever your normal SSH policy is once setup completes.
# --- On one cluster node ---
pvecm qdevice setup "$QNETD_HOST"
# Verify. Expected votes should have increased, and each node should show
# the QDevice as alive and granting a vote.
pvecm status
corosync-qdevice-tool -s
Testing it
A QDevice that has never been exercised is a configuration entry.
Service impact possibleprove the QDevice does what you think— Service impact possible on a two-node cluster. Do it in a maintenance window with console access to both nodes. Each step has a predicted outcome; a step that does not match it is the finding.
set -euo pipefail
# Baseline. Record expected votes, total votes and the Qdevice flags.
pvecm status
corosync-qdevice-tool -s
# Test 1: stop the QDevice host.
# Expected on a 2-node cluster: expected votes 3, total votes 2,
# quorum 2 - still quorate, because two node votes meet the threshold.
# Watch for the Qdevice column changing from A,V to NA.
pvecm status | grep -E 'Total votes|Quorate|Qdevice'
# Test 2: with the QDevice back, stop one cluster node.
# Expected: survivor has 1 node vote plus the QDevice vote = 2, quorum 2,
# so it stays quorate and can still start guests. This is the whole
# reason the QDevice is there, and it is the test that matters.
pvecm status | grep -E 'Total votes|Quorate'
# Test 3: confirm a write to /etc/pve actually succeeds on the survivor.
PROBE=/etc/pve/.qdevice-test
date -Is > "$PROBE" && cat "$PROBE" && rm -f "$PROBE"
Test 2 is the one that justifies the whole arrangement, and test 3 is what
makes test 2 real — Quorate: Yes and an actual successful write are two
different claims.
Production considerations
Two nodes: add a QDevice. It is what turns a two-node cluster from a
liability into a viable production arrangement.
Odd node counts: do not, unless you have worked through the failure
table above and accepted the trade.
Even counts above two: a single QDevice vote breaks the tie, which is
genuinely useful on four or six nodes.
Monitor the QDevice, because its loss is invisible until it matters.
Document its location and rebuild procedure somewhere that is not on
the cluster.
Common mistakes
Believing a two-node cluster survives a node failure. It does not,
without a QDevice.
Adding a fourth node for resilience. Four tolerates the same single
failure as three.
Putting the QDevice on the same switch, PDU or rack as the cluster.
Running the QDevice as a VM on a cluster node.
Adding a QDevice to an odd-numbered cluster without understanding that
it contributes N−1 votes.
Never testing failover by stopping a node.
Not monitoring QDevice health, so its loss is discovered during an
outage.
Running pvecm delnode with a QDevice still configured.
Key takeaways
Quorum is ⌊N/2⌋ + 1. Two nodes tolerate zero failures; adding an even node
to an odd cluster adds capacity, not resilience.
Expected votes is what the cluster believes it should have; total votes is
what is present. Both are in pvecm status, along with a per-node QDevice
state that is the only sign of a dead QDevice.
On an even node count a QDevice contributes one vote and is recommended. On
an odd count it contributes N−1 votes, is discouraged, and requires
--force.
The qnetd daemon grants its vote to exactly one partition, which is what
makes it a safe tie-break and pvecm expected 1 an unsafe one.
The QDevice must not share a failure domain with the cluster, and it must
be reachable from both sides of a plausible partition.
Knowledge check
Knowledge check · 5 questions
Q1. A team runs a two-node Proxmox cluster with no QDevice. One node fails. What happens on the survivor?
Q2. Which placements defeat the purpose of a QDevice? Select all that apply.
Q3. Adding a QDevice to a three-node cluster always increases its resilience, because it adds an extra vote.
Q4. On a two-node cluster with a QDevice, the QDevice host dies and is not replaced. What is the immediate and the medium-term effect?
Q5. Why is a QDevice a safe way to break a tie while pvecm expected 1 is not?
Passing score: 75%. Answers are checked in this browser.