<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.osnexus.com/index.php?action=history&amp;feed=atom&amp;title=Guides%3AHA_Failover_Sequence_Overview_for_QuantaStor_Storage_Pools</id>
	<title>Guides:HA Failover Sequence Overview for QuantaStor Storage Pools - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.osnexus.com/index.php?action=history&amp;feed=atom&amp;title=Guides%3AHA_Failover_Sequence_Overview_for_QuantaStor_Storage_Pools"/>
	<link rel="alternate" type="text/html" href="https://wiki.osnexus.com/index.php?title=Guides:HA_Failover_Sequence_Overview_for_QuantaStor_Storage_Pools&amp;action=history"/>
	<updated>2026-10-28T18:34:33Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.osnexus.com/index.php?title=Guides:HA_Failover_Sequence_Overview_for_QuantaStor_Storage_Pools&amp;diff=28298&amp;oldid=prev</id>
		<title>Qadmin: /* Is there a single point of failure in a QuantaStor HA pair? */</title>
		<link rel="alternate" type="text/html" href="https://wiki.osnexus.com/index.php?title=Guides:HA_Failover_Sequence_Overview_for_QuantaStor_Storage_Pools&amp;diff=28298&amp;oldid=prev"/>
		<updated>2026-10-27T20:25:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Is there a single point of failure in a QuantaStor HA pair?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:25, 27 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l105&quot;&gt;Line 105:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 105:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Is there a single point of failure in a QuantaStor HA pair? ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Is there a single point of failure in a QuantaStor HA pair? ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Not &lt;/del&gt;when it is built &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;as &lt;/del&gt;described here. Head nodes are paired in an HA group, disks are dual-pathed, heartbeat runs over two independent rings, client networks are bonded across switches, and the pool can be laid out to survive an enclosure loss. I/O fencing keeps two nodes from importing the same pool.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;No, not &lt;/ins&gt;when &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;properly configured as &lt;/ins&gt;it is built &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and &lt;/ins&gt;described here. Head nodes are paired in an HA group, disks are dual-pathed, heartbeat runs over two independent rings, client networks are bonded across switches, and the pool can be laid out to survive an enclosure loss. I/O fencing &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;along with additional guards &lt;/ins&gt;keeps two nodes from importing the same pool.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== How long does a failover take? ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== How long does a failover take? ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wikidb:diff:1.41:old-28297:rev-28298:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Qadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.osnexus.com/index.php?title=Guides:HA_Failover_Sequence_Overview_for_QuantaStor_Storage_Pools&amp;diff=28297&amp;oldid=prev</id>
		<title>Qadmin: /* The failover sequence */</title>
		<link rel="alternate" type="text/html" href="https://wiki.osnexus.com/index.php?title=Guides:HA_Failover_Sequence_Overview_for_QuantaStor_Storage_Pools&amp;diff=28297&amp;oldid=prev"/>
		<updated>2026-10-27T20:23:41Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;The failover sequence&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:23, 27 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l49&quot;&gt;Line 49:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 49:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &amp;#039;&amp;#039;&amp;#039;Trigger.&amp;#039;&amp;#039;&amp;#039; The partner node loses heartbeat with the active node, a port link-state or client connectivity policy fires on the active node, or an administrator requests a move.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &amp;#039;&amp;#039;&amp;#039;Trigger.&amp;#039;&amp;#039;&amp;#039; The partner node loses heartbeat with the active node, a port link-state or client connectivity policy fires on the active node, or an administrator requests a move.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &amp;#039;&amp;#039;&amp;#039;Health checks.&amp;#039;&amp;#039;&amp;#039; For a planned move the dialog can review failover health status on both sides: whether the source can export the pool cleanly and whether the target can receive it.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &amp;#039;&amp;#039;&amp;#039;Health checks.&amp;#039;&amp;#039;&amp;#039; For a planned move the dialog can review failover health status on both sides: whether the source can export the pool cleanly and whether the target can receive it.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &#039;&#039;&#039;Move the VIFs.&#039;&#039;&#039; The pool&#039;s HA VIFs come up on the matching ports on the new owner, so iSCSI, FC, NFS and SMB clients reconnect to the same addresses.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &amp;#039;&amp;#039;&amp;#039;Export from the current owner.&amp;#039;&amp;#039;&amp;#039; If the current owner is still running, it stops serving the pool, takes down the pool&amp;#039;s VIFs and exports the pool. The export timeout limits how long this step may take.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &amp;#039;&amp;#039;&amp;#039;Export from the current owner.&amp;#039;&amp;#039;&amp;#039; If the current owner is still running, it stops serving the pool, takes down the pool&amp;#039;s VIFs and exports the pool. The export timeout limits how long this step may take.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &amp;#039;&amp;#039;&amp;#039;Take ownership of the devices.&amp;#039;&amp;#039;&amp;#039; The receiving node checks the I/O fencing state of the pool&amp;#039;s devices and places its own SCSI reservations on them. If the export did not finish within the timeout, or the old owner is down, the receiving node takes these locks preemptively. A node that was preempted while still running needs a reboot to clear its state.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &amp;#039;&amp;#039;&amp;#039;Take ownership of the devices.&amp;#039;&amp;#039;&amp;#039; The receiving node checks the I/O fencing state of the pool&amp;#039;s devices and places its own SCSI reservations on them. If the export did not finish within the timeout, or the old owner is down, the receiving node takes these locks preemptively. A node that was preempted while still running needs a reboot to clear its state.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &amp;#039;&amp;#039;&amp;#039;Import and bring services online.&amp;#039;&amp;#039;&amp;#039; The receiving node imports the pool and brings its storage volumes and network shares back online.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &amp;#039;&amp;#039;&amp;#039;Import and bring services online.&amp;#039;&amp;#039;&amp;#039; The receiving node imports the pool and brings its storage volumes and network shares back online.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &#039;&#039;&#039;Move the VIFs.&#039;&#039;&#039; The pool&#039;s HA VIFs come up on the matching ports on the new owner, so iSCSI, FC, NFS and SMB clients reconnect to the same addresses.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &#039;&#039;&#039;Settle.&#039;&#039;&#039; The settle time keeps the group from bouncing the pool again before the new owner has &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;stabilized&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &#039;&#039;&#039;Settle.&#039;&#039;&#039; The settle time keeps the group from bouncing the pool again before the new owner has &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;stabilised&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Fencing is what makes the sequence safe. Because the pool&amp;#039;s devices carry the owner&amp;#039;s reservations, a node that has lost contact with the cluster cannot keep writing to a pool that its partner has already taken over.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Fencing is what makes the sequence safe. Because the pool&amp;#039;s devices carry the owner&amp;#039;s reservations, a node that has lost contact with the cluster cannot keep writing to a pool that its partner has already taken over.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wikidb:diff:1.41:old-28295:rev-28297:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Qadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.osnexus.com/index.php?title=Guides:HA_Failover_Sequence_Overview_for_QuantaStor_Storage_Pools&amp;diff=28295&amp;oldid=prev</id>
		<title>Qadmin: osn-seo-utilities: ha-failover-sequence-overview @ cdc16019f12c (approved in the portal)</title>
		<link rel="alternate" type="text/html" href="https://wiki.osnexus.com/index.php?title=Guides:HA_Failover_Sequence_Overview_for_QuantaStor_Storage_Pools&amp;diff=28295&amp;oldid=prev"/>
		<updated>2026-10-27T20:15:04Z</updated>

		<summary type="html">&lt;p&gt;osn-seo-utilities: ha-failover-sequence-overview @ cdc16019f12c (approved in the portal)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;By Steve Umbehocker, CTO, OSNexus &amp;amp;middot; Updated October 27, 2026&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A QuantaStor high-availability (HA) storage pools are OpenZFS based and required shared storage.  Share back-end storage for HA pools can be delivered to the cluster in many ways including via SAS JBODs, SAS JBOFs, NVMe-oF JBOFs, FC/iSCSI SANs and via internal dual-port NVMe within specialized Storage Bridge Bay (SBB) dual-node servers which contain a two server nodes and a share NVMe backplane. The failover sequence is the ordered set of steps QuantaStor runs to move that pool, its volumes, its shares and its client IP addresses from one head node to another, whether the move is planned or forced by a failure and this page summarizes that sequence and how the architecture covers controller failure, path failure, network failure and enclosure failure, so you can check that no single component takes the storage offline.&lt;br /&gt;
&lt;br /&gt;
== Why it matters ==&lt;br /&gt;
&lt;br /&gt;
Every IT department needs to have a solid understanding of what happens when something breaks. For our scale-up HA cluster design we cover each layer separately:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Head node (controller) failure:&amp;#039;&amp;#039;&amp;#039; another node must take over the pool automatically.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Path failure:&amp;#039;&amp;#039;&amp;#039; a failed cable, HBA or enclosure I/O module must not take disks away from the active node.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Network failure:&amp;#039;&amp;#039;&amp;#039; clients must reach the pool on the same IP address after a takeover, and a node that has lost its client networks should hand the pool off.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Enclosure (shelf) failure:&amp;#039;&amp;#039;&amp;#039; the pool layout must tolerate the loss of a whole shelf where the design calls for it.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Split-brain:&amp;#039;&amp;#039;&amp;#039; two nodes must never import the same pool at the same time.&lt;br /&gt;
&lt;br /&gt;
QuantaStor answers each one with a specific mechanism, summarised in the table below and described in the rest of this guide.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Failure !! What protects the data path !! Result&lt;br /&gt;
|-&lt;br /&gt;
| Head node crash or power loss || Site cluster heartbeat plus an active HA group || Secondary node imports the pool and takes over its virtual IPs&lt;br /&gt;
|-&lt;br /&gt;
| Loss of client-facing network ports || Ethernet and FC port link-state policies || Preemptive failover to the partner node&lt;br /&gt;
|-&lt;br /&gt;
| Clients unreachable from the active node || Optional client connectivity checks || Preemptive failover when all, or a majority, of the listed hosts stop responding&lt;br /&gt;
|-&lt;br /&gt;
| Single SAS cable, HBA or I/O module || Dual-path cabling with multipath IO || I/O continues on the surviving path; no failover needed&lt;br /&gt;
|-&lt;br /&gt;
| Heartbeat network failure || Two independent cluster rings on separate networks || Cluster communication continues on the other ring&lt;br /&gt;
|-&lt;br /&gt;
| Whole enclosure || Enclosure-redundant pool layout || Pool stays online in a degraded state&lt;br /&gt;
|-&lt;br /&gt;
| Both nodes trying to own the pool || I/O fencing with SCSI reservations on the pool devices || Only one node can hold and import the pool&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How it works ==&lt;br /&gt;
&lt;br /&gt;
Three building blocks take part in every failover.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The site cluster.&amp;#039;&amp;#039;&amp;#039; The nodes that can own a pool are members of a site cluster, which carries heartbeat and cluster-management traffic over one or more cluster rings. The recommended design uses two independent rings on separate networks, so losing one switch or one subnet doesn&amp;#039;t look like a node failure. See [[Site Cluster Setup]] for creating the cluster and adding rings. An HA group that has no associated site cluster can still be moved by hand, but it cannot fail over automatically when a system fails.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The HA failover group.&amp;#039;&amp;#039;&amp;#039; A [[Create Storage Pool High-Availability Group|Storage Pool High-Availability Group]] ties one pool to a primary node and a secondary node, with an optional tertiary node. It holds the failover policies: the Ethernet and FC port link-state policies, the optional client connectivity checks, the export timeout and a settle time that acts as a cooldown before another failover can be triggered. Automatic failover runs only while the group is activated; see [[Set Failover Group Activation Mode]].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HA virtual interfaces.&amp;#039;&amp;#039;&amp;#039; Clients never connect to a node&amp;#039;s own address. They connect to [[Storage Pool HA Failover Interface Create|HA virtual interfaces]] (HA VIFs) that belong to the pool. Each VIF is bound to a parent port by name, for example &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;eth2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, and on failover it comes up on the port with the same name on the node that now owns the pool. You can also restrict SMB and NFS access to the networks the pool&amp;#039;s VIFs are on.&lt;br /&gt;
&lt;br /&gt;
=== The failover sequence ===&lt;br /&gt;
&lt;br /&gt;
Whether it starts from a failure or from an administrator, a failover runs in this order:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Trigger.&amp;#039;&amp;#039;&amp;#039; The partner node loses heartbeat with the active node, a port link-state or client connectivity policy fires on the active node, or an administrator requests a move.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Health checks.&amp;#039;&amp;#039;&amp;#039; For a planned move the dialog can review failover health status on both sides: whether the source can export the pool cleanly and whether the target can receive it.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Export from the current owner.&amp;#039;&amp;#039;&amp;#039; If the current owner is still running, it stops serving the pool, takes down the pool&amp;#039;s VIFs and exports the pool. The export timeout limits how long this step may take.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Take ownership of the devices.&amp;#039;&amp;#039;&amp;#039; The receiving node checks the I/O fencing state of the pool&amp;#039;s devices and places its own SCSI reservations on them. If the export did not finish within the timeout, or the old owner is down, the receiving node takes these locks preemptively. A node that was preempted while still running needs a reboot to clear its state.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Import and bring services online.&amp;#039;&amp;#039;&amp;#039; The receiving node imports the pool and brings its storage volumes and network shares back online.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Move the VIFs.&amp;#039;&amp;#039;&amp;#039; The pool&amp;#039;s HA VIFs come up on the matching ports on the new owner, so iSCSI, FC, NFS and SMB clients reconnect to the same addresses.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Settle.&amp;#039;&amp;#039;&amp;#039; The settle time keeps the group from bouncing the pool again before the new owner has stabilised.&lt;br /&gt;
&lt;br /&gt;
Fencing is what makes the sequence safe. Because the pool&amp;#039;s devices carry the owner&amp;#039;s reservations, a node that has lost contact with the cluster cannot keep writing to a pool that its partner has already taken over.&lt;br /&gt;
&lt;br /&gt;
A failover can take 30 seconds or more on larger configurations. Size client-side timeouts to ride through that window. iSCSI and FC initiators should use multipathing, and Windows hosts should follow [[Windows MPIO for Failover Clusters and Hyper-V]].&lt;br /&gt;
&lt;br /&gt;
== Design and sizing ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Controllers and back-end paths.&amp;#039;&amp;#039;&amp;#039; For a shared-JBOD design, cable every enclosure to both head nodes and give each node two paths to every disk, through two HBAs or two enclosure I/O modules. [[Multipath IO Configuration]] covers the host side. With dual paths, losing one cable, HBA port or I/O module is handled by multipathing on the active node, and the pool stays where it is. The full build is in [[HA Cluster Setup (JBODs)]]. If the back end is FC or iSCSI LUNs from an external array, the same model applies; see [[HA Cluster Setup (external SAN)]]. Enabling HA on a pool exported over FC switches its FC targets to ALUA mode, which drops active FC sessions once, so do it in a maintenance window.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Enclosure (shelf) failure.&amp;#039;&amp;#039;&amp;#039; Dual paths protect against a failed component inside a shelf. Surviving the loss of the entire shelf depends on the pool layout. Each RAID group (vdev) must have its disks spread across enclosures so that losing one enclosure takes out no more disks per group than its parity or mirroring can absorb. The storage pool grid reports this as &amp;#039;&amp;#039;&amp;#039;Enclosure Redundancy&amp;#039;&amp;#039;&amp;#039;, with values such as Verified, Partial or Not Redundant, so you can confirm the layout before you go live. [[Hardware Controllers &amp;amp; Enclosures]] shows enclosure and controller health.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Networks.&amp;#039;&amp;#039;&amp;#039; Bond the client-facing and heartbeat ports across two switches; see [[Changing Network Bonding Mode]]. Put the two cluster rings on separate networks, for example 192.0.2.0/24 for ring 0 and 198.51.100.0/24 for ring 1, and place client VIFs on their own network, such as 203.0.113.0/24.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Clustered client reservations.&amp;#039;&amp;#039;&amp;#039; Windows Server failover clusters and Hyper-V use SCSI-3 persistent reservations from the client side. With [[Clustered SCSI-3 Persistent Reservations]] enabled on the HA group, those client reservations are shared across the HA cluster and survive a pool failover. If you disable the feature, any reservation a client holds is lost at the next failover.&lt;br /&gt;
&lt;br /&gt;
== Setting it up ==&lt;br /&gt;
&lt;br /&gt;
The reference pages above walk through each dialog. The overall order is: create the site cluster with two rings, create the pool on the shared devices, create the HA group, add HA VIFs, set the failover policies, then activate the group. From the CLI the same sequence looks like this (node names, pool name and addresses are examples):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;qs site-cluster-create --name=site1 --system-ip-list=192.0.2.11,192.0.2.12&lt;br /&gt;
qs ha-group-create --pool=pool1 --name=ha-group1 --sys-primary=qs-node-a --sys-secondary=qs-node-b --port-linkstate-policy=all-linkdown --fc-port-linkstate-policy=all-linkdown&lt;br /&gt;
qs ha-interface-create --ha-group=ha-group1 --parent-port=eth2 --ip-address=203.0.113.50&lt;br /&gt;
qs ha-group-activate --ha-group=ha-group1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Connectivity tab of the HA group dialog is where you decide what counts as a failure on the network side. Link-state policies can fail over when all, any or a majority of the pool&amp;#039;s ports go link-down, or ignore link state. Client connectivity checks ping a list of client IP addresses and trigger a preemptive failover when all or a majority of them stop responding.&lt;br /&gt;
&lt;br /&gt;
[[File:Guide-ha-failover-sequence-overview-ha-failover-connectivity-policies.png|frame|center|The Connectivity tab of the HA group dialog: the Ethernet and FC Port Link State policies, the SMB and NFS HA VIF access options, and the client connectivity check list that can trigger a preemptive failover]]&lt;br /&gt;
&lt;br /&gt;
== Operating and testing ==&lt;br /&gt;
&lt;br /&gt;
Test failover before production and after any hardware change. A planned failover uses the same sequence as an automatic one, so it is the most realistic test available. Run it from the web UI ([[Storage Pool Ha Failover Group Failover]]) or from the CLI:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;qs ha-group-check-health-status --pool-list=pool1&lt;br /&gt;
qs ha-group-failover --ha-group=ha-group1 --storage-system=qs-node-b --import-health-checks=true --export-health-checks=true&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Guide-ha-failover-sequence-overview-ha-failover-manual-failover.png|frame|center|The Execute High-Availability Pool Failover dialog: check the HA Group Status, the From System and To System fields, and the warning that larger configurations can take 30 seconds or more]]&lt;br /&gt;
&lt;br /&gt;
A test plan for an acceptance or RFP response usually covers:&lt;br /&gt;
&lt;br /&gt;
* A planned failover and failback while clients run I/O.&lt;br /&gt;
* Powering off the active node to confirm unattended takeover.&lt;br /&gt;
* Pulling one SAS cable or I/O module to confirm multipathing keeps the pool in place.&lt;br /&gt;
* Unplugging one heartbeat network to confirm the second ring keeps the cluster intact.&lt;br /&gt;
* Pulling the client-facing links on the active node to confirm the link-state policy fails the pool over.&lt;br /&gt;
&lt;br /&gt;
The manual failover dialog has a force option that completes the move even if the pool doesn&amp;#039;t export cleanly. Use it only when the source node is known to be unhealthy, because that node will need a reboot afterwards. Configure [[Call-home / Alerting]] so failover events reach your team, and keep [[Scale-up HA Storage Pool Troubleshooting]] at hand for recovery steps.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
=== Is there a single point of failure in a QuantaStor HA pair? ===&lt;br /&gt;
&lt;br /&gt;
Not when it is built as described here. Head nodes are paired in an HA group, disks are dual-pathed, heartbeat runs over two independent rings, client networks are bonded across switches, and the pool can be laid out to survive an enclosure loss. I/O fencing keeps two nodes from importing the same pool.&lt;br /&gt;
&lt;br /&gt;
=== How long does a failover take? ===&lt;br /&gt;
&lt;br /&gt;
It depends on the size of the configuration. The product warns that larger configurations can take 30 seconds or more, so set client-side timeouts and multipath settings to ride through that window. Measure it on your own hardware with a planned failover before going live.&lt;br /&gt;
&lt;br /&gt;
=== What happens if the failed node comes back? ===&lt;br /&gt;
&lt;br /&gt;
It does not reclaim the pool on its own. The surviving node holds the reservations on the pool devices, and the settle time stops the group from moving the pool again straight away. You fail the pool back with a planned failover once the node is healthy.&lt;br /&gt;
&lt;br /&gt;
=== Can a network problem trigger failover even if the node is still running? ===&lt;br /&gt;
&lt;br /&gt;
Yes. The Ethernet and FC port link-state policies and the optional client connectivity checks can move the pool to the partner node preemptively when the active node can no longer serve clients, even though it is still running.&lt;br /&gt;
&lt;br /&gt;
=== Do Windows and Hyper-V clusters keep their reservations through a failover? ===&lt;br /&gt;
&lt;br /&gt;
Yes, when clustered SCSI-3 persistent reservation support is enabled on the HA group. The reservations are shared across the HA cluster, so the new owner presents the same reservation state to the clients.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;#039;&amp;#039;Part of the [[Guides:Index|QuantaStor Guides]] series. For reference documentation, see the [[Main Page|QuantaStor documentation]].&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;br /&gt;
&amp;lt;!-- osn-seo-utilities: ../review/articles/wiki-ha-failover-sequence-overview.md @ cdc16019f12c --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Qadmin</name></author>
	</entry>
</feed>