A non-disruptive method for updating firmware in a first controller 210 of a redundant controller 200 in a storage subsystem 120 is disclosed. This updating occurs while the storage subsystem 120 presents data to a host system 130 in response to a host request 132. During the non-disruptive updating, the updating first controller 210 redirects the host request 132 for data, e.g., drive-A volume 252 normally owned by the first controller 210, to second controller 220 of the redundant controller 200. After the second controller 220 obtains data 134 identified in the host request 132, the operating second controller 220 transfers the data 134 to the updating first controller 210 via an inter-controller channel 202. Once the updating first controller 210 receives the data 134, the first controller 210 presents the data 134 to the host system 130. The host system 130 does not detect that the first controller 210 is updating because the updating process is invisible to the host system 130. The above process is also applied when the updating is simply a reboot command for the first controller 210.
|
11. A storage subsystem, said subsystem comprising:
a first controller;
a second controller; and
an inter-controller channel configured to communicate between said first and second controllers,
wherein said first controller is configured to:
receive a host request from a host system wherein said host request corresponds to data owned by said first controller;
route said host request from said first controller to said second controller via said inter-controller channel;
receive said data from said second controller at said first controller via said inter-controller channel;
present said data from said first controller to said host system; and
update firmware of said first controller according to a received firmware update while performing at least one of routing said host request from said first controller to said second controller, receiving said data from said second controller, and presenting said data to said host system.
7. A non-disruptive method for updating a storage subsystem having a redundant controller so that said updating is transparent to a host system that sends a host request for data located in a storage subsystem controlled by said redundant controller, said method comprising:
providing a first controller and a second controller in said redundant controller;
opening an inter-controller channel connected between said first controller and said second controller for communicating said data between said first controller and said second controller;
receiving a firmware file in said first controller from a management system, said firmware file comprising at least a reboot command;
routing said host request for data owned by said first controller to said second controller via said inter-controller channel after receiving said firmware file;
processing said host request with said second controller for said data owned by said first controller, which causes said data to be presented to said second controller, after said routing said host request for data owned by said first controller;
transferring said data from second controller to said first controller via said inter-controller channel;
presenting said data from said first controller to said host system; and
rebooting said first controller according to said firmware file reboot command during at least one of said routing, said processing, said transferring, and said presenting processes.
1. A non-disruptive method for updating firmware in a storage subsystem so that said updating is transparent to a host system that sends a host request for data located in said storage subsystem, said method comprising:
providing a redundant controller in said storage subsystem, said redundant controller comprising a first controller and a second controller;
opening an inter-controller channel inside said redundant controller between said first controller and said second controller for communicating said host request and said data between said first controller and said second controller;
receiving a firmware file in said first controller from a management system, said firmware file comprising: metadata describing the content of said firmware file and controller program instructions;
routing said host request for data owned by said first controller to said second controller via said inter-controller channel after said receiving said firmware file;
processing said host request with said second controller for said data owned by said first controller, which causes said data to be presented to said second controller, after said routing said host request for data owned by said first controller;
transferring said data from said second controller to said first controller via said inter-controller channel;
presenting said data from said first controller to said host system; and
updating said firmware in said first controller according to said firmware file controller program instructions during at least one of said routing, said processing, said transferring, and said presenting processes.
2. The method of
restoring processing of said host request for data owned by said first controller from said host system in said first controller after said updating said firmware in said first controller.
3. The method of
transferring said firmware file controller programming instructions from said first controller to said second controller via said inter-controller channel;
routing another host request for another data owned by said second controller from said second controller to said first controller via said inter-controller channel after said transferring said firmware file programming instructions;
processing said another host request within said first controller for said another data owned by said second controller, said processing causing said another data to be presented to said first controller;
transferring said another data from said first controller to said second controller;
presenting said another data from said second controller to said host system; and
updating said firmware in said second controller according to said firmware file controller program instructions during at least one of said routing said another host request for another data owned by said second controller, said processing said another host request within said first controller, said transferring said another data from said first controller, and said presenting said another data from said second controller.
4. The method of
rebooting said first controller after said updating; and
discovering backend devices after said rebooting.
5. The method of
indexing said backend devices after said discovering said backend devices.
6. The method of
8. The method of
providing a discover command in said firmware file; and
discovering volumes owned by said first controller after said rebooting said first controller.
9. The method of
providing an index command in said firmware file; and
indexing volumes owned by said first controller after said discovering said volumes owned by said first controller.
10. The method of
12. The storage subsystem of
13. The storage subsystem of
a host communication path connecting said first controller to said host system;
wherein said host communication path comprises one of a parallel SCSI connection and a Fibre Channel connection.
14. The storage subsystem of
a management system for transmitting said firmware update to said first controller and
a dedicated management communication path connecting said management system and said first controller.
15. The storage subsystem of
16. The storage subsystem of
one or more drives in communication with said first and second controllers and subdivided into one or more volumes;
wherein said firmware update includes a discover command; and
wherein said first controller is further configured to discover ones of said volumes owned by said first controller after updating firmware of said first controller in response to said discover command.
17. The storage subsystem of
wherein said firmware update further includes an index command; and
wherein said first controller is further configured to index said volumes owned by said first controller after discovering said volumes owned by said first controller in response to said index command.
18. The storage subsystem of
a redundant array of inexpensive disks (RAID) in communication with said first and second controllers and subdivided into one or more volumes;
wherein said first controller is further configured to perform storage management processes on ones of said one or more volumes owned by said first controller; and
wherein said second controller is configured to perform storage management processes on ones of said one or more volumes owned by said second controller.
19. The method of
transferring said firmware file from said first controller to said second controller via said inter-controller channel;
routing another host request for another data owned by said second controller from said second controller to said first controller via said inter-controller channel after said transferring said firmware file;
processing said another host request within said first controller for said another data owned by said second controller, said processing causing said another data to be presented to said first controller;
transferring said another data from said first controller to said second controller;
presenting said another data from said second controller to said host system; and
rebooting said second controller according to said firmware file reboot command during at least one of said routing said another host request for another data owned by said second controller, said processing said another host request within said first controller, said transferring said another data from said first controller, and said presenting said another data from said second controller.
20. The method of
restoring processing of said host request for data owned by said first controller from said host system in said first controller after said rebooting said first controller.
|
A wide variety of electronic devices include storage subsystems. One type of storage subsystem providing significant storage capacity utilizes a plurality of redundant array of inexpensive disks which is referred to as a RAID. RAID storage subsystems include a controller that performs significant management functions to improve reliability and performance. The controller has complex firmware containing stored programmed instructions for performing RAID storage management processes.
When a host system attempts to access the storage subsystem during a reboot, the host system often experiences service disruption. One traditional approach to a disruption is to direct the storage subsystem to respond with a ‘Device Not Ready’ indication to the host system. This approach prevents the host system from accessing the storage subsystem during and upgrade and reboot. Some host systems are equipped with high-availability feature sets that react to persistent ‘Device Not Ready’ indications by attempting to activate a redundant ‘fail-over’ path to the storage subsystem that activates an alternate storage controller. While full access to the storage subsystem can be achieved in this manner, it is definitely not transparent and is a burden on resources.
An embodiment may therefore comprise a method for updating firmware in a storage subsystem so that the updating is transparent to a host system that sends a host request for data located in the storage subsystem, the method comprising: providing a redundant controller in the storage subsystem, the redundant controller comprising a first controller and a second controller; opening an inter-controller channel inside the redundant controller between the first controller and the second controller for communicating the host request and the data between the first controller and the second controller; receiving a firmware file in the first controller from a management system, the firmware file comprising: metadata describing the content of the firmware file and controller program instructions; routing the host request for data owned by the first controller to the second controller via the inter-controller channel after the receiving the firmware file; processing the host request with the second controller for the data owned by the first controller, which causes the data to be presented to the second controller, after the routing the host request for data owned by the first controller; transferring the data from the second controller to the first controller via the inter-controller channel; presenting the data from the first controller to the host system; and updating the firmware in the first controller according to the firmware file controller program instructions during at least one of the routing, the processing, the transferring, and the presenting processes.
Another embodiment may therefore comprise a non-disruptive method for updating a storage subsystem having a redundant controller so that the updating is transparent to a host system that sends a host request for data located in a storage subsystem controlled by the redundant controller, the method comprising: providing a first controller and a second controller in the redundant controller; opening an inter-controller channel connected between the first controller and the second controller for communicating the data between the first controller and the second controller; receiving a firmware file in the first controller from a management system, the firmware file comprising at least a reboot command; routing the host request for data owned by the first controller to the second controller via the inter-controller channel after receiving the firmware file; processing the host request with the second controller for the data owned by the first controller, which causes the data to be presented to the second controller, after the routing the host request for data owned by the first controller; transferring the data from second controller to the first controller via the inter-controller channel; presenting the data from the first controller to the host system; and rebooting the first controller according to the firmware file reboot command during at least one of the routing, the processing, the transferring, and the presenting processes.
With continued reference to
Referring still to
The storage subsystem 120, illustrated in
The various communication paths, e.g. dedicated management communication path 116, host communication path 138, and inter-controller communication path 202, illustrated in
Arrow 300, illustrated in
With continued reference to
While running the firmware update process indicated by arrow 312, the host system 130 sends an host request for data owned by the first controller 210 as indicated by arrow 332, the first controller 210 forwards the host request via the inter-controller channel 202 to the second controller 220 indicated by arrow 334. The resulting processing of the host request is indicated by arrow 336 and the second controller eventually forwards data via the inter-controller channel 202 indicated by arrow 338. The first controller 210 forwards the data obtained by the second controller 220 as indicated by arrow 240. The process of forwarding the host request to the second controller 220 is ‘invisible’ to the host system 130 and therefore non-disruptive. Additional host requests (e.g. host request 332) can continue until the first controller 210 is fully operational again after the run firmware update indicated by arrow 312 is complete.
With continued reference to
As further shown in
As also illustrated in
A general flow of the host request 132 through the system 100 updating of the first controller 210 is provided in
It can be appreciated that the above embodiments allow at least one controller of the storage subsystem 120 to be updated while processing host requests 132 from the host system 130. During the non-disruptive updating, the updating first controller 210 redirects the host request 132 for data 134 owned by the first controller 210 to the operating second controller 220 of the redundant controller 200. After the second controller 220 obtains data 134 identified in the host request 132, the operating second controller 220 transfers the data 134 to the updating first controller 210 via an inter-controller channel 202. Once the updating first controller 210 receives the data 134, the first controller 210 presents the data to the host system 130. The host system 130 doesn't detect that the first controller 210 is updating because the updating process is invisible to the host system 130.
The present embodiments can be applied to a number of devices and in a number of manners. With reference to
In another alternative embodiment, these methods can be employed when a simple reboot is required (i.e. firmware updating is not required). In this alternative embodiment, the firmware update file would include a reboot instruction and not any instructions overwriting the program instructions for the controllers (e.g. first controller 210).
In another alternative embodiment, the second controller 220 of the redundant controller 200 is updated by receiving the firmware update from the first controller 210 via the inter-controller channel 202. The firmware update includes instructions that cause the second controller 220 to notify the first controller 210 to take over volumes normally owned by the second controller 220. After notifying the first controller 210 to take over processing of its volumes, the second controller 220 forwards any host requests received by the host-side I/O drives 222 to the first controller inter-controller messaging and RDMA 218 via the inter-controller channel 202. The host request received by the first controller inter-controller messaging and RDMA 218 is processed with the device access layer 214 and data is obtained via the drive-side I/O drives 216 and the first controller paths 242. Such processing of host requests data normally owned by the second controller 220 continues until the second controller 220 has completed its updating process as instructed by the firmware update (e.g. updating the firmware controller program instructions, rebooting, discovering and indexing). Once the second controller 220 has been updated, normal operating processes for the storage subsystem 120 can be restored.
The foregoing description of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed, and other modifications and variation may be possible in light of the above teachings. The embodiment was chosen and descried in order to best explain the principles of the invention and its practical applications to thereby enable others skilled in the art to best utilize the invention in various embodiments and various modifications as are suited to the particular use contemplated. It is intended that the appended claims be construed to include other alternative embodiments of the invention except insofar as limited by the prior art.
Delaney, William Patrick, Day, Kenneth F.
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
6108684, | Dec 23 1996 | NetApp, Inc | Methods and apparatus for balancing loads on a storage subsystem among a plurality of controllers |
6675258, | Jun 30 2000 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Methods and apparatus for seamless firmware update and propagation in a dual raid controller system |
7376756, | Nov 03 2003 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | HDD firmware download |
7600055, | Jan 03 2006 | International Business Machines Corporation | Apparatus, system, and method for firmware update of redundant controllers |
7685461, | Dec 20 2006 | International Business Machines Corporation | Method, apparatus and program storage device for performing fault tolerant code upgrade on a fault tolerant system by determining when functional code reaches a desired state before resuming an upgrade |
7937513, | Apr 26 2002 | Hitachi, Ltd. | Method for controlling storage system, and storage control apparatus |
20050091426, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jul 22 2009 | NetApp, Inc. | (assignment on the face of the patent) | / | |||
Jul 27 2009 | DELANEY, WILLIAM P | LSI Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 023370 | /0913 | |
Jul 27 2009 | DAY, KENNETH F | LSI Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 023370 | /0913 | |
May 06 2011 | LSI Corporation | NetApp, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 026656 | /0659 |
Date | Maintenance Fee Events |
Feb 29 2016 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Feb 28 2020 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Feb 28 2024 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Aug 28 2015 | 4 years fee payment window open |
Feb 28 2016 | 6 months grace period start (w surcharge) |
Aug 28 2016 | patent expiry (for year 4) |
Aug 28 2018 | 2 years to revive unintentionally abandoned end. (for year 4) |
Aug 28 2019 | 8 years fee payment window open |
Feb 28 2020 | 6 months grace period start (w surcharge) |
Aug 28 2020 | patent expiry (for year 8) |
Aug 28 2022 | 2 years to revive unintentionally abandoned end. (for year 8) |
Aug 28 2023 | 12 years fee payment window open |
Feb 28 2024 | 6 months grace period start (w surcharge) |
Aug 28 2024 | patent expiry (for year 12) |
Aug 28 2026 | 2 years to revive unintentionally abandoned end. (for year 12) |