P
US6728833B2ExpiredUtilityPatentIndex 92

Upgrading firmware on disks of the raid storage system without deactivating the server

Assignee: IBMPriority: Feb 28, 2002Filed: Feb 28, 2002Granted: Apr 27, 2004
Est. expiryFeb 28, 2022(expired)· nominal 20-yr term from priority
Inventors:PRUETT GREGORY BRIANRHOADES DAVID BRIEDLE LINDA ANN
G06F 3/0689G06F 3/0632G06F 2211/1035G06F 3/0607G06F 11/1092
92
PatentIndex Score
43
Cited by
4
References
81
Claims

Abstract

A method, system and computer program product for updating firmware in a disk in a disk array in a RAID storage system without deactivating a server coupled to the disk array. Upon selecting the disk whose firmware is to be updated, the selected disk may enter a degrade mode of operation where a RAID controller coupled to the RAID storage system may prevent requests from reaching the selected disk thereby suppressing activity on the selected disk to allow the firmware to be updated. During the updating of the firmware, any stripes updated may be tracked. Upon completion of the firmware update, the stripe units in the selected disk associated with the stripes updated may be rebuilt. In this manner, firmware may be updated on a disk in a RAID storage system without deactivating the server thereby allowing the server to continuously stay active.

Claims

exact text as granted — not AI-modified
What is claimed is:  
     
       1. A method for updating firmware in a disk in a disk array without deactivating a server coupled to said disk array comprising the steps of: 
       selecting said disk in said disk array, wherein said selected disk comprises said firmware to be updated, wherein each disk in said disk array comprises a plurality of stripe units;  
       entering a degrade mode of operation by said selected disk, wherein said degrade mode of operation prevents said selected disk from receiving requests;  
       updating said firmware in said selected disk; and  
       tracking one or more stripes in said disk array corresponding to one or more of said plurality of stripe units of said selected disk where data in said one or more of said plurality of stripe units of said selected disk change in response to write requests to said selected disk.  
     
     
       2. The method as recited in  claim 1  further comprising the steps of: 
       receiving a request to read from a stripe unit of said selected disk; and  
       transmitting data from a stripe unit that mirrors said stripe unit of said selected disk, wherein said mirror stripe unit is located in another disk of said disk array.  
     
     
       3. The method as recited in  claim 1  further comprising the steps of: 
       receiving a request to write data to a stripe unit of said selected disk; and  
       writing said data to a stripe unit that mirrors said stripe unit of said selected disk, wherein said mirror stripe unit is located in another disk of said disk array.  
     
     
       4. The method as recited in  claim 3  further comprising the step of: 
       storing a copy of said data for backup purposes.  
     
     
       5. The method as recited in  claim 1  further comprising the steps of: 
       completing updating of said firmware in said selected disk; and  
       rebuilding a stripe unit of said selected disk corresponding to a stripe tracked.  
     
     
       6. The method as recited in  claim 5 , wherein said step of rebuilding said stripe unit of said selected disk comprises the steps of: 
       copying data in a stripe unit in another disk of said disk array that mirrors said stripe unit of said selected disk to be rebuilt; and  
       storing said copied data in said stripe unit of said selected disk to be rebuilt.  
     
     
       7. The method as recited in  claim 1  further comprising the steps of: 
       completing updating of said firmware in said selected disk; and  
       rebuilding one or more stripe units of said selected disk corresponding to one or more stripes tracked stripe by stripe.  
     
     
       8. The method as recited in  claim 7  further comprising the step of: 
       tracking which of said one or more stripes corresponding to which of said one or more stripe units have been rebuilt.  
     
     
       9. The method as recited in  claim 8  further comprising the step of: 
       receiving a request to write data to a stripe unit of said selected disk that has been rebuilt prior to completing rebuilding of said one or more stripe units of said selected disk.  
     
     
       10. The method as recited in  claim 9  further comprising the step of: 
       writing said data in said stripe unit of said selected disk that has been rebuilt and in a stripe unit that is a mirror of said stripe unit of said selected disk that has been rebuilt, wherein said mirror stripe unit is located in another disk of said disk array.  
     
     
       11. The method as recited in  claim 1  further comprising the steps of: 
       receiving a request to read from a stripe unit of a particular stripe of said selected disk; and  
       performing a logical calculation on data located in other stripe units of said particular stripe.  
     
     
       12. The method as recited in  claim 11  further comprising the step of: 
       transmitting a result of said logical calculation.  
     
     
       13. The method as recited in  claim 11 , wherein said logical calculation is an exclusive OR calculation. 
     
     
       14. The method as recited in  claim 1  further comprising the steps of: 
       receiving a request to write data to a stripe unit of a particular stripe of said selected disk; and  
       generating an updated parity value stored in another stripe unit of said particular stripe.  
     
     
       15. The method as recited in  claim 14 , wherein said updated parity value is generated by performing a logical calculation on said data to be written with data located in other stripe units of said particular stripe except data located in a stripe unit storing a parity value to be updated. 
     
     
       16. The method as recited in  claim 15 , wherein said logical calculation is an exclusive OR calculation. 
     
     
       17. The method as recited in  claim 14  further comprising the step of: 
       storing a copy of said data requested to be written for backup purposes.  
     
     
       18. The method as recited in  claim 14  further comprising the step of: 
       tracking said particular stripe that was updated.  
     
     
       19. The method as recited in  claim 18  further comprising the steps of: 
       completing updating of said firmware in said selected disk; and  
       rebuilding said stripe unit of said selected disk corresponding to said particular stripe that was updated.  
     
     
       20. The method as recited in  claim 19 , wherein said step of rebuilding is accomplished by performing a logical calculation on data located in other stripe units of said particular stripe. 
     
     
       21. A system, comprising: 
       an array of disks, wherein each disk in a disk array comprises a plurality of stripe units; and  
       a controller coupled to said array of disks, wherein said controller is configured to manage said array of disks, wherein said controller comprises:  
       a memory unit operable for storing a program for updating firmware in a disk in said disk array without deactivating a server coupled to said array of disks, wherein said server is configured to receive requests to access said array of disks, wherein said server is configured to forward said received requests to said controller;  
       a processor coupled to said memory, wherein said processor, responsive to said program, comprises:  
       circuitry operable for selecting a disk in said disk array, wherein said selected disk comprises said firmware to be updated;  
       circuitry operable for entering a degrade mode of operation for said selected disk, wherein said degrade mode of operation prevents said selected disk from receiving requests;  
       circuitry operable for updating said firmware in said selected disk; and  
       circuitry operable for tracking one or more stripes in said disk array corresponding to one or more of said plurality of stripe units of said selected disk where data in said one or more of said plurality of stripe units of said selected disk change in response to write requests to said selected disk.  
     
     
       22. The system as recited in  claim 21 , wherein said controller further comprises: 
       circuitry operable for receiving a request to read from a stripe unit of said selected disk; and  
       circuitry operable for transmitting data from a stripe unit that mirrors said stripe unit of said selected disk, wherein said mirror stripe unit is located in another disk of said disk array.  
     
     
       23. The system as recited in  claim 21 , wherein said controller further comprises: 
       circuitry operable for receiving a request to write data to a stripe unit of said selected disk; and  
       circuitry operable for writing said data to a stripe unit that mirrors said stripe unit of said selected disk, wherein said mirror stripe unit is located in another disk of said disk array.  
     
     
       24. The system as recited in  claim 23 , wherein said controller further comprises: 
       a non-volatile cache coupled to said processor, wherein said non-volatile cache is configured to store a copy of said data for backup purposes.  
     
     
       25. The system as recited in  claim 21 , wherein said controller further comprises: 
       circuitry operable for completing updating of said firmware in said selected disk; and  
       circuitry operable for rebuilding a stripe unit of said selected disk corresponding to a stripe tracked.  
     
     
       26. The system as recited in  claim 25 , wherein said circuitry operable for rebuilding said stripe unit of said selected disk comprises: 
       circuitry operable for copying data in a stripe unit in another disk of said disk array that mirrors said stripe unit of said selected disk to be rebuilt; and  
       circuitry operable for storing said copied data in said stripe unit of said selected disk to be rebuilt.  
     
     
       27. The system as recited in  claim 21 , wherein said controller further comprises: 
       circuitry operable for completing updating of said firmware in said selected disk; and  
       circuitry operable for rebuilding one or more stripe units of said selected disk corresponding to one or more stripes tracked stripe by stripe tracked.  
     
     
       28. The system as recited in  claim 27 , wherein said controller further comprises: 
       circuitry operable for tracking which of said one or more stripes corresponding to which of said one or more stripe units have been rebuilt.  
     
     
       29. The system as recited in  claim 28 , wherein said controller further comprises: 
       circuitry operable for receiving a request to write data to a stripe unit of said selected disk that has been rebuilt prior to completing rebuilding of said one or more stripe units of said selected disk.  
     
     
       30. The system as recited in  claim 29 , wherein said controller further comprises: 
       circuitry operable for writing said data in said stripe unit of said selected disk that has been rebuilt and in a stripe unit that is a mirror of said stripe unit of said selected disk that has been rebuilt, wherein said mirror stripe unit is located in another disk of said disk array.  
     
     
       31. The system as recited in  claim 21 , wherein said controller further comprises: 
       circuitry operable for receiving a request to read from a stripe unit of a particular stripe of said selected disk; and  
       circuitry operable for performing a logical calculation on data located in other stripe units of said particular stripe.  
     
     
       32. The system as recited in  claim 31 , wherein said controller further comprises: 
       circuitry operable for transmitting a result of said logical calculation.  
     
     
       33. The system as recited in  claim 31 , wherein said logical calculation is an exclusive OR calculation. 
     
     
       34. The system as recited in  claim 21 , wherein said controller further comprises: 
       circuitry operable for receiving a request to write data to a stripe unit of a particular stripe of said selected disk; and  
       circuitry operable for generating an updated parity value stored in another stripe unit of said particular stripe.  
     
     
       35. The system as recited in  claim 34 , wherein said updated parity value is generated by performing a logical calculation on said data to be written with data located in other stripe units of said particular stripe except data located in a stripe unit storing a parity value to be updated. 
     
     
       36. The system as recited in  claim 35 , wherein said logical calculation is an exclusive OR calculation. 
     
     
       37. The system as recited in  claim 34 , wherein said controller further comprises: 
       a non-volatile cache coupled to said processor, wherein said non-volatile cache is configured to store a copy of said data requested to be written for backup purposes.  
     
     
       38. The system as recited in  claim 34 , wherein said controller stores a copy of said data requested to be written in a special area in a limited number of other disks of said disk array. 
     
     
       39. The system as recited in  claim 34 , wherein said controller further comprises: 
       circuitry operable for tracking said particular stripe that was updated.  
     
     
       40. The system as recited in  claim 39 , wherein said controller further comprises: 
       circuitry operable for completing updating of said firmware in said selected disk; and  
       circuitry operable for rebuilding said stripe unit of said selected disk corresponding to said particular stripe that was updated.  
     
     
       41. The system as recited in  claim 40 , wherein said circuitry operable for rebuilding is accomplished by performing a logical calculation on data located in other stripe units of said particular stripe. 
     
     
       42. A system, comprising: 
       means for selecting said disk in said disk array, wherein said selected disk comprises said firmware to be updated, wherein each disk in said disk array comprises a plurality of stripe units;  
       means for entering a degrade mode of operation by said selected disk, wherein said degrade mode of operation prevents said selected disk from receiving requests;  
       means for updating said firmware in said selected disk; and  
       means for tracking one or more stripes in said disk array corresponding to one or more of said plurality of stripe units of said selected disk where data in said one or more of said plurality of stripe units of said selected disk change in response to write requests to said selected disk.  
     
     
       43. The system as recited in  claim 42  further comprises: 
       means for receiving a request to read from a stripe unit of said selected disk; and  
       means for transmitting data from a stripe unit that mirrors said stripe unit of said selected disk, wherein said mirror stripe unit is located in another disk of said disk array.  
     
     
       44. The system as recited in  claim 42  further comprises: 
       means for receiving a request to write data to a stripe unit of said selected disk; and  
       means for writing said data to a stripe unit that mirrors said stripe unit of said selected disk, wherein said mirror stripe unit is located in another disk of said disk array.  
     
     
       45. The system as recited in  claim 44  further comprises: 
       means for storing a copy of said data for backup purposes.  
     
     
       46. The system as recited in  claim 42  further comprises: 
       means for completing updating of said firmware in said selected disk; and  
       means for rebuilding a stripe unit of said selected disk corresponding to a stripe tracked.  
     
     
       47. The system as recited in  claim 46 , wherein said means for rebuilding said stripe unit of said selected disk comprises: 
       means for copying data in a stripe unit in another disk of said disk array that mirrors said stripe unit of said selected disk to be rebuilt; and  
       means for storing said copied data in said stripe unit of said selected disk to be rebuilt.  
     
     
       48. The system as recited in  claim 42  further comprises: 
       means for completing updating of said firmware in said selected disk; and  
       means for rebuilding one or more stripe units of said selected disk corresponding to one or more stripes tracked stripe by stripe.  
     
     
       49. The system as recited in  claim 48  further comprises: 
       means for tracking which of said one or more stripes corresponding to which of said one or more stripe units have been rebuilt.  
     
     
       50. The system as recited in  claim 49  further comprises: 
       means for receiving a request to write data to a stripe unit of said selected disk that has been rebuilt prior to completing rebuilding of said one or more stripe units of said selected disk.  
     
     
       51. The system as recited in  claim 50  further comprises: 
       means for writing said data in said stripe unit of said selected disk that has been rebuilt and in a stripe unit that is a mirror of said stripe unit of said selected disk that has been rebuilt, wherein said mirror stripe unit is located in another disk of said disk array.  
     
     
       52. The system as recited in  claim 42  further comprises: 
       means for receiving a request to read from a stripe unit of a particular stripe of said selected disk; and  
       means for performing a logical calculation on data located in other stripe units of said particular stripe.  
     
     
       53. The system as recited in  claim 52  further comprises: 
       means for transmitting a result of said logical calculation.  
     
     
       54. The system as recited in  claim 52 , wherein said logical calculation is an exclusive OR calculation. 
     
     
       55. The system as recited in  claim 42  further comprises: 
       means for receiving a request to write data to a stripe unit of a particular stripe of said selected disk; and  
       means for generating an updated parity value stored in another stripe unit of said particular stripe.  
     
     
       56. The system as recited in  claim 55 , wherein said updated parity value is generated by performing a logical calculation on said data to be written with data located in other stripe units of said particular stripe except data located in a stripe unit storing a parity value to be updated. 
     
     
       57. The system as recited in  claim 56 , wherein said logical calculation is an exclusive OR calculation. 
     
     
       58. The system as recited in  claim 55  further comprises: 
       means for storing a copy of said data requested to be written for backup purposes.  
     
     
       59. The system as recited in  claim 55  further comprises: 
       means for tracking said particular stripe that was updated.  
     
     
       60. The system as recited in  claim 59  further comprises: 
       means for completing updating of said firmware in said selected disk; and  
       means for rebuilding said stripe unit of said selected disk corresponding to said particular stripe that was updated.  
     
     
       61. The system as recited in  claim 60 , wherein said means for rebuilding is accomplished by performing a logical calculation on data located in other stripe units of said particular stripe. 
     
     
       62. A computer program product embodied in a machine readable medium for updating firmware in a disk in a disk array without deactivating a server coupled to said disk array comprising the programming steps of: 
       selecting said disk in said disk array, wherein said selected disk comprises said firmware to be updated, wherein each disk in said disk array comprises a plurality of stripe units;  
       entering a degrade mode of operation by said selected disk, wherein said degrade mode of operation prevents said selected disk from receiving requests;  
       updating said firmware in said selected disk; and  
       tracking one or more stripes in said disk array corresponding to one or more of said plurality of stripe units of said selected disk where data in said one or more of said plurality of stripe units of said selected disk change in response to write requests to said selected disk.  
     
     
       63. The computer program product as recited in  claim 62  further comprising the programming steps of: 
       receiving a request to read from a stripe unit of said selected disk; and  
       transmitting data from a stripe unit that mirrors said stripe unit of said selected disk, wherein said mirror stripe unit is located in another disk of said disk array.  
     
     
       64. The computer program product as recited in  claim 62  further comprising the programming steps of: 
       receiving a request to write data to a stripe unit of said selected disk; and  
       writing said data to a stripe unit that mirrors said stripe unit of said selected disk, wherein said mirror stripe unit is located in another disk of said disk array.  
     
     
       65. The computer program product as recited in  claim 64  further comprising the programming step of: 
       storing a copy of said data for backup purposes.  
     
     
       66. The computer program product as recited in  claim 62  further comprising the programming steps of: 
       completing updating of said firmware in said selected disk; and  
       rebuilding a stripe unit of said selected disk corresponding to a stripe tracked.  
     
     
       67. The computer program product as recited in  claim 66 , wherein said programming step of rebuilding said stripe unit of said selected disk comprises the programming steps of: 
       copying data in a stripe unit in another disk of said disk array that mirrors said stripe unit of said selected disk to be rebuilt; and  
       storing said copied data in said stripe unit of said selected disk to be rebuilt.  
     
     
       68. The computer program product as recited in  claim 62  further comprising the programming steps of: 
       completing updating of said firmware in said selected disk; and  
       rebuilding one or more stripe units of said selected disk corresponding to one or more stripes tracked stripe by stripe.  
     
     
       69. The computer program product as recited in  claim 68  further comprising the programming step of: 
       tracking which of said one or more stripes corresponding to which of said one or more stripe units have been rebuilt.  
     
     
       70. The computer program product as recited in  claim 69  further comprising the programming step of: 
       receiving a request to write data to a stripe unit of said selected disk that has been rebuilt prior to completing rebuilding of said one or more stripe units of said selected disk.  
     
     
       71. The computer program product as recited in  claim 70  further comprising the programming step of: 
       writing said data in said stripe unit of said selected disk that has been rebuilt and in a stripe unit that is a mirror of said stripe unit of said selected disk that has been rebuilt, wherein said mirror stripe unit is located in another disk of said disk array.  
     
     
       72. The computer program product as recited in  claim 62  further comprising the programming steps of: 
       receiving a request to read from a stripe unit of a particular stripe of said selected disk; and  
       performing a logical calculation on data located in other stripe units of said particular stripe.  
     
     
       73. The computer program product as recited in  claim 72  further comprising the programming step of: 
       transmitting a result of said logical calculation.  
     
     
       74. The computer program product as recited in  claim 72 , wherein said logical calculation is an exclusive OR calculation. 
     
     
       75. The computer program product as recited in  claim 72  further comprising the programming steps of: 
       receiving a request to write data to a stripe unit of a particular stripe of said selected disk; and  
       generating an updated parity value stored in another stripe unit of said particular stripe.  
     
     
       76. The computer program product as recited in  claim 75 , wherein said updated parity value is generated by performing a logical calculation on said data to be written with data located in other stripe units of said particular stripe except data located in a stripe unit storing a parity value to be updated. 
     
     
       77. The computer program product as recited in  claim 76 , wherein said logical calculation is an exclusive OR calculation. 
     
     
       78. The computer program product as recited in  claim 75  further comprising the programming step of: 
       storing a copy of said data requested to be written for backup purposes.  
     
     
       79. The computer program product as recited in  claim 75  further comprising the programming step of: 
       tracking said particular stripe that was updated.  
     
     
       80. The computer program product as recited in  claim 79  further comprising the programming steps of: 
       completing updating of said firmware in said selected disk; and  
       rebuilding said stripe unit of said selected disk corresponding to said particular stripe that was updated.  
     
     
       81. The computer program product as recited in  claim 80 , wherein said programming step of rebuilding is accomplished by performing a logical calculation on data located in other stripe units of said particular stripe.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.