Fibre Channel Storage Array Methods for Handling Cache-Consistency Among Controllers of an Array and Consistency Among Arrays of a Pool
Abstract
Storage arrays, systems and methods for operating storage arrays for maintaining consistency in configuration data between processes running on an active controller and a standby controller of the storage array are provided. One example method includes executing a primary process in user space of the active controller. The primary process is configured to process request commands from one or more initiators, and the primary process has access to a volume manager for serving data input/output (I/O) requests and non-I/O requests. The primary process has primary access to the configuration data and includes a first logical unit (LU) cache for storing the configuration data. The method also includes executing a secondary process in user space of the standby controller. The secondary process is configured to process request commands from one or more of the initiators, wherein the secondary process does not have access to the volume manger. The secondary process has a second LU cache for storing the configuration data, and the second LU cache is used by the secondary process for responding to non-I/O requests. The method includes receiving, at the primary process, an update to the configuration data and sending, by the primary process, the update to the configuration data to the secondary process for updating the second LU cache. When the primary process receives an acknowledgement from the secondary process that the update to the configuration data was received, then the updates to the configuration data are committed to the first LU cache of the active controller.
Claims
exact text as granted — not AI-modified1 . A method for maintaining consistency in configuration data between processes running on an active controller and a standby controller of a storage array, comprising,
executing a primary process in user space of the active controller, the primary process configured to process request commands from one or more initiators, the primary process having access to a volume manager for serving data input/output (I/O) requests and non-I/O requests, the primary process having primary access to the configuration data and having a first logical unit (LU) cache for storing the configuration data; executing a secondary process in user space of the standby controller, the secondary process configured to process request commands from one or more of the initiators, the secondary process not having access to the volume manger, the secondary process having a second LU cache for storing the configuration data, the second LU cache being used by the secondary process for responding to non-I/O requests; receiving, at the primary process, an update to the configuration data; sending, by the primary process, the update to the configuration data to the secondary process for updating the second LU cache, and if the primary process receives an acknowledgement from the secondary process that the update to the configuration data was received, then committing the updates to the configuration data to the first LU cache of the active controller.
2 . The method of claim 1 , wherein if the primary process does not receive the acknowledgement from the secondary process, then waiting a period of time before committing the update to the first LU cache,
wherein the primary process commits the update to the first LU cache after waiting the period of time, as the secondary process will have restarted after the period of time has been reached.
3 . The method of claim 2 , wherein the period of time is determined when a heart-beat exchange between the secondary process and the primary process is missing.
4 . The method of claim 1 , wherein the primary process includes a first SCSI layer for processing calls to the volume manager for serving the data input/output (I/O) requests and non-I/O requests.
5 . The method of claim 1 , wherein the secondary process includes a second SCSI layer for processing calls to a volume manager, wherein code of the second SCSI layer is configured to return an error or an unavailable response to said SCSI layer calls since the volume manager having access for serving the data input/output (I/O) requests is not made available via the secondary process.
6 . The method of claim 1 , further comprising,
providing the primary process with communication access to a configuration database, the configuration database is configured to persistently store configuration updates made to logical unit number (LUN) masking and mapping, and configuration updates made to port name generation and port configuration.
7 . The method of claim 1 , wherein a SCSI layer of the active controller is provided with an access interface to the first LU cache, and the first LU cache operates as a library linked between the primary process, the secondary process and a configuration management unit that is interfaced with a configuration database.
8 . The method of claim 1 , wherein the secondary process uses a proxy service of the primary process to communicate with a configuration database regarding changes to the second LU cache.
9 . The method of claim 1 , wherein the primary process is configured to push said updates to the configuration data to the secondary process for commitment, such that updates to be made to the first LU cache are made to the second LU cache.
10 . The method of claim 1 , further comprising,
resending the update to the configuration data to the primary process until committed, wherein the primary process commits after receipt of the acknowledgement from the secondary process to avoid having the second LU cache having an update that is not yet committed to the first LU cache.
11 . The method of claim 1 , further comprising,
receiving port state data a management configuration unit from a process that monitors port information, the management configuring unit is then configured to instruct the primary process of the update to the configuration data that includes said port state data.
12 . The method of claim 1 , wherein the secondary process is further executed in the user space of the active controller, such that each of the active controller and the standby controller executes a respective one of the secondary process, the secondary process of the active controller has access to the first LU cache, whereas the secondary process of the standby controller has access to the second LU cache.
13 . The method of claim 1 , further comprising,
providing at least two of said storage array; designating one of said storage array as a group leader (GL) to form a pool of storage arrays; executing a configuration management unit on the GL; and receiving changes at each primary process of each storage array from the configuration management unit of the GL, such that each primary process of each storage array pushes updates to respective secondary processes so that first and second LU cache in each of the active controller and standby controller of respective array is maintained consistent for the pool of storage arrays.
14 . The method of claim 1 , wherein the first and second LU cache is configured to store said configuration data related to one or more of LUN mapping data, or port state data, or inquiry data, or combinations of two or more thereof.
15 . A storage array, comprising,
(a) an active controller configured to execute a primary process and a first secondary process,
(i) the primary process includes a volume manager and a first SCSI layer;
(ii) the first secondary process includes a second SCSI layer; and
(iii) a first logical unit (LU) cache, the first LU cache configured to store configuration data related to logical unit number (LUN) mapping and port data;
(b) a standby controller configured to execute a second secondary process,
(i) the second secondary process includes a third SCSI layer;
(ii) a second logical unit (LU) cache, the second LU cache is also configured to store the configuration data related to logical unit number (LUN) mapping and port data; and
(c) a configuration management unit that is configured to communicate changes to the configuration data to the primary process, the primary process is configured to push said changes to the configuration data to said second secondary process to enable commitment to said second LU cache, wherein the primary process of the active controller is configured to wait to commit the changes to the configuration data to the first LU cache until confirmation is received by the primary process that the second secondary process has committed the changes to the configuration data to the second LU cache;
wherein the storage array is configured to service requests from one or more initiators.
16 . The storage array of claim 15 , wherein said first SCSI layer and said second SCSI layer each have access to the first LU cache, and said third SCSI layer has access to the second LU cache.
17 . The storage array of claim 15 , wherein the configuration management unit is interfaced with a configuration database.
18 . The storage array of claim 15 , wherein if the primary process does not receive a confirmation from the secondary process, then waiting a period of time before committing the update to the first LU cache, such that the primary process commits the update to the first LU cache after waiting the period of time, as the secondary process is programmed to have restarted after the period of time has been reached.
19 . The storage array of claim 15 , further comprising a controller management daemon to monitor port state of the storage array, wherein changes to port state are received by the configuration management unit, said changes to are defined as changes to the configuration data that are stored to a configuration database and pushed to the primary process of the active controller for propagation to the first LU cache and the second LU cache.
20 . The storage array of claim 15 , wherein the volume manager is provided with access to storage of the storage array and only the primary process is used for serving data input/output (I/O) requests.
21 . The storage array of claim 15 , wherein two or more of said storage arrays are programmable to operate as a pool of arrays, wherein one of said pool of arrays is a group leader (GL) and each of said storage arrays has a respective first LU cache and second LU cache.
22 . A storage array, comprising,
an active controller configured to execute a primary process that includes a volume manager and a first SCSI layer, the active controller further includes a first logical unit (LU) cache for storing configuration data related to logical unit number (LUN) mapping and port data of the storage array; a standby controller configured to execute a secondary process ( 280 b ), the secondary process includes a second SCSI layer, the standby controller further includes a second logical unit (LU) cache that is also configured to store the configuration data related to logical unit number (LUN) mapping and port data of the storage array; and a configuration management unit that is configured to communicate changes to the configuration data to the primary process, the primary process is configured to push said changes to the configuration data to said secondary process to enable commitment to said second LU cache, wherein the primary process of the active controller is configured to wait to commit the changes to the configuration data to the first LU cache until confirmation is received by the primary process that the secondary process has committed the changes to the configuration data to the second LU cache; wherein the storage array is configured to service requests from one or more initiators.
23 . The storage array of claim 22 , wherein the active controller includes a second secondary process having a third SCSI layer,
wherein the first and third SCSI layer is provided access to the first LU cache of the active controller and the second SCSI layer is provided with access to the second LU cache of the standby controller; wherein the first SCSI layer of the active controller is used to make updates to the first LU cache and pushes said updates to the second SCSI layer of the standby controller for making said updates to the second LU cache.
24 . The storage array of claim 22 , further comprising a controller management daemon to monitor port state of the storage array, wherein changes to the port state are received by the configuration management unit, said changes to are defined as changes to the configuration data that are stored to a configuration database and pushed to the primary process of the active controller for propagation to the first LU cache and the second LU cache.
25 . The storage array of claim 22 , wherein the volume manager is provided with access to storage of the storage array and only the primary process is used for serving data input/output (I/O) requests to initiators that use the storage array as a target.
26 . The storage array of claim 22 , wherein two or more of said storage arrays are programmable to operate as a pool of arrays, wherein one of said pool of arrays is a group leader (GL) and each of said storage arrays has a respective first LU cache and second LU cache.
27 . Computer readable media, being non-transitory, for maintaining consistency in configuration data between processes running on an active controller and a standby controller of a storage array, comprising,
program instructions for executing a primary process in user space of the active controller, the primary process configured to process request commands from one or more initiators, the primary process having access to a volume manager for serving data input/output (I/O) requests and non-I/O requests, the primary process having primary access to the configuration data and having a first logical unit (LU) cache for storing the configuration data; program instructions for executing a secondary process in user space of the standby controller, the secondary process configured to process request commands from one or more of the initiators, the secondary process not having access to the volume manger, the secondary process having a second LU cache for storing the configuration data, the second LU cache being used by the secondary process for responding to non-I/O requests; program instructions for receiving, at the primary process, an update to the configuration data; program instructions for sending, by the primary process, the update to the configuration data to the secondary process for updating the second LU cache, and if the primary process receives an acknowledgement from the secondary process that the update to the configuration data was received, then committing the updates to the configuration data to the first LU cache of the active controller.
28 . The computer readable media of claim 27 , further comprising,
program instructions for determining if the primary process does not receive the acknowledgement from the secondary process, and then waiting a period of time before committing the update to the first LU cache; wherein the primary process commits the update to the first LU cache after waiting the period of time, as the secondary process will have restarted after the period of time has been reached.
29 . The computer readable media of claim 28 , wherein the period of time is determined when a heart-beat exchange between the secondary process and the primary process is missing.
30 . The computer readable media of claim 27 ,
wherein the primary process includes a first SCSI layer for processing calls to the volume manager for serving the data input/output (I/O) requests and non-I/O requests; wherein the secondary process includes a second SCSI layer for processing calls to a volume manager, wherein code of the second SCSI layer is configured to return an error or an unavailable response since the volume manager having access for serving the data input/output (I/O) requests is not made available via the secondary process.
31 . The computer readable media of claim 27 , further comprising,
program instructions for providing the primary process with communication access to a configuration database, the configuration database is configured to persistently store configuration updates made to logical unit number (LUN) masking and mapping, and configuration updates made to port name generation and port configuration.
32 . The computer readable media of claim 27 , for at least two of said storage array, the computer readable media includes,
program instructions for designating one of said storage array as a group leader (GL) to form a pool of storage arrays; program instructions for executing a configuration management unit on the GL; and program instructions for receiving changes at each primary process of each storage array from the configuration management unit of the GL, such that each primary process of each storage array pushes updates to respective secondary processes so that first and second LU cache in each of the active controller and standby controller of respective array is maintained consistent for the pool of storage arrays.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.