High availability failover manager
First Claim
1. A method comprising:
- receiving a write request directed towards a logical unit (LUN), the write request having a data, a logical block address (LBA) and a length representing an address range of the LUN, the LBA and the length mapped to a volume associated with the LUN, the write request received at a first node of a plurality of nodes of a cluster, each node of the cluster having a memory and attached to a storage array storing the volume;
recording the write request in a first non-volatile log of the first node, the first non-volatile log stored on a storage device different from the storage array storing the volume;
monitoring a state of availability of the first node to service the volume;
in response to a lack of availability of the first node to service the volume, determining whether a second node is able to takeover service of the volume; and
in response to determining that the second node is able to takeover service of the volume, triggering a failover of the volume to the second node of the cluster, wherein the first non-volatile log is mirrored to a second non-volatile log accessible by the second node, and wherein the second non-volatile log is up to date with the first non-volatile log.
1 Assignment
0 Petitions
Accused Products
Abstract
A high availability (HA) failover manager maintains data availability of one or more input/output (I/O) resources in a cluster by ensuring that each I/O resource is available (e.g., mounted) on a hosting node of the cluster and that each I/O resource may be available on one or more partner nodes of the cluster if a node (i.e., a local node) were to fail. The HA failover manager (HA manager) processes inputs from various sources of the cluster to determine whether failover is enabled for a local node and each partner node in an HA group, and for triggering failover of the I/O resources to the partner node as necessary. For each I/O resource, the HA manager may track state information including (i) a state of the I/O resource (e.g., mounted or un-mounted); (ii) the partner node(s) ability to service the I/O resource; and (iii) whether a non-volatile log recording I/O requests is synchronized to the partner node(s). The HA manager interacts with various layers of a storage I/O stack to mount and un-mount the I/O resources on one or more nodes of the cluster through the use of well-defined interfaces, e.g., application programming interfaces.
-
Citations
20 Claims
-
1. A method comprising:
-
receiving a write request directed towards a logical unit (LUN), the write request having a data, a logical block address (LBA) and a length representing an address range of the LUN, the LBA and the length mapped to a volume associated with the LUN, the write request received at a first node of a plurality of nodes of a cluster, each node of the cluster having a memory and attached to a storage array storing the volume; recording the write request in a first non-volatile log of the first node, the first non-volatile log stored on a storage device different from the storage array storing the volume; monitoring a state of availability of the first node to service the volume; in response to a lack of availability of the first node to service the volume, determining whether a second node is able to takeover service of the volume; and in response to determining that the second node is able to takeover service of the volume, triggering a failover of the volume to the second node of the cluster, wherein the first non-volatile log is mirrored to a second non-volatile log accessible by the second node, and wherein the second non-volatile log is up to date with the first non-volatile log. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method comprising:
-
receiving a write request directed towards a logical unit (LUN), the write request having a data, a logical block address (LBA) and a length representing an address range of the LUN, the LBA and the length mapped to a volume associated with the LUN, the write request received at a first node of a plurality of nodes of the cluster, each node of the cluster having a memory and attached to a storage array storing the volume; recording the write request in a first portion of a non-volatile random access memory (NVRAM) of the first node; recording a state of availability of the first node to service the volume in a cluster database; in response to a lack of availability of the first node to service the volume, winning a race at the second node against the first node to update the cluster database to mark the first node as being unavailable to service the volume; and triggering a failover of the volume to the second node of the cluster, wherein the write request is mirrored to a second portion of the NVRAM accessible by the second node, and wherein the second portion of the NVRAM is up to date with the first portion of the NVRAM.
-
-
11. A system comprising:
-
a cluster having first and second nodes each having a memory connected to a processor via a bus; a storage array coupled to each node of the cluster; a storage I/O stack executing on the processor of each node of the cluster, the storage I/O stack configured to; receive a write request directed towards a logical unit (LUN), the write request having a data, a logical block address (LBA) and a length representing an address range of the LUN, the LBA and the length mapped to a volume associated with the LUN, the write request received at the first node of the cluster, the volume stored on the storage array; record the write request in a first non-volatile log of the first node, the first non-volatile log stored on a storage device different from the storage array; monitor a state of availability of the first node to service the volume; in response to a lack of availability of the first node to service the volume, determine whether the second node is able to takeover service of the volume; and in response to determining that the second node is able to takeover service of the volume, trigger a failover of the volume to the second node of the cluster, wherein the first non-volatile log is mirrored to a second non-volatile log accessible by the second node, and wherein the second non-volatile log is up to date with the first non-volatile log. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
-
Specification