US6760862B1 - Methods and apparatus for performing a maintenance procedure on a data storage system - Google Patents

Methods and apparatus for performing a maintenance procedure on a data storage system Download PDF

Info

Publication number
US6760862B1
US6760862B1 US09/862,813 US86281301A US6760862B1 US 6760862 B1 US6760862 B1 US 6760862B1 US 86281301 A US86281301 A US 86281301A US 6760862 B1 US6760862 B1 US 6760862B1
Authority
US
United States
Prior art keywords
state
data storage
maintenance procedure
storage system
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime, expires
Application number
US09/862,813
Inventor
Moshe Schreiber
Arod Shatil
Stefano Sguazzin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
EMC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by EMC Corp filed Critical EMC Corp
Priority to US09/862,813 priority Critical patent/US6760862B1/en
Assigned to EMC CORPORATION reassignment EMC CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SCHREIBER, MOSHE, SHATIL, AROD, SQUAZZIN, STEFANO
Application granted granted Critical
Publication of US6760862B1 publication Critical patent/US6760862B1/en
Assigned to CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT reassignment CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT SECURITY AGREEMENT Assignors: ASAP SOFTWARE EXPRESS, INC., AVENTAIL LLC, CREDANT TECHNOLOGIES, INC., DELL INTERNATIONAL L.L.C., DELL MARKETING L.P., DELL PRODUCTS L.P., DELL SOFTWARE INC., DELL SYSTEMS CORPORATION, DELL USA L.P., EMC CORPORATION, EMC IP Holding Company LLC, FORCE10 NETWORKS, INC., MAGINATICS LLC, MOZY, INC., SCALEIO LLC, SPANNING CLOUD APPS LLC, WYSE TECHNOLOGY L.L.C.
Assigned to THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT reassignment THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT SECURITY AGREEMENT Assignors: ASAP SOFTWARE EXPRESS, INC., AVENTAIL LLC, CREDANT TECHNOLOGIES, INC., DELL INTERNATIONAL L.L.C., DELL MARKETING L.P., DELL PRODUCTS L.P., DELL SOFTWARE INC., DELL SYSTEMS CORPORATION, DELL USA L.P., EMC CORPORATION, EMC IP Holding Company LLC, FORCE10 NETWORKS, INC., MAGINATICS LLC, MOZY, INC., SCALEIO LLC, SPANNING CLOUD APPS LLC, WYSE TECHNOLOGY L.L.C.
Assigned to EMC IP Holding Company LLC reassignment EMC IP Holding Company LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: EMC CORPORATION
Assigned to THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A. reassignment THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A. SECURITY AGREEMENT Assignors: CREDANT TECHNOLOGIES, INC., DELL INTERNATIONAL L.L.C., DELL MARKETING L.P., DELL PRODUCTS L.P., DELL USA L.P., EMC CORPORATION, EMC IP Holding Company LLC, FORCE10 NETWORKS, INC., WYSE TECHNOLOGY L.L.C.
Assigned to THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A. reassignment THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A. SECURITY AGREEMENT Assignors: CREDANT TECHNOLOGIES INC., DELL INTERNATIONAL L.L.C., DELL MARKETING L.P., DELL PRODUCTS L.P., DELL USA L.P., EMC CORPORATION, EMC IP Holding Company LLC, FORCE10 NETWORKS, INC., WYSE TECHNOLOGY L.L.C.
Assigned to CREDANT TECHNOLOGIES, INC., MOZY, INC., DELL SOFTWARE INC., ASAP SOFTWARE EXPRESS, INC., EMC IP Holding Company LLC, AVENTAIL LLC, DELL SYSTEMS CORPORATION, DELL INTERNATIONAL, L.L.C., SCALEIO LLC, DELL MARKETING L.P., FORCE10 NETWORKS, INC., EMC CORPORATION, WYSE TECHNOLOGY L.L.C., MAGINATICS LLC, DELL USA L.P., DELL PRODUCTS L.P. reassignment CREDANT TECHNOLOGIES, INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Assigned to DELL INTERNATIONAL L.L.C., DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.), DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.), DELL PRODUCTS L.P., SCALEIO LLC, EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.), DELL USA L.P., EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC), DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.) reassignment DELL INTERNATIONAL L.L.C. RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Assignors: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Assigned to DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.), SCALEIO LLC, DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.), DELL USA L.P., EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC), DELL PRODUCTS L.P., EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.), DELL INTERNATIONAL L.L.C., DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.) reassignment DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.) RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Assignors: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Adjusted expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • G06F11/1662Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2005Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2089Redundant storage control functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space

Definitions

  • a typical data storage system stores and retrieves data for one or more external host devices (or simply hosts).
  • Such a data storage system typically includes processing circuitry and a set of disk drives.
  • the processing circuitry performs load and store operations on the set of disk drives on behalf of the hosts, e.g., block I/O operations using SCSI communications, ESCON communications, Fibre Channel signals, etc.
  • the data storage system may require servicing by a technician.
  • the technician typically goes to the location where the data storage system resides, and performs a service procedure on the data storage system.
  • the system may require a hardware or software upgrade in order to integrate a design improvement or to fix a design defect.
  • a circuit board of the processing circuitry or a disk drive may fail and require replacement.
  • some data storage system manufacturers provide scripts that automate the servicing process. That is, in response to a few electronically entered commands (e.g., instructions typed into a data storage system console device by the technician), the scripts perform a more-detailed and more-complex series of operations.
  • the technician can perform a variety of service operations on the data storage system such as upgrading hardware or software, or replacing a defective data storage part by simply providing a few commands (e.g., typing information at a keyboard) and performing some physical work (swapping a failed component with a new component).
  • a disk drive of a data storage system fails.
  • a technician can travel to the data storage system and, at the console device of the data storage system, run a conventional script that guides the technician through a disk drive replacement procedure in an automated manner.
  • the script first requires the technician to identify a spare disk drive for use in recovering data on the failed disk drive.
  • the script performs a data recovery procedure to recover the data.
  • Such a recovery procedure may simply involve copying data from a mirror disk drive to the spare disk drive or, alternatively, involve more extensive data recovery operations (e.g., performing a series of logical XOR operations to recover data from related data and parity information).
  • the script directs the technician to physically remove the failed disk drive and replace it with a new disk drive.
  • the script checks the new disk drive to make sure it has an appropriate size (e.g., that the new disk drive is at least as large as the failed disk drive).
  • the script copies the recovered data from the spare disk drive to the new disk drive. Once the data resides on the new disk drive, the script gives back the spare disk drive so that it can be used for other purposes and the disk drive replacement process is complete.
  • the technician can perform other types of service procedures using other conventional scripts that automate those service procedures in a manner similar to that described above for replacing a disk drive.
  • Other examples of conventional script-driven service procedures include those for upgrading hardware or replacing failed hardware (e.g., circuit boards, etc.) and those for upgrading software (e.g., operating systems, device drivers, application level programs, etc.).
  • a technician travels to a customer site to replace a bad disk drive of a data storage system.
  • the technician boots the console device of the data storage system and invokes a disk drive replacement script which is designed to enable the technician to (i) allocate an available spare disk drive and recover data onto the spare disk drive (e.g., copy data from a disk drive that mirrors the failed disk drive), (ii) replace the failed disk drive with a new disk drive, (iii) subsequently transfer the recovered data from the spare disk drive to the new disk drive, and (iv) finally return the spare disk drive to its initially available condition.
  • an available spare disk drive e.g., copy data from a disk drive that mirrors the failed disk drive
  • the technician may arrive at the customer site and successfully recover the data of the failed disk drive onto a spare disk drive. The technician may then replace the failed disk drive with a new disk drive. If the new disk drive works properly, the technician can then transfer the recovered data to the new disk drive and then return the spare disk drive to complete the service procedure.
  • the new disk drive was itself defective, i.e., another failed disk drive.
  • the technician does not posses another new disk drive to swap in place of the faulty new disk drive.
  • the technician typically leaves the data storage system with the replacement procedure running, and travels back to the office to retrieve another new disk drive.
  • the data storage system may reboot the console device since some data storage systems are programmed to reset a component (e.g., the console device) if there has not been any activity from that component after a predetermined period of time (e.g., 30 minutes).
  • the technician finds that the console device has been rebooted and that the script for replacing a failed disk drive terminated in the middle. If the technician restarts the script, the script would operate improperly. In particular, the script would start at the beginning and require the technician to allocate a spare disk drive. Unfortunately, the technician cannot allocate the initially used spare disk drive since it is already allocated. Furthermore, if a second spare disk drive is available and the technician allocates the second spare disk drive, the data storage system would then have two allocated spare disk drives.
  • a typical next step for the technician is to call the home office by telephone, and obtain technical assistance from a specialist such as someone with intimate knowledge of the disk drive replacement process.
  • the specialist would provide detailed instructions that enable the technician to complete the disk drive replacement process by hand (i.e., without further using the script).
  • the specialist would explain to the technician how to manually replace the second faulty disk drive with the new disk drive.
  • the specialist would then explain how to transfer the recovered data from the spare disk drive to the new disk drive.
  • the specialist would explain how to return the spare disk drive to an available state in order to manually complete the disk drive replacement procedure.
  • the specialist may not be trained well enough to properly guide the technician through a servicing procedure.
  • the technician may need to talk directly with an engineer.
  • the engineer is taken away from attending to other important such as designing new products.
  • the specialist or engineer guiding the technician through completion of the procedure may forget particular steps. For example, the specialist or engineer may forget to ask the technician to verify that the new disk drive is at least the same size as the failed disk drive. If such a verification has not taken place, the technician may have inadvertently replaced the failed disk drive with a new disk drive that is too small. Accordingly, and perhaps after the technician has left the customer location and deemed the data storage system to be properly fixed, an application running on the data storage system may fill up the new disk drive expecting there to be more disk space than what is actually there. Such occurrences would require the technician to return to the customer location to diagnose and fix the problem thus increasing the servicing cost, as well as potentially lose goodwill and result in a reputation for lower quality due to the amount of trouble encountered by the customer.
  • an embodiment of the present invention is directed to techniques for accessing a data storage system (e.g., upgrading hardware or software, replacing a defective component, etc.) using a maintenance procedure that, if aborted prior to completion and after the data storage system transitions to a particular state, can restore the data storage system back to an earlier state and complete the maintenance procedure. Accordingly, a technician running the maintenance procedure does not need to either manually finish accessing the data storage system or begin the maintenance procedure from scratch. Rather, the technician can simply complete the maintenance procedure from the earlier state thus avoiding the need for taking special action (e.g., telephone assistance, manual completion, etc.).
  • special action e.g., telephone assistance, manual completion, etc.
  • One arrangement of the invention is directed to a data storage system that includes a data storage assembly which is capable of storing and retrieving data; and a service processor, coupled to the data storage assembly, that accesses the data storage assembly.
  • the service processor has a memory, and a controller coupled to the memory.
  • the controller is configured to perform part of a maintenance procedure on the data storage system such that a state of the data storage system transitions from a first state to a second state, and store, in a memory, a data structure identifying the second state.
  • the controller is further configured to, after the maintenance procedure is aborted prior to completion of the maintenance procedure and after a transition of the state of the data storage system from the second state to a third state, (i) restore the data storage system to the second state based on the data structure stored in the memory, and (ii) complete the maintenance procedure.
  • the controller of the service processor is further configured to, prior to performing the part of the maintenance procedure, search for the data structure in the memory to determine whether the maintenance procedure previously aborted. Accordingly, the controller can determine whether the maintenance procedure terminated without completing based on whether it finds the data structure in the memory.
  • the maintenance procedure includes multiple routines.
  • the controller when completing the maintenance procedure, is configured to (i) receive, from a user, an individual run command that identifies a routine of the maintenance procedure, and (ii) in response to the individual run command, individually run the routine of the maintenance procedure identified by the individual run command.
  • the maintenance procedure is configured to (i) receive, from a user, a skip command that identifies a routine of the maintenance procedure, and (ii) in response to the skip command, bypass the routine of the maintenance procedure identified by the skip command.
  • the maintenance procedure is configured to (i) receive, from a user, a continue command that identifies a routine of the maintenance procedure, and (ii) in response to the continue command, perform at least one of the routines of the maintenance procedure such that the last routine performed is that which is identified by the continue command.
  • the maintenance procedure is configured to (i) receive an undo command from a user, and (ii) in response to the undo command, return the data storage system to the first state based on the data structure saved in the memory.
  • the maintenance procedure is configured to save in the memory for each routine of the maintenance procedure: (i) a respective identifier that identifies that routine, (ii) a respective set of runtime variables utilized by that routine when executed, and (iii) a respective set of control variables that identifies how that routine operates relative to other routines of the maintenance procedure.
  • the service processor further includes an input/output device coupled to the controller.
  • the controller is further configured to display, in a graphical user interface on the input/output device, a hierarchical representation of portions of the data structure to enable a user to navigate among the hierarchical representation in order to access (i) the respective identifier, (ii) the respective set of runtime variables and (iii) the respective set of control variables for each routine of the maintenance procedure.
  • FIG. 1 is a block diagram of a data storage system which is suitable for use by the invention.
  • FIG. 2 is a general state diagram illustrating operating states and state transitions of the data storage system of FIG. 1 .
  • FIG. 3 is a flow chart of a procedure which is performed by a service processor of the data storage system of FIG. 1 .
  • FIG. 4 is a view of a graphical user interface window which is suitable for displaying information to a user of the data storage system of FIG. 1 .
  • FIG. 5 is a block diagram of a data structure which is suitable for storing state information for use by the procedure of FIG. 2 .
  • FIG. 6 is a flowchart of an option for running an individual routine/step which can be carried out by the service processor as part of the procedure of FIG. 2 .
  • FIG. 7 is a flowchart of an option for bypassing an individual routine/step which can be carried out by the service processor as part of the procedure of FIG. 2 .
  • FIG. 8 is a flowchart of an option for performing a series of routines/steps which can be carried out by the service processor as part of the procedure of FIG. 2 .
  • FIG. 9 is a flowchart of an option for returning the data storage system to a previous state which can be carried out by the service processor as part of the procedure of FIG. 2 .
  • FIG. 10 is a state diagram showing an example of various operating states and state transitions of the data storage system of FIG. I when a user of the procedure of FIG. 2 replaces a bad disk drive.
  • the invention is directed to techniques for accessing a data storage system (e.g., replacing or upgrading a component, installing a new component, changing a configuration, measuring performance, collecting statistics, etc.) using a maintenance procedure that, if aborted prior to completion and after the data storage system transitions to a particular state, can restore the data storage system back to an earlier state and complete the maintenance procedure.
  • a user e.g., a technician
  • the user can simply continue the maintenance procedure from the earlier state (e.g., where it left off) to complete accessing the data storage system in an automated manner. Accordingly, the user avoids the need for special attention (e.g., telephone assistance from a specialist, manual completion, etc.) that is often required in conventional approaches.
  • FIG. 1 shows a data storage system 20 which is suitable for use by the invention.
  • the data storage system 20 includes a data storage assembly 22 and a service processor 24 .
  • the data storage assembly 22 is capable of storing and retrieving data on behalf of one or more hosts 26 (e.g., servers that operate as front-ends to the data storage system 20 ).
  • the service processor 24 e.g., a specially programmed laptop PC
  • the service processor 24 is capable of accessing the data storage system 20 to perform servicing (e.g., upgrading hardware or software, replacing a defective component, measuring performance, etc.).
  • the data storage assembly 22 has a front-end/back-end topology with an I/O cache therebetween. That is, the data storage assembly 22 includes front-end circuitry 28 , a cache 30 , back-end circuitry 32 , and a set of buses 34 . The front-end circuitry 28 and the back-end circuitry 32 are capable of exchanging data and messages through the set of buses 34 and the cache 30 .
  • the data storage assembly 22 further includes a set of storage devices 36 (e.g., a set of disk drives) which is capable of storing the data in a non-volatile manner.
  • the cache 30 (e.g., volatile memory) operates as a buffer that temporarily holds data exchanged between the hosts 26 and the set of storage devices 36 .
  • the front-end circuitry 28 operates as an interface between the hosts 26 and the cache 30 .
  • the back-end circuitry 32 operates as an interface between the cache 30 and the set of storage devices 36 .
  • the front-end circuitry 28 includes multiple front-end circuit boards 38
  • the cache 30 includes multiple memory circuit boards 40
  • the back-end circuitry 32 includes multiple back-end circuit boards 42 .
  • Such redundancy provides the data storage system 20 with fault tolerance and load balancing features.
  • the SymmetrixTM which is manufactured by EMC Corporation of Hopkinton, Mass. includes circuitry having a topology similar to that described above, and such circuitry is suitable for use as the data storage assembly 22 .
  • the service processor 24 includes an input/output (l/O) device 44 , a controller 46 , memory 48 and an interface 50 .
  • the l/O device 44 receives information (e.g., commands and data) from a user (e.g., a technician) and provides information (e.g., status, confirmation, etc.) back to the user.
  • the interface 50 e.g., a network interface card
  • the memory 48 of the service processor 24 stores various memory constructs including an operating system 52 , a maintenance application 54 for performing at least one maintenance procedure 56 , and a data structure 58 (e.g., a file) containing state information 60 .
  • the operating system 52 manages resources of the service processor 24 in order to enable the service processor 24 to run applications such as the maintenance application 54 .
  • the maintenance application 54 includes instructions
  • the service processor 24 includes a computer processor that operates in accordance with the instructions to form the controller 46 . Further details of how the service processor 24 operates using the maintenance application 54 and the data structure 58 will be provided shortly with reference to FIG. 3 .
  • a computer program product 62 (e.g., one or more CDROMs, diskettes, tapes, etc.) provides one or more of the above-listed memory constructs to the service processor 24 .
  • the computer program product 62 includes the maintenance application 54 .
  • the application 54 can be installed on the service processor 24 , and then invoked to create other memory constructs such as the data structure 58 .
  • the service processor 24 can acquire one or more of the memory constructs (e.g., the maintenance application 54 ) through other means such as via a download over a network. Further details of the invention will now be provided with reference to FIG. 2 .
  • FIG. 2 shows a state diagram 64 for the data storage system 20 .
  • the data storage system 20 can transition through a number of different states 66 .
  • the combination of a particular current state of the data storage assembly 22 and a particular current state of the service processor 24 equals the current state of the entire data storage system 20 .
  • the data storage system 20 is viewed as going through a transition 68 from one state 66 to another state 66 .
  • the data storage system 20 initially resides in a fully operational state 66 (e.g., a state 66 -A).
  • a component fails
  • the data storage system 20 in effect, goes through a transition 68 (e.g., a transition 68 -A from the state 66 -A to a state 66 -B).
  • a user invokes the maintenance application 54 on the service processor 24 in order to run a maintenance procedure 56 for replacing the failed component.
  • the data storage system 20 goes through another transition 68 to another state 66 (e.g., a transition 68 -B into a state 66 -C), and so on.
  • the maintenance application 54 When the maintenance application 54 is running on the service processor 24 , the user can run particular maintenance procedures 56 in order to access various parts of the data storage system 20 .
  • the maintenance application 54 includes maintenance procedures 56 for replacing or upgrading components of the data storage system 20 , installing new components, changing configurations, measuring performance, and collecting statistics, among other things. Further details of how the service processor 24 operates when a user is running the maintenance application 54 will now be provided with reference to FIG. 3 .
  • FIG. 3 shows a procedure 70 which is performed by the controller 46 of the service processor 24 when a user invokes a maintenance procedure 56 of the maintenance application 54 (e.g., a maintenance procedure 54 for replacing a faulty storage device 36 ).
  • the controller 46 determines whether a file associated with the maintenance procedure 56 exists (i.e., whether a data structure 58 containing state information 60 for the invoked maintenance procedure 56 exists). In one arrangement, the controller 46 checks a particular directory of the memory 48 of the service processor 24 for the existence of a file having a particular filename. If the file does not exist, the controller 46 proceeds to step 74 . However, if the file exists, the controller 46 proceeds in step 76 .
  • step 74 when the file does not exist, the controller 46 creates the file associated with the maintenance application 54 .
  • the file is essentially the data structure 58 which contains state information 60 (e.g., state variables, procedure definitions, etc.).
  • the file includes multiple data structures including the data structure 58 containing the state information 60 .
  • the controller 46 can create a file having a particular filename within a particular directory of the memory 48 , and store the data structure 58 in that file.
  • step 76 when the file already exists, the controller 46 reads the data structure 58 from the file in order to obtain the state information 60 (also see FIG. 1 ).
  • step 78 the controller 46 determines whether it is presently operating in step mode. For example, the controller 46 can check the value of a runtime variable to determine whether it is in step mode. If the controller 46 is in step mode, the controller 46 proceeds to steps 80 and 82 . If the controller 46 is not in step mode, the controller 46 proceeds to step 84 .
  • step 80 the controller 46 provides the user with multiple options and proceeds to step 82 .
  • the controller 46 enables the user to perform a variety of routines or steps (hereinafter referred to as “a routine/step”).
  • a routine/step For example, using the I/O device 44 , the user can restore a state of the data storage system 20 , perform a routine/step, skip a routine/step, run to a particular routine/step, undo a routine/step, show routines/steps, or abort the invoked maintenance procedure 56 .
  • step 82 if the user specifies an routine/step, the controller 46 proceeds to step 84 . Otherwise, the controller 46 proceeds back to step 80 .
  • step 84 the controller 46 performs at least a portion of the invoked maintenance procedure 56 based on the specified routine/step. For example, if the user provides a command specifying that the controller 46 perform a particular routine/step of the invoked maintenance procedure 56 , and the controller 56 responds by performing that routine/step.
  • step 86 the controller 46 determines whether the maintenance procedure 56 is complete. If there are no routines/steps left to perform, the controller 46 ends the maintenance procedure 56 and the procedure 70 terminates. If there is at least one routine/step left to perform, the controller 46 proceeds back to step 78 .
  • the controller 46 when operating in step mode, can cycle through steps 78 , 80 , 82 and 84 multiple times in order to perform all or part of the invoked maintenance procedure 56 .
  • the controller 46 essentially operates as a step engine that enables the user to step through the various phases of the maintenance procedure 56 in a manner similar to stepping through an application using a debugger.
  • the controller 46 i.e., the step engine
  • FIG. 4 shows a graphical user interface (GUI) window 90 which the l/O device 44 of the service processor 24 displays to the user.
  • the GUI window 90 includes a control bar region 92 , a navigation region 94 and a main display region 96 .
  • the main display region 96 includes a hierarchical representation 98 of portions of the data structure 58 and enables the user to navigate among the hierarchical representation 98 in order to access the particular portions of the data structure 58 .
  • the user can expand (i.e., open) and compress (i.e., close) directories, and open (or launch) individual elements of the hierarchical representation 98 , in a manner similar to how folders and files operate in Windows ExplorerTM which is provided by Microsoft Corp. of Redmond, Wash.
  • the user can view a set of routine/step elements 100 belonging to a particular routine/step called “STEPS[ 00 ]” when double-clicking on an image 102 of“STEPS[ 00 ]” using a mouse.
  • Double-clicking on individual elements preferably results in the GUI window 90 prompting the user to provide a new value for that element (e.g., enabling the user to change the value of “SIMULATION_MODE” from “Always” to “Never” if the user wishes to make such a change).
  • the navigation region 94 of the GUI window 90 enables the user to quickly navigate among different portions of the data structure 54 . As shown in FIG. 4, the user has selected “STEPS” in the navigation region 94 which results in the main display region 98 showing a portion of the “Hotcode” maintenance procedure 56 which is associated with routines/steps of the “Hotcode” maintenance procedure 56 .
  • the control bar region 92 of the GUI window 90 enables the user to quickly control the operation of the maintenance procedures 56 (and the maintenance application 54 as well) by simply clicking on particular control buttons. For example, the user can activate a help feature by clicking on “?”, perform a next routine/step in a series of routines/steps by clicking on a forward arrow, undo a previously performed routine/step in the series of routines/steps by clicking on a back arrow, and so on. Further details of the data structure 58 which is represented within the main display region 98 will now be provided with reference to FIG. 5 .
  • FIG. 5 shows a portion 110 of the data structure 58 for a particular maintenance procedure 56 of the maintenance application 54 (also see FIG. 1 ). It should be understood that the data structure 58 preferably includes other portions 110 for other maintenance procedures 56 of the maintenance application 54 , as well as parameters for controlling the general operation of the maintenance application 54 .
  • the data structure portion 110 for the particular maintenance procedure 56 includes a maintenance procedure name 112 , a number 114 of routines/steps in the maintenance procedure 56 , and multiple routines/steps 116 -A, 116 -B, . . . (collectively, routines/steps 116 ).
  • Each routine/step 116 defines how the controller 46 of the service processor 24 operates when performing a particular routine/step of the particular maintenance procedure 56 (e.g., a particular maintenance step when replacing a faulty component, upgrading software, measuring performance, collecting statistics, etc.).
  • each routine/step 116 includes a routine/step identifier 118 , a name 120 of the routine/step 116 , a number 122 of runtime parameters 124 for the routine/step 116 , the runtime parameters 124 themselves, a name 126 of an undo routine/step, a number 128 of runtime parameters in the undo routine/step, and a simulation mode control variable 130 .
  • the routine/step identifier 118 is a pointer to a series of low-level instructions (e.g., the actual code) for the routine/step 116 .
  • the name 120 of the routine/step 116 is preferably a character or text string which the controller 46 displays in the GUI window 90 (e.g., see “Proc_starting_message” in FIG. 4 ).
  • the runtime parameters 124 includes particular parameters or variables used by the routine/step (e.g., the routine/step can include a parameter that identifies a spare disk drive for a routine/step of allocating a spare disk drive when replacing a faulty disk drive).
  • the name 126 of the undo routine/step identifies a routine/step for undoing a state change, i.e., for restoring the state of the data storage system 20 to a state prior to the current routine/step (or “Null Step” if the current routine/step is the first in the maintenance procedure 56 ).
  • the number 128 of runtime parameters indicates how many runtime parameters there are in the set of runtime parameters used by the undo routine/step.
  • the simulation mode control variable 130 allows the user to selectively enable and disable whether the controller 46 actually performs the routine/step (a useful feature when developing the maintenance procedure 56 ).
  • the user can change the values of particular elements of the data structure portion 110 using the I/O device 44 of the service processor 24 .
  • the user can select individual elements by navigating and clicking over the GUI window 90 using a mouse and then entering information (e.g., using a keyboard of the I/O device 44 ).
  • the user e.g., a technician performs maintenance on the data storage system 20 by first activating the service processor 24 and launching the maintenance application 54 using the I/O device 44 . The user then selects a particular maintenance procedure 56 of the maintenance application 54 , and performs various steps of the procedure 70 of FIG. 3 to carry out the maintenance procedure 56 .
  • the controller 46 of the service processor 24 provides the user with multiple options such as performing a routine/step of the maintenance procedure 56 , skipping a routine/step, undoing a routine/step, etc.
  • the controller 46 performs at least a portion of the maintenance procedure 56 in response to the user specifying an option. Further details some of the options available to the user will now be provided with reference to FIGS. 6 through 9.
  • FIGS. 6 though 9 show flowcharts of procedures 140 , 150 , 160 , 170 performed by the controller 46 to carry out, in a particular manner, one or more routines/steps of a currently invoked maintenance procedure 56 on the service processor 24 .
  • Each procedure 140 , 150 , 160 , 170 essentially corresponds to steps 80 , 82 and 84 of the procedure 70 (see FIG. 3) which describe the controller 46 providing multiple options to the user, and then carrying out at least a portion of the currently invoked maintenance procedure 56 in response to a selected option.
  • FIG. 6 shows a procedure 140 for performing a single routine/step of the maintenance procedure 56 on behalf of the user.
  • the controller 46 of the service processor 24 receives, through the I/O device 44 , an individual run command to perform an individual routine/step of a maintenance procedure 56 .
  • the user clicks on a forward arrow of the control bar region 92 of the GUI window 90 of FIG. 4 in order to enter the individual run command.
  • step 144 the controller 46 responds to the individual run command by performing an individual routine/step (rather than running through the entire maintenance procedure 56 ).
  • the controller 46 jumps to a set of instructions identified by the routine/step identifier 118 (e.g., a pointer) of the next routine/step.
  • the next step is the routine/step named “Proc_starting_message”.
  • step 146 the controller 46 stores state information 60 within a file of the service processor memory 48 , i.e., within the data structure 58 (also see FIG. 1 ).
  • the controller 46 writes only state information 60 for the individual routine/step that was just performed (in order to store state variables, procedure definitions, etc. for the individual routine/step that was just performed).
  • the controller 46 writes the entire data structure portion 110 for the currently invoked maintenance procedure 56 .
  • the maintenance procedure 56 is subsequently terminated prior to completion, the user can recover the state of the data storage system 20 by invoking the maintenance procedure 56 of the maintenance application 54 and reading the data structure portion 110 of the maintenance procedure 56 from the memory 48 . Accordingly, the user can then complete the maintenance procedure 56 by picking up somewhere in the middle of the maintenance procedure 56 without having to restart the maintenance procedure 56 from scratch or manually complete servicing without assistance of the maintenance procedure 56 as in conventional approaches.
  • FIG. 7 shows a procedure 150 for performing a skip command on behalf of the user.
  • the controller 46 receives a command to skip (or to bypass) a routine/step of the maintenance procedure 56 .
  • the user can enter a skip command to skip “STEP[ 01 ]” by clicking on “STEP[ 02 ]” and then clicking on the check mark in the control bar region 92 .
  • step 154 the controller 46 responds to the skip command by bypassing the routine/step (e.g., “STEP[ 01 ]”) identified by the skip command and proceeding to a next step (e.g., “STEP[ 02 ]”).
  • routine/step e.g., “STEP[ 01 ]”
  • next step e.g., “STEP[ 02 ]”.
  • step 156 the controller 46 stores state information 60 , e.g., the data structure portion 110 of FIG. 5 (also see FIG. 1 ). Such storing of state information enables the user to return the data storage system 20 to the state that existed immediately after the procedure 150 was performed.
  • state information 60 e.g., the data structure portion 110 of FIG. 5 (also see FIG. 1 ).
  • FIG. 8 shows a procedure 160 for performing a continue command on behalf of the user.
  • the controller 46 receives a continue command from the user. For example, when the maintenance procedure 56 is operating in continue mode rather than step mode, the user clicks on a forward arrow of the control bar region 92 of the GUI window 90 of FIG. 4 in order to enter the continue command.
  • step 164 the controller 46 responds to the continue command by performing a series of routines/steps.
  • the controller 46 attempts to run the maintenance procedure 56 through to completion.
  • the controller 46 runs until it encounters a routine/step which is identified by the continue command (e.g., by selecting a routine/step and clicking on the forward arrow in the control bar region 92 ).
  • step 166 the controller 46 stores state information 60 .
  • the storing of such state information 60 enables the user to later restore (if desired) the state of the data storage system 20 as it existed just after the procedure 160 completed.
  • FIG. 9 shows a procedure 170 for performing an undo command on behalf of the user.
  • the controller 46 receives the undo command to undo a routine/step of the maintenance procedure 56 .
  • the user clicks on a back arrow of the control bar region 92 of the GUI window 90 of FIG. 4 in order to enter the undo command.
  • step 174 the controller 46 responds to the undo command by first reading state information from the portion 110 of the data structure 58 and returning the data storage system 20 back to an earlier state that existed just after storing the portion 110 .
  • such operation is in accordance to instructions of an undo routine/step for transitioning the state of the data storage system 20 back to the earlier state (see the name 126 of the undo routine/step in FIG. 5 ).
  • step 176 the controller 46 optionally re-stores the state information 60 (e.g., the portion 110 of FIG. 5) in the memory 48 (also see FIG. 1 ). Accordingly, using the procedure 170 of FIG. 9, the user can undo the effects of routine/steps of the maintenance procedure 56 . Further details of the invention will now be provided with reference to an example and FIG. 10 .
  • FIG. 10 shows a state diagram 180 illustrating various states of the data storage system 20 when a user uses a maintenance procedure 56 of the maintenance application 54 to replace a failed disk drive (i.e., a storage device 36 ).
  • a maintenance procedure 56 of the maintenance application 54 to replace a failed disk drive (i.e., a storage device 36 ).
  • the user activates the service processor 24 and invokes a maintenance procedure 56 for replacing a failed disk drive.
  • the controller 46 of the service processor 24 checks to see whether a file associated with the maintenance procedure 54 exists (see step 72 of FIG. 3 ). Since this is the first time the user has run the maintenance procedure 54 , the file does not exist, and the controller 46 creates the file (step 74 of FIG. 3 ).
  • the controller 46 performs the remainder of the maintenance procedure 56 (steps 78 , 84 and 86 of FIG. 3 ).
  • the data storage system 20 is in a bad disk drive state 182 -A.
  • the controller 46 asks the user to invoke a spare disk drive.
  • the user responds by identifying a disk drive for use as a spare.
  • the controller 46 runs an invoke spare routine 184 -A which invokes the identified disk drive as the spare (state transition 184 -A) and, as a result, the data storage system 20 transitions to a spare invoked state 182 -B, as shown in FIG. 10 .
  • the controller 46 selects the spare automatically thus alleviating the user from the burden of selecting the spare.
  • the controller 46 stores the state information 60 of the data storage system 20 in the memory 48 (also see the data structure portion 110 of FIG. 5 ).
  • the controller 46 then runs a copy data routine 184 -B which copies and compares data from a disk drive that mirrored the failed disk drive in order to recover data on the failed disk drive and, as a result, the data storage system 20 transitions to a fully valid spare state 182 -C.
  • the controller 46 runs a replace routine 184 -C which notifies the user to physically replace the failed disk drive, and the user responds by removing the failed disk drive and inserting a new disk drive in its place causing the data storage system 20 to transition to a new disk drive state 182 -D.
  • the controller 46 runs a size verification routine 184 -D which compares the size of the new disk drive to the size of the failed disk drive to confirm that the new disk drive is large enough to hold the recovered data.
  • the data storage system transitions to a correct size state 182 -E.
  • controller 46 runs a copy routine 184 -E which copies the recovered data from the spare disk drive to the new disk drive and, as a result, the data storage system transitions to a fully valid new disk drive state 182 -F.
  • the controller 46 runs a return spare routine 184 -F which makes the spare disk drive available again for other uses and, as a result, the data storage system transitions to a good disk drive state 182 -G. The failed disk drive is thus properly replaced and the maintenance procedure 56 terminates.
  • the disk drive replacement process described above went smoothly but that situations could have arisen that prevented the user from completing the maintenance procedure 56 .
  • the controller 46 reached the new disk drive state 182 -D and stored state information 60 of the data storage system 20 in the memory 48 .
  • the controller 46 determines that new disk drive was smaller than the failed disk drive thus preventing the new disk drive from holding all of the recovered data on the spare, and thus preventing the data storage system 20 from transitioning from the new disk drive state 182 -D to the correct size state 182 -E.
  • the user does not possess another new disk drive of a proper size thus necessitating the user to leave the location of the data storage system 20 to obtain a new disk drive of the proper size.
  • the user can abort the maintenance procedure 56 , or perhaps leave the service processor running until the data storage assembly 22 reboots the service processor 24 due to inactivity after a predetermined amount of time (e.g., 30 minutes).
  • a predetermined amount of time e.g. 30 minutes.
  • the controller 46 terminates the maintenance procedure 56 before it can complete the maintenance procedure 56 thus causing the data storage system 20 to transition to another state 182 (e.g., a replacement failed state).
  • the controller 46 checks to see whether a file associated with the maintenance procedure 54 exists (again, see step 72 of FIG. 3 ). This time the file exists, and the controller 46 reads the data structure 58 from the file (step 76 ) in order to restore the data storage system 20 to the new disk drive state 182 -D. In this manner, the condition of the data storage system 20 has been as it was just after reaching the new disk drive state 182 -D. The user then can then select continue mode and the controller 46 performs the remainder of the maintenance procedure 56 (steps 78 , 84 and 86 ).
  • routines 184 -A, 184 -B, and 184 -C were derived from conventional approaches.
  • the maintenance procedure 56 picked up somewhere in the middle and did not need to re-run earlier-completed routines (see routines 184 -A, 184 -B, and 184 -C).
  • the user did not need to manually complete the disk drive replacement process without the assistance of the maintenance procedure 56 by enlisting the help of a specialist or engineer.
  • the maintenance procedure 56 is robust and provides the user with multiple options. For example, after the user restores the data storage system 20 to the new disk drive state 182 -D, the user can select step mode and single step through the remainder of the maintenance procedure 56 (see steps 80 and 82 of FIG. 3 and the procedure 140 of FIG. 6) using the GUI window 90 of FIG. 4 . As another example, the user can undo routines/steps such as providing the controller 46 with an undo command to transition the data storage system 20 from the new disk drive state 182 -D back to the fully valid spare state 182 -C (also see the procedure 170 of FIG. 9 ). As yet another example, the user can perform other options such as skipping a routine/step, continuing to a particular routine/step, etc.
  • the invention is directed to techniques for accessing a data storage system 20 (e.g., replacing or upgrading a component, installing a new component, changing a configuration, measuring performance, collecting statistics, etc.) using a maintenance procedure 56 that, if aborted prior to completion and after the data storage system 20 transitions to a particular state, can restore the data storage system back to an earlier state and complete the maintenance procedure 56 .
  • a user e.g., a technician
  • if forced to stop the maintenance procedure 56 prior to completion does not need to begin the maintenance procedure 56 from scratch or need to manually complete servicing the data storage system without the assistance of the maintenance procedure 56 .
  • the user can simply continue the maintenance procedure 56 from the earlier state (e.g., where it left off) to complete accessing the data storage system in an automated manner. Accordingly, the user avoids the need for special attention (e.g., telephone assistance from a specialist, manual completion, etc.) that is often required in conventional approaches.
  • special attention e.g., telephone assistance from a specialist, manual completion, etc.
  • the features of the invention, as described above, may be employed in data storage systems, circuits and procedures and other data storage related components such as those manufactured by EMC Corporation of Hopkinton, Massachusetts.
  • data storage assembly 22 was described above as including circuitry having a front-end/back-end topology by way of example only. Other data storage assemblies are suitable for use by the invention as well.
  • the maintenance procedure 56 was described above as being run on the service processor 24 by a user at the location of the data storage system 20 .
  • the user runs the maintenance procedure 56 remotely such as through a remote I/O device that connects to the data storage assembly 22 through a network.
  • the remote I/O device can communicate with the data storage assembly 22 using non-block-based communications such as TCP/IP (e.g., through a network interface of the data storage assembly 22 ) or block-based commands (e.g., in a manner similar to that of a traditional host 26 ).
  • memory 48 was described above as being disk drive memory by way of example only. Other non-volatile forms of memory are suitable for use as well such as magnetic tape, CDs, etc.
  • the data structure 58 was described as residing in the memory 48 of the service processor 24 by way of example only. In other arrangements, the data structure 58 resides in other locations such as in the set of storage devices 36 of the data storage assembly 22 .
  • maintenance procedure 56 was described above as being used to replace a failed disk drive by way of example only.
  • Other maintenance procedures 56 can be used by the invention to perform other types of maintenance tasks such as replacing or upgrading a circuit board or circuit board component, installing a new circuit board or circuit board component, changing a configuration of the data storage system, installing or upgrading software, monitoring system performance, collecting statistics, etc.
  • GUI window 90 of FIG. 4 can provide the user with the ability to edit or create new maintenance procedures 56 .
  • Editing an existing maintenance procedure 56 can involve inserting and/or deleting one or more routines/steps.
  • Creating a new maintenance procedure 56 can involve writing one from scratch or, alternatively, copying an existing maintenance procedure 56 , renaming it and modifying it.

Abstract

A service processor has a memory, and a controller coupled to the memory. The controller is configured to perform part of a maintenance procedure on a data storage system such that a state of the data storage system transitions from a first state to a second state, and store, in a memory, a data structure identifying the second state. The controller is further configured to, after the maintenance procedure is aborted prior to completion of the maintenance procedure and after a transition of the state of the data storage system from the second state to a third state, (i) restore the data storage system to the second state based on the data structure stored in the memory, and (ii) complete the maintenance procedure.

Description

BACKGROUND OF THE INVENTION
A typical data storage system stores and retrieves data for one or more external host devices (or simply hosts). Such a data storage system typically includes processing circuitry and a set of disk drives. In general, the processing circuitry performs load and store operations on the set of disk drives on behalf of the hosts, e.g., block I/O operations using SCSI communications, ESCON communications, Fibre Channel signals, etc.
On occasion, the data storage system may require servicing by a technician. To this end, the technician typically goes to the location where the data storage system resides, and performs a service procedure on the data storage system. For example, the system may require a hardware or software upgrade in order to integrate a design improvement or to fix a design defect. As another example, a circuit board of the processing circuitry or a disk drive may fail and require replacement.
To assist the technician in performing such service procedures, some data storage system manufacturers provide scripts that automate the servicing process. That is, in response to a few electronically entered commands (e.g., instructions typed into a data storage system console device by the technician), the scripts perform a more-detailed and more-complex series of operations. As a result, without extensive knowledge of low-level aspects of the data storage system, the technician can perform a variety of service operations on the data storage system such as upgrading hardware or software, or replacing a defective data storage part by simply providing a few commands (e.g., typing information at a keyboard) and performing some physical work (swapping a failed component with a new component).
For example, suppose that a disk drive of a data storage system fails. A technician can travel to the data storage system and, at the console device of the data storage system, run a conventional script that guides the technician through a disk drive replacement procedure in an automated manner. For one conventional type of data storage system, the script first requires the technician to identify a spare disk drive for use in recovering data on the failed disk drive. After the technician identifies the spare disk drive, the script performs a data recovery procedure to recover the data. Such a recovery procedure may simply involve copying data from a mirror disk drive to the spare disk drive or, alternatively, involve more extensive data recovery operations (e.g., performing a series of logical XOR operations to recover data from related data and parity information). After the data is restored onto the spare disk drive, the script directs the technician to physically remove the failed disk drive and replace it with a new disk drive. After the technician physically replaces failed disk drive with the new disk drive, the script checks the new disk drive to make sure it has an appropriate size (e.g., that the new disk drive is at least as large as the failed disk drive). Next, the script copies the recovered data from the spare disk drive to the new disk drive. Once the data resides on the new disk drive, the script gives back the spare disk drive so that it can be used for other purposes and the disk drive replacement process is complete.
The technician can perform other types of service procedures using other conventional scripts that automate those service procedures in a manner similar to that described above for replacing a disk drive. Other examples of conventional script-driven service procedures include those for upgrading hardware or replacing failed hardware (e.g., circuit boards, etc.) and those for upgrading software (e.g., operating systems, device drivers, application level programs, etc.).
SUMMARY OF THE INVENTION
Unfortunately, there are deficiencies to using the above-described conventional scripts that automate servicing processes. For example, such scripts typically expect a service procedure to complete successfully, or if stopped before completion, to be restarted from the beginning. However, many conventional service procedures can fail in the middle leaving the data storage system in an intermediate state. When in such a state, the service procedure may not work properly if restarted because the service procedure may needed certain parameters of the data storage system to be at certain values which have since changed to values that will cause the service procedure to operate improperly.
For example, suppose that a technician travels to a customer site to replace a bad disk drive of a data storage system. Upon arrival suppose that the technician boots the console device of the data storage system and invokes a disk drive replacement script which is designed to enable the technician to (i) allocate an available spare disk drive and recover data onto the spare disk drive (e.g., copy data from a disk drive that mirrors the failed disk drive), (ii) replace the failed disk drive with a new disk drive, (iii) subsequently transfer the recovered data from the spare disk drive to the new disk drive, and (iv) finally return the spare disk drive to its initially available condition.
The technician may arrive at the customer site and successfully recover the data of the failed disk drive onto a spare disk drive. The technician may then replace the failed disk drive with a new disk drive. If the new disk drive works properly, the technician can then transfer the recovered data to the new disk drive and then return the spare disk drive to complete the service procedure.
However, suppose that the new disk drive was itself defective, i.e., another failed disk drive. Further suppose that the technician does not posses another new disk drive to swap in place of the faulty new disk drive. In this situation, the technician typically leaves the data storage system with the replacement procedure running, and travels back to the office to retrieve another new disk drive. In the meantime, the data storage system may reboot the console device since some data storage systems are programmed to reset a component (e.g., the console device) if there has not been any activity from that component after a predetermined period of time (e.g., 30 minutes).
When the technician returns with the new disk drive, the technician finds that the console device has been rebooted and that the script for replacing a failed disk drive terminated in the middle. If the technician restarts the script, the script would operate improperly. In particular, the script would start at the beginning and require the technician to allocate a spare disk drive. Unfortunately, the technician cannot allocate the initially used spare disk drive since it is already allocated. Furthermore, if a second spare disk drive is available and the technician allocates the second spare disk drive, the data storage system would then have two allocated spare disk drives.
At this point, a typical next step for the technician is to call the home office by telephone, and obtain technical assistance from a specialist such as someone with intimate knowledge of the disk drive replacement process. The specialist would provide detailed instructions that enable the technician to complete the disk drive replacement process by hand (i.e., without further using the script). In particular, the specialist would explain to the technician how to manually replace the second faulty disk drive with the new disk drive. The specialist would then explain how to transfer the recovered data from the spare disk drive to the new disk drive. Finally, the specialist would explain how to return the spare disk drive to an available state in order to manually complete the disk drive replacement procedure.
In some situations, the specialist may not be trained well enough to properly guide the technician through a servicing procedure. In such a situation, the technician may need to talk directly with an engineer. In these situations, the engineer is taken away from attending to other important such as designing new products.
Additionally, the specialist or engineer guiding the technician through completion of the procedure may forget particular steps. For example, the specialist or engineer may forget to ask the technician to verify that the new disk drive is at least the same size as the failed disk drive. If such a verification has not taken place, the technician may have inadvertently replaced the failed disk drive with a new disk drive that is too small. Accordingly, and perhaps after the technician has left the customer location and deemed the data storage system to be properly fixed, an application running on the data storage system may fill up the new disk drive expecting there to be more disk space than what is actually there. Such occurrences would require the technician to return to the customer location to diagnose and fix the problem thus increasing the servicing cost, as well as potentially lose goodwill and result in a reputation for lower quality due to the amount of trouble encountered by the customer.
In contrast to the above-described conventional scripts that attempt to automate the technician's servicing processes but which must either successfully complete, be restarted, or require a technician to manually complete if interrupted in the middle, an embodiment of the present invention is directed to techniques for accessing a data storage system (e.g., upgrading hardware or software, replacing a defective component, etc.) using a maintenance procedure that, if aborted prior to completion and after the data storage system transitions to a particular state, can restore the data storage system back to an earlier state and complete the maintenance procedure. Accordingly, a technician running the maintenance procedure does not need to either manually finish accessing the data storage system or begin the maintenance procedure from scratch. Rather, the technician can simply complete the maintenance procedure from the earlier state thus avoiding the need for taking special action (e.g., telephone assistance, manual completion, etc.).
One arrangement of the invention is directed to a data storage system that includes a data storage assembly which is capable of storing and retrieving data; and a service processor, coupled to the data storage assembly, that accesses the data storage assembly. The service processor has a memory, and a controller coupled to the memory. The controller is configured to perform part of a maintenance procedure on the data storage system such that a state of the data storage system transitions from a first state to a second state, and store, in a memory, a data structure identifying the second state. The controller is further configured to, after the maintenance procedure is aborted prior to completion of the maintenance procedure and after a transition of the state of the data storage system from the second state to a third state, (i) restore the data storage system to the second state based on the data structure stored in the memory, and (ii) complete the maintenance procedure.
In one arrangement, the controller of the service processor is further configured to, prior to performing the part of the maintenance procedure, search for the data structure in the memory to determine whether the maintenance procedure previously aborted. Accordingly, the controller can determine whether the maintenance procedure terminated without completing based on whether it finds the data structure in the memory.
Preferably, the maintenance procedure includes multiple routines. In one arrangement, the controller, when completing the maintenance procedure, is configured to (i) receive, from a user, an individual run command that identifies a routine of the maintenance procedure, and (ii) in response to the individual run command, individually run the routine of the maintenance procedure identified by the individual run command. In one arrangement, the maintenance procedure is configured to (i) receive, from a user, a skip command that identifies a routine of the maintenance procedure, and (ii) in response to the skip command, bypass the routine of the maintenance procedure identified by the skip command. In one arrangement, the maintenance procedure is configured to (i) receive, from a user, a continue command that identifies a routine of the maintenance procedure, and (ii) in response to the continue command, perform at least one of the routines of the maintenance procedure such that the last routine performed is that which is identified by the continue command. In one arrangement, the maintenance procedure is configured to (i) receive an undo command from a user, and (ii) in response to the undo command, return the data storage system to the first state based on the data structure saved in the memory. In one arrangement, the maintenance procedure is configured to save in the memory for each routine of the maintenance procedure: (i) a respective identifier that identifies that routine, (ii) a respective set of runtime variables utilized by that routine when executed, and (iii) a respective set of control variables that identifies how that routine operates relative to other routines of the maintenance procedure.
In one arrangement, the service processor further includes an input/output device coupled to the controller. The controller is further configured to display, in a graphical user interface on the input/output device, a hierarchical representation of portions of the data structure to enable a user to navigate among the hierarchical representation in order to access (i) the respective identifier, (ii) the respective set of runtime variables and (iii) the respective set of control variables for each routine of the maintenance procedure.
The features of the invention, as described above, may be employed in data storage systems, devices and methods and other computer-related components such as those manufactured by EMC Corporation of Hopkinton, Mass.
BRIEF DESCRIPTION OF THE DRAWINGS
The foregoing and other objects, features and advantages of the invention will be apparent from the following more particular description of preferred embodiments of the invention, as illustrated in the accompanying drawings in which like reference characters refer to the same parts throughout the different views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the invention.
FIG. 1 is a block diagram of a data storage system which is suitable for use by the invention.
FIG. 2 is a general state diagram illustrating operating states and state transitions of the data storage system of FIG. 1.
FIG. 3 is a flow chart of a procedure which is performed by a service processor of the data storage system of FIG. 1.
FIG. 4 is a view of a graphical user interface window which is suitable for displaying information to a user of the data storage system of FIG. 1.
FIG. 5 is a block diagram of a data structure which is suitable for storing state information for use by the procedure of FIG. 2.
FIG. 6 is a flowchart of an option for running an individual routine/step which can be carried out by the service processor as part of the procedure of FIG. 2.
FIG. 7 is a flowchart of an option for bypassing an individual routine/step which can be carried out by the service processor as part of the procedure of FIG. 2.
FIG. 8 is a flowchart of an option for performing a series of routines/steps which can be carried out by the service processor as part of the procedure of FIG. 2.
FIG. 9 is a flowchart of an option for returning the data storage system to a previous state which can be carried out by the service processor as part of the procedure of FIG. 2.
FIG. 10 is a state diagram showing an example of various operating states and state transitions of the data storage system of FIG. I when a user of the procedure of FIG. 2 replaces a bad disk drive.
DETAILED DESCRIPTION
The invention is directed to techniques for accessing a data storage system (e.g., replacing or upgrading a component, installing a new component, changing a configuration, measuring performance, collecting statistics, etc.) using a maintenance procedure that, if aborted prior to completion and after the data storage system transitions to a particular state, can restore the data storage system back to an earlier state and complete the maintenance procedure. Accordingly, a user (e.g., a technician), if forced to stop the maintenance procedure prior to completion, does not need to begin the maintenance procedure from scratch or need to manually complete servicing the data storage system without the assistance of the maintenance procedure. Rather, the user can simply continue the maintenance procedure from the earlier state (e.g., where it left off) to complete accessing the data storage system in an automated manner. Accordingly, the user avoids the need for special attention (e.g., telephone assistance from a specialist, manual completion, etc.) that is often required in conventional approaches.
FIG. 1 shows a data storage system 20 which is suitable for use by the invention. The data storage system 20 includes a data storage assembly 22 and a service processor 24. The data storage assembly 22 is capable of storing and retrieving data on behalf of one or more hosts 26 (e.g., servers that operate as front-ends to the data storage system 20). The service processor 24 (e.g., a specially programmed laptop PC) is capable of accessing the data storage system 20 to perform servicing (e.g., upgrading hardware or software, replacing a defective component, measuring performance, etc.).
As shown in FIG. 1 and by way of example only, the data storage assembly 22 has a front-end/back-end topology with an I/O cache therebetween. That is, the data storage assembly 22 includes front-end circuitry 28, a cache 30, back-end circuitry 32, and a set of buses 34. The front-end circuitry 28 and the back-end circuitry 32 are capable of exchanging data and messages through the set of buses 34 and the cache 30. The data storage assembly 22 further includes a set of storage devices 36 (e.g., a set of disk drives) which is capable of storing the data in a non-volatile manner.
The cache 30 (e.g., volatile memory) operates as a buffer that temporarily holds data exchanged between the hosts 26 and the set of storage devices 36. The front-end circuitry 28 operates as an interface between the hosts 26 and the cache 30. Similarly, the back-end circuitry 32 operates as an interface between the cache 30 and the set of storage devices 36.
By way of example only, the front-end circuitry 28 includes multiple front-end circuit boards 38, the cache 30 includes multiple memory circuit boards 40, and the back-end circuitry 32 includes multiple back-end circuit boards 42. Such redundancy provides the data storage system 20 with fault tolerance and load balancing features. The Symmetrix™ which is manufactured by EMC Corporation of Hopkinton, Mass. includes circuitry having a topology similar to that described above, and such circuitry is suitable for use as the data storage assembly 22.
As further shown in FIG. 1, the service processor 24 includes an input/output (l/O) device 44, a controller 46, memory 48 and an interface 50. The l/O device 44 receives information (e.g., commands and data) from a user (e.g., a technician) and provides information (e.g., status, confirmation, etc.) back to the user. The interface 50 (e.g., a network interface card) couples the service processor 24 to the data storage assembly 22 thus enabling the user to access the data storage assembly 22 as well as resources of the service processor 24.
The memory 48 of the service processor 24 stores various memory constructs including an operating system 52, a maintenance application 54 for performing at least one maintenance procedure 56, and a data structure 58 (e.g., a file) containing state information 60. The operating system 52 manages resources of the service processor 24 in order to enable the service processor 24 to run applications such as the maintenance application 54. In one arrangement, the maintenance application 54 includes instructions, and the service processor 24 includes a computer processor that operates in accordance with the instructions to form the controller 46. Further details of how the service processor 24 operates using the maintenance application 54 and the data structure 58 will be provided shortly with reference to FIG. 3.
In one arrangement, a computer program product 62 (e.g., one or more CDROMs, diskettes, tapes, etc.) provides one or more of the above-listed memory constructs to the service processor 24. For example, in one arrangement, the computer program product 62 includes the maintenance application 54. In this arrangement, the application 54 can be installed on the service processor 24, and then invoked to create other memory constructs such as the data structure 58. As an alternative example, the service processor 24 can acquire one or more of the memory constructs (e.g., the maintenance application 54) through other means such as via a download over a network. Further details of the invention will now be provided with reference to FIG. 2.
FIG. 2 shows a state diagram 64 for the data storage system 20. During operation, the data storage system 20 can transition through a number of different states 66. The combination of a particular current state of the data storage assembly 22 and a particular current state of the service processor 24 equals the current state of the entire data storage system 20. When the particular current state of the data storage assembly 22 or of the service processor 24 changes, the data storage system 20 is viewed as going through a transition 68 from one state 66 to another state 66.
For example, suppose that the data storage system 20 initially resides in a fully operational state 66 (e.g., a state 66-A). When a component fails, the data storage system 20, in effect, goes through a transition 68 (e.g., a transition 68-A from the state 66-A to a state 66-B). Suppose that a user then invokes the maintenance application 54 on the service processor 24 in order to run a maintenance procedure 56 for replacing the failed component. When the user invokes the maintenance application 54, the data storage system 20 goes through another transition 68 to another state 66 (e.g., a transition 68-B into a state 66-C), and so on.
When the maintenance application 54 is running on the service processor 24, the user can run particular maintenance procedures 56 in order to access various parts of the data storage system 20. Preferably, the maintenance application 54 includes maintenance procedures 56 for replacing or upgrading components of the data storage system 20, installing new components, changing configurations, measuring performance, and collecting statistics, among other things. Further details of how the service processor 24 operates when a user is running the maintenance application 54 will now be provided with reference to FIG. 3.
FIG. 3 shows a procedure 70 which is performed by the controller 46 of the service processor 24 when a user invokes a maintenance procedure 56 of the maintenance application 54 (e.g., a maintenance procedure 54 for replacing a faulty storage device 36). In step 72, when the user invokes the maintenance procedure 56, the controller 46 determines whether a file associated with the maintenance procedure 56 exists (i.e., whether a data structure 58 containing state information 60 for the invoked maintenance procedure 56 exists). In one arrangement, the controller 46 checks a particular directory of the memory 48 of the service processor 24 for the existence of a file having a particular filename. If the file does not exist, the controller 46 proceeds to step 74. However, if the file exists, the controller 46 proceeds in step 76.
In step 74, when the file does not exist, the controller 46 creates the file associated with the maintenance application 54. In one arrangement, the file is essentially the data structure 58 which contains state information 60 (e.g., state variables, procedure definitions, etc.). In another arrangement, the file includes multiple data structures including the data structure 58 containing the state information 60. For example, the controller 46 can create a file having a particular filename within a particular directory of the memory 48, and store the data structure 58 in that file.
In step 76, when the file already exists, the controller 46 reads the data structure 58 from the file in order to obtain the state information 60 (also see FIG. 1).
After steps 74 and 76, the controller 46 proceeds to step 78. In step 78, the controller 46 determines whether it is presently operating in step mode. For example, the controller 46 can check the value of a runtime variable to determine whether it is in step mode. If the controller 46 is in step mode, the controller 46 proceeds to steps 80 and 82. If the controller 46 is not in step mode, the controller 46 proceeds to step 84.
In step 80, the controller 46 provides the user with multiple options and proceeds to step 82. In particular, the controller 46 enables the user to perform a variety of routines or steps (hereinafter referred to as “a routine/step”). For example, using the I/O device 44, the user can restore a state of the data storage system 20, perform a routine/step, skip a routine/step, run to a particular routine/step, undo a routine/step, show routines/steps, or abort the invoked maintenance procedure 56.
In step 82, if the user specifies an routine/step, the controller 46 proceeds to step 84. Otherwise, the controller 46 proceeds back to step 80.
In step 84, the controller 46 performs at least a portion of the invoked maintenance procedure 56 based on the specified routine/step. For example, if the user provides a command specifying that the controller 46 perform a particular routine/step of the invoked maintenance procedure 56, and the controller 56 responds by performing that routine/step.
In step 86, the controller 46 determines whether the maintenance procedure 56 is complete. If there are no routines/steps left to perform, the controller 46 ends the maintenance procedure 56 and the procedure 70 terminates. If there is at least one routine/step left to perform, the controller 46 proceeds back to step 78.
It should be understood that the controller 46, when operating in step mode, can cycle through steps 78, 80, 82 and 84 multiple times in order to perform all or part of the invoked maintenance procedure 56. When this occurs, the controller 46 essentially operates as a step engine that enables the user to step through the various phases of the maintenance procedure 56 in a manner similar to stepping through an application using a debugger. However, it should be noted that the controller 46 (i.e., the step engine) stores state information in the non-volatile memory 48 after each routine/step is performed (i.e., after safely reaching a new state). Accordingly, if the operation of the maintenance procedure 56 is terminated before completion, the user can restore the state of the data storage system 20 by reading the state information out of the memory 48 and then continue the maintenance procedure 46 from where it left off.
FIG. 4 shows a graphical user interface (GUI) window 90 which the l/O device 44 of the service processor 24 displays to the user. The GUI window 90 includes a control bar region 92, a navigation region 94 and a main display region 96. The main display region 96 includes a hierarchical representation 98 of portions of the data structure 58 and enables the user to navigate among the hierarchical representation 98 in order to access the particular portions of the data structure 58. Preferably, the user can expand (i.e., open) and compress (i.e., close) directories, and open (or launch) individual elements of the hierarchical representation 98, in a manner similar to how folders and files operate in Windows Explorer™ which is provided by Microsoft Corp. of Redmond, Wash.
For example, the main display region 98 in the GUI window 90 of FIG. 4 shows a portion of a maintenance procedure 56 called “Hotcode” which includes 31 routines/steps (i.e., “N_STEPS=31”). The user can view a set of routine/step elements 100 belonging to a particular routine/step called “STEPS[00]” when double-clicking on an image 102 of“STEPS[00]” using a mouse. Double-clicking on individual elements (e.g., “SIMULATION_MODE”) preferably results in the GUI window 90 prompting the user to provide a new value for that element (e.g., enabling the user to change the value of “SIMULATION_MODE” from “Always” to “Never” if the user wishes to make such a change).
The navigation region 94 of the GUI window 90 enables the user to quickly navigate among different portions of the data structure 54. As shown in FIG. 4, the user has selected “STEPS” in the navigation region 94 which results in the main display region 98 showing a portion of the “Hotcode” maintenance procedure 56 which is associated with routines/steps of the “Hotcode” maintenance procedure 56.
The control bar region 92 of the GUI window 90 enables the user to quickly control the operation of the maintenance procedures 56 (and the maintenance application 54 as well) by simply clicking on particular control buttons. For example, the user can activate a help feature by clicking on “?”, perform a next routine/step in a series of routines/steps by clicking on a forward arrow, undo a previously performed routine/step in the series of routines/steps by clicking on a back arrow, and so on. Further details of the data structure 58 which is represented within the main display region 98 will now be provided with reference to FIG. 5.
FIG. 5 shows a portion 110 of the data structure 58 for a particular maintenance procedure 56 of the maintenance application 54 (also see FIG. 1). It should be understood that the data structure 58 preferably includes other portions 110 for other maintenance procedures 56 of the maintenance application 54, as well as parameters for controlling the general operation of the maintenance application 54.
As shown in FIG. 5, the data structure portion 110 for the particular maintenance procedure 56 includes a maintenance procedure name 112, a number 114 of routines/steps in the maintenance procedure 56, and multiple routines/steps 116-A, 116-B, . . . (collectively, routines/steps 116). Each routine/step 116 defines how the controller 46 of the service processor 24 operates when performing a particular routine/step of the particular maintenance procedure 56 (e.g., a particular maintenance step when replacing a faulty component, upgrading software, measuring performance, collecting statistics, etc.).
As further shown in FIG. 5, each routine/step 116 includes a routine/step identifier 118, a name 120 of the routine/step 116, a number 122 of runtime parameters 124 for the routine/step 116, the runtime parameters 124 themselves, a name 126 of an undo routine/step, a number 128 of runtime parameters in the undo routine/step, and a simulation mode control variable 130. Preferably, the routine/step identifier 118 is a pointer to a series of low-level instructions (e.g., the actual code) for the routine/step 116. The name 120 of the routine/step 116 is preferably a character or text string which the controller 46 displays in the GUI window 90 (e.g., see “Proc_starting_message” in FIG. 4). The number 122 of runtime parameters 124 indicates how many runtime parameters there are in a set of runtime parameters used by the next routine/step 116 (e.g., see “N_STEPF_PARAMS=01” in FIG. 5). The runtime parameters 124 includes particular parameters or variables used by the routine/step (e.g., the routine/step can include a parameter that identifies a spare disk drive for a routine/step of allocating a spare disk drive when replacing a faulty disk drive). The name 126 of the undo routine/step identifies a routine/step for undoing a state change, i.e., for restoring the state of the data storage system 20 to a state prior to the current routine/step (or “Null Step” if the current routine/step is the first in the maintenance procedure 56). The number 128 of runtime parameters indicates how many runtime parameters there are in the set of runtime parameters used by the undo routine/step. The simulation mode control variable 130 allows the user to selectively enable and disable whether the controller 46 actually performs the routine/step (a useful feature when developing the maintenance procedure 56).
As mentioned earlier in connection with FIG. 4, the user can change the values of particular elements of the data structure portion 110 using the I/O device 44 of the service processor 24. In particular, the user can select individual elements by navigating and clicking over the GUI window 90 using a mouse and then entering information (e.g., using a keyboard of the I/O device 44).
It should be understood that the user (e.g., a technician) performs maintenance on the data storage system 20 by first activating the service processor 24 and launching the maintenance application 54 using the I/O device 44. The user then selects a particular maintenance procedure 56 of the maintenance application 54, and performs various steps of the procedure 70 of FIG. 3 to carry out the maintenance procedure 56. In particular, in step 82 of FIG. 3, the controller 46 of the service processor 24 provides the user with multiple options such as performing a routine/step of the maintenance procedure 56, skipping a routine/step, undoing a routine/step, etc. In step 84 of FIG. 3, the controller 46 performs at least a portion of the maintenance procedure 56 in response to the user specifying an option. Further details some of the options available to the user will now be provided with reference to FIGS. 6 through 9.
FIGS. 6 though 9 show flowcharts of procedures 140, 150, 160, 170 performed by the controller 46 to carry out, in a particular manner, one or more routines/steps of a currently invoked maintenance procedure 56 on the service processor 24. Each procedure 140, 150, 160, 170 essentially corresponds to steps 80, 82 and 84 of the procedure 70 (see FIG. 3) which describe the controller 46 providing multiple options to the user, and then carrying out at least a portion of the currently invoked maintenance procedure 56 in response to a selected option.
FIG. 6 shows a procedure 140 for performing a single routine/step of the maintenance procedure 56 on behalf of the user. In step 142, the controller 46 of the service processor 24 receives, through the I/O device 44, an individual run command to perform an individual routine/step of a maintenance procedure 56. For example, when the maintenance procedure 56 is operating in step mode, the user clicks on a forward arrow of the control bar region 92 of the GUI window 90 of FIG. 4 in order to enter the individual run command.
In step 144, the controller 46 responds to the individual run command by performing an individual routine/step (rather than running through the entire maintenance procedure 56). In particular, the controller 46 jumps to a set of instructions identified by the routine/step identifier 118 (e.g., a pointer) of the next routine/step. For example, with reference to FIG. 4, the next step is the routine/step named “Proc_starting_message”.
In step 146, the controller 46 stores state information 60 within a file of the service processor memory 48, i.e., within the data structure 58 (also see FIG. 1). In one arrangement, the controller 46 writes only state information 60 for the individual routine/step that was just performed (in order to store state variables, procedure definitions, etc. for the individual routine/step that was just performed). In another arrangement, the controller 46 writes the entire data structure portion 110 for the currently invoked maintenance procedure 56. As a result of either arrangement, if the maintenance procedure 56 is subsequently terminated prior to completion, the user can recover the state of the data storage system 20 by invoking the maintenance procedure 56 of the maintenance application 54 and reading the data structure portion 110 of the maintenance procedure 56 from the memory 48. Accordingly, the user can then complete the maintenance procedure 56 by picking up somewhere in the middle of the maintenance procedure 56 without having to restart the maintenance procedure 56 from scratch or manually complete servicing without assistance of the maintenance procedure 56 as in conventional approaches.
FIG. 7 shows a procedure 150 for performing a skip command on behalf of the user. In step 152, the controller 46 receives a command to skip (or to bypass) a routine/step of the maintenance procedure 56. For example, with reference to FIG. 4, the user can enter a skip command to skip “STEP[01]” by clicking on “STEP[02]” and then clicking on the check mark in the control bar region 92.
In step 154, the controller 46 responds to the skip command by bypassing the routine/step (e.g., “STEP[01]”) identified by the skip command and proceeding to a next step (e.g., “STEP[02]”).
In step 156, the controller 46 stores state information 60, e.g., the data structure portion 110 of FIG. 5 (also see FIG. 1). Such storing of state information enables the user to return the data storage system 20 to the state that existed immediately after the procedure 150 was performed.
FIG. 8 shows a procedure 160 for performing a continue command on behalf of the user. In step 162, the controller 46 receives a continue command from the user. For example, when the maintenance procedure 56 is operating in continue mode rather than step mode, the user clicks on a forward arrow of the control bar region 92 of the GUI window 90 of FIG. 4 in order to enter the continue command.
In step 164, the controller 46 responds to the continue command by performing a series of routines/steps. In one arrangement, the controller 46 attempts to run the maintenance procedure 56 through to completion. In another arrangement, the controller 46 runs until it encounters a routine/step which is identified by the continue command (e.g., by selecting a routine/step and clicking on the forward arrow in the control bar region 92).
In step 166, the controller 46 stores state information 60. The storing of such state information 60 enables the user to later restore (if desired) the state of the data storage system 20 as it existed just after the procedure 160 completed.
FIG. 9 shows a procedure 170 for performing an undo command on behalf of the user. In step 172, the controller 46 receives the undo command to undo a routine/step of the maintenance procedure 56. For example, when the maintenance procedure 56 is operating in step mode, the user clicks on a back arrow of the control bar region 92 of the GUI window 90 of FIG. 4 in order to enter the undo command.
In step 174, the controller 46 responds to the undo command by first reading state information from the portion 110 of the data structure 58 and returning the data storage system 20 back to an earlier state that existed just after storing the portion 110. Preferably, such operation is in accordance to instructions of an undo routine/step for transitioning the state of the data storage system 20 back to the earlier state (see the name 126 of the undo routine/step in FIG. 5).
In step 176, the controller 46 optionally re-stores the state information 60 (e.g., the portion 110 of FIG. 5) in the memory 48 (also see FIG. 1). Accordingly, using the procedure 170 of FIG. 9, the user can undo the effects of routine/steps of the maintenance procedure 56. Further details of the invention will now be provided with reference to an example and FIG. 10.
FIG. 10 shows a state diagram 180 illustrating various states of the data storage system 20 when a user uses a maintenance procedure 56 of the maintenance application 54 to replace a failed disk drive (i.e., a storage device 36). Suppose that the data storage system 20 has a failed disk drive, and that a user arrives at the data storage system 20 to replace the failed disk drive. The user activates the service processor 24 and invokes a maintenance procedure 56 for replacing a failed disk drive. When the maintenance procedure 56 is invoked, the controller 46 of the service processor 24 checks to see whether a file associated with the maintenance procedure 54 exists (see step 72 of FIG. 3). Since this is the first time the user has run the maintenance procedure 54, the file does not exist, and the controller 46 creates the file (step 74 of FIG. 3).
The user then selects continue mode and the controller 46 performs the remainder of the maintenance procedure 56 ( steps 78, 84 and 86 of FIG. 3). Initially the data storage system 20 is in a bad disk drive state 182-A. The controller 46 asks the user to invoke a spare disk drive. The user responds by identifying a disk drive for use as a spare. In response, the controller 46 runs an invoke spare routine 184-A which invokes the identified disk drive as the spare (state transition 184-A) and, as a result, the data storage system 20 transitions to a spare invoked state 182-B, as shown in FIG. 10. (Alternatively, the controller 46 selects the spare automatically thus alleviating the user from the burden of selecting the spare.) After the data storage system 20 reaches each new state, the controller 46 stores the state information 60 of the data storage system 20 in the memory 48 (also see the data structure portion 110 of FIG. 5).
The controller 46 then runs a copy data routine 184-B which copies and compares data from a disk drive that mirrored the failed disk drive in order to recover data on the failed disk drive and, as a result, the data storage system 20 transitions to a fully valid spare state 182-C.
Next, the controller 46 runs a replace routine 184-C which notifies the user to physically replace the failed disk drive, and the user responds by removing the failed disk drive and inserting a new disk drive in its place causing the data storage system 20 to transition to a new disk drive state 182-D.
Then, the controller 46 runs a size verification routine 184-D which compares the size of the new disk drive to the size of the failed disk drive to confirm that the new disk drive is large enough to hold the recovered data. In response, the data storage system transitions to a correct size state 182-E.
Next, the controller 46 runs a copy routine 184-E which copies the recovered data from the spare disk drive to the new disk drive and, as a result, the data storage system transitions to a fully valid new disk drive state 182-F.
Then, the controller 46 runs a return spare routine 184-F which makes the spare disk drive available again for other uses and, as a result, the data storage system transitions to a good disk drive state 182-G. The failed disk drive is thus properly replaced and the maintenance procedure 56 terminates.
It should be understood that the disk drive replacement process described above went smoothly but that situations could have arisen that prevented the user from completing the maintenance procedure 56. For example, suppose that the controller 46 reached the new disk drive state 182-D and stored state information 60 of the data storage system 20 in the memory 48. Additionally suppose that the controller 46 then determines that new disk drive was smaller than the failed disk drive thus preventing the new disk drive from holding all of the recovered data on the spare, and thus preventing the data storage system 20 from transitioning from the new disk drive state 182-D to the correct size state 182-E. Further suppose that the user does not possess another new disk drive of a proper size thus necessitating the user to leave the location of the data storage system 20 to obtain a new disk drive of the proper size. At this point, the user can abort the maintenance procedure 56, or perhaps leave the service processor running until the data storage assembly 22 reboots the service processor 24 due to inactivity after a predetermined amount of time (e.g., 30 minutes). In either case, suppose that the controller 46 terminates the maintenance procedure 56 before it can complete the maintenance procedure 56 thus causing the data storage system 20 to transition to another state 182 (e.g., a replacement failed state).
When the user returns with a new disk drive of proper size, the user reactivates the service processor 24 and invokes the maintenance procedure 56 for replacing the failed disk drive. When the maintenance procedure 56 is invoked, the controller 46 checks to see whether a file associated with the maintenance procedure 54 exists (again, see step 72 of FIG. 3). This time the file exists, and the controller 46 reads the data structure 58 from the file (step 76) in order to restore the data storage system 20 to the new disk drive state 182-D. In this manner, the condition of the data storage system 20 has been as it was just after reaching the new disk drive state 182-D. The user then can then select continue mode and the controller 46 performs the remainder of the maintenance procedure 56 ( steps 78, 84 and 86). Unlike conventional approaches which either must be completed successfully or restarted from scratch, the maintenance procedure 56 picked up somewhere in the middle and did not need to re-run earlier-completed routines (see routines 184-A, 184-B, and 184-C). Furthermore, the user did not need to manually complete the disk drive replacement process without the assistance of the maintenance procedure 56 by enlisting the help of a specialist or engineer.
It should be understood that the maintenance procedure 56 is robust and provides the user with multiple options. For example, after the user restores the data storage system 20 to the new disk drive state 182-D, the user can select step mode and single step through the remainder of the maintenance procedure 56 (see steps 80 and 82 of FIG. 3 and the procedure 140 of FIG. 6) using the GUI window 90 of FIG. 4. As another example, the user can undo routines/steps such as providing the controller 46 with an undo command to transition the data storage system 20 from the new disk drive state 182-D back to the fully valid spare state 182-C (also see the procedure 170 of FIG. 9). As yet another example, the user can perform other options such as skipping a routine/step, continuing to a particular routine/step, etc.
As described above, the invention is directed to techniques for accessing a data storage system 20 (e.g., replacing or upgrading a component, installing a new component, changing a configuration, measuring performance, collecting statistics, etc.) using a maintenance procedure 56 that, if aborted prior to completion and after the data storage system 20 transitions to a particular state, can restore the data storage system back to an earlier state and complete the maintenance procedure 56. Accordingly, a user (e.g., a technician), if forced to stop the maintenance procedure 56 prior to completion, does not need to begin the maintenance procedure 56 from scratch or need to manually complete servicing the data storage system without the assistance of the maintenance procedure 56. Rather, the user can simply continue the maintenance procedure 56 from the earlier state (e.g., where it left off) to complete accessing the data storage system in an automated manner. Accordingly, the user avoids the need for special attention (e.g., telephone assistance from a specialist, manual completion, etc.) that is often required in conventional approaches. The features of the invention, as described above, may be employed in data storage systems, circuits and procedures and other data storage related components such as those manufactured by EMC Corporation of Hopkinton, Massachusetts.
While this invention has been particularly shown and described with references to preferred embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims.
For example, it should be understood that the data storage assembly 22 was described above as including circuitry having a front-end/back-end topology by way of example only. Other data storage assemblies are suitable for use by the invention as well.
Additionally, it should be understood that the maintenance procedure 56 was described above as being run on the service processor 24 by a user at the location of the data storage system 20. In another arrangement, the user runs the maintenance procedure 56 remotely such as through a remote I/O device that connects to the data storage assembly 22 through a network. The remote I/O device can communicate with the data storage assembly 22 using non-block-based communications such as TCP/IP (e.g., through a network interface of the data storage assembly 22) or block-based commands (e.g., in a manner similar to that of a traditional host 26).
Furthermore, it should be understood that the memory 48 was described above as being disk drive memory by way of example only. Other non-volatile forms of memory are suitable for use as well such as magnetic tape, CDs, etc.
Moreover, the data structure 58 was described as residing in the memory 48 of the service processor 24 by way of example only. In other arrangements, the data structure 58 resides in other locations such as in the set of storage devices 36 of the data storage assembly 22.
Additionally, it should be understood that the maintenance procedure 56 was described above as being used to replace a failed disk drive by way of example only. Other maintenance procedures 56 can be used by the invention to perform other types of maintenance tasks such as replacing or upgrading a circuit board or circuit board component, installing a new circuit board or circuit board component, changing a configuration of the data storage system, installing or upgrading software, monitoring system performance, collecting statistics, etc.
Furthermore, it should be understood that the GUI window 90 of FIG. 4 can provide the user with the ability to edit or create new maintenance procedures 56. Editing an existing maintenance procedure 56 can involve inserting and/or deleting one or more routines/steps. Creating a new maintenance procedure 56 can involve writing one from scratch or, alternatively, copying an existing maintenance procedure 56, renaming it and modifying it.

Claims (20)

What is claimed is:
1. A method for accessing a data storage system, the method comprising the steps of:
performing part of a maintenance procedure on the data storage system such that a state of the data storage system transitions from a first state to a second state;
storing, in a memory, a data structure identifying the second state; and
after aborting the maintenance procedure prior to completion of the maintenance procedure and after a transition of the state of the data storage system from the second state to a third state, (i) restoring the data storage system to the second state based on the data structure stored in the memory, and (ii) completing the maintenance procedure;
wherein the maintenance procedure includes multiple routines, and
wherein the step of restoring and completing includes the steps of:
receiving, from a user, an individual run command that identifies a routine of the maintenance procedure; and
in response to the individual run command, individually running the routine of the maintenance procedure identified by the individual run command.
2. The method of claim 1, further comprising the step of:
prior to the step of performing, searching for the data structure in the memory to determine whether the maintenance procedure previously aborted.
3. A method for accessing a data storage system, the method comprising the steps of:
performing part of a maintenance procedure on the data storage system such that a state of the data storage system transitions from a first state to a second state;
storing, in a memory, a data structure identifying the second state; and
after aborting the maintenance procedure prior to completion of the maintenance procedure and after a transition of the state of the data storage system from the second state to a third state, (i) restoring the data storage system to the second state based on the data structure stored in the memory, and (ii) completing the maintenance procedure;
wherein the maintenance procedure includes multiple routines, and
wherein the step of restoring and completing includes the steps of:
receiving, from a user, a skip command that identifies a routine of the maintenance procedure; and
in response to the skip command, bypassing the routine of the maintenance procedure identified by the skip command.
4. A method for accessing a data storage system, the method comprising the steps of:
performing part of a maintenance procedure on the data storage system such that a state of the data storage system transitions from a first state to a second state;
storing, in a memory, a data structure identifying the second state; and
after aborting the maintenance procedure prior to completion of the maintenance procedure and after a transition of the state of the data storage system from the second state to a third state, (i) restoring the data storage system to the second state based on the data structure stored in the memory, and (ii) completing the maintenance procedure;
wherein the maintenance procedure includes a sequence of routines, and
wherein the step of restoring and completing includes the steps of:
receiving, from a user, a continue command that identifies a routine of the maintenance procedure; and
in response to the continue command, performing at least one of the routines of the maintenance procedure such that the last routine performed is that which is identified by the continue command.
5. A method for accessing a data storage system, the method comprising the steps of:
performing part of a maintenance procedure on the data storage system such that a state of the data storage system transitions from a first state to a second state;
storing, in a memory, a data structure identifying the second state; and
after aborting the maintenance procedure prior to completion of the maintenance procedure and after a transition of the state of the data storage system from the second state to a third state, (i) restoring the data storage system to the second state based on the data structure stored in the memory, and (ii) completing the maintenance procedure;
wherein the step of storing the data structure includes saving the data structure in the memory such that the data structure further identifies the first state, wherein the maintenance procedure includes multiple routines, and wherein the method further comprises the steps of:
receiving an undo command from a user; and
in response to the undo command, returning the data storage system to the first state based on the data structure saved in the memory.
6. A method for accessing a data storage system, the method comprising the steps of:
performing part of a maintenance procedure on the data storage system such that a state of the data storage system transitions from a first state to a second state;
storing, in a memory, a data structure identifying the second state; and
after aborting the maintenance procedure prior to completion of the maintenance procedure and after a transition of the state of the data storage system from the second state to a third state, (i) restoring the data storage system to the second state based on the data structure stored in the memory, and (ii) completing the maintenance procedure;
wherein the maintenance procedure includes multiple routines, and
wherein the step of storing the data structure includes the step of:
saving in the memory for each routine of the maintenance procedure:
a respective identifier that identifies that routine;
a respective set of runtime variables utilized by that routine when executed; and
a respective set of control variables that identifies how that routine operates relative to other routines of the maintenance procedure.
7. The method of claim 6, further comprising the step of:
displaying, in a graphical user interface, a hierarchical representation of portions of the data structure to enable a user to navigate among the hierarchical representation in order to access (i) the respective identifier, (ii) the respective set of runtime variables and (iii) the respective set of control variables for each routine of the maintenance procedure.
8. An apparatus for accessing a data storage assembly of a data storage system, the apparatus comprising:
an interface that couples to the data storage assembly of the data storage system;
a memory; and
a controller coupled to the interface and the memory, the controller being configured to:
perform part of a maintenance procedure on the data storage system such that a state of the data storage system transitions from a first state to a second state,
store, in a memory, a data structure identifying the second state, and
after aborting the maintenance procedure prior to completion of the maintenance procedure and after a transition of the state of the data storage system from the second state to a third state, (i) restore the data storage system to the second state based on the data structure stored in the memory, and (ii) complete the maintenance procedure
wherein the maintenance procedure includes multiple routines; and
wherein the controller, when completing the maintenance procedure, is configured to:
receive, from a user, an individual run command that identifies a routine of the maintenance procedure; and
in response to the individual run command, individually run the routine of the maintenance procedure identified by the individual run command.
9. The apparatus of claim 8, wherein the controller is further configured to:
prior to performing the part of the maintenance procedure, search for the data structure in the memory to determine whether the maintenance procedure previously aborted.
10. An apparatus for accessing a data storage assembly of a data storage system, the apparatus comprising:
an interface that couples to the data storage assembly of the data storage system;
a memory; and
a controller coupled to the interface and the memory, the controller being configured to:
perform part of a maintenance procedure on the data storage system such that a state of the data storage system transitions from a first state to a second state,
store, in a memory, a data structure identifying the second state, and
after aborting the maintenance procedure prior to completion of the maintenance procedure and after a transition of the state of the data storage system from the second state to a third state, (i) restore the data storage system to the second state based on the data structure stored in the memory, and (ii) complete the maintenance procedure;
wherein the maintenance procedure includes multiple routines; and
wherein the controller, when completing the maintenance procedure, is configured to:
receive, from a user, a skip command that identifies a routine of the maintenance procedure; and
in response to the skip command, bypass the routine of the maintenance procedure identified by the skip command.
11. An apparatus for accessing a data storage assembly of a data storage system, the apparatus comprising;
an interface that couples to the data storage assembly of the data storage system;
a memory; and
a controller coupled to the interface and the memory, the controller being configured to:
perform part of a maintenance procedure on the data storage system such that a state of the data storage system transitions from a first state to a second state,
store, in a memory, a data structure identifying the second state, and
after aborting the maintenance procedure prior to completion of the maintenance procedure and after a transition of the state of the data storage system from the second state to a third state, (i) restore the data storage system to the second state based on the data structure stored in the memory, and (ii) complete the maintenance procedure;
wherein the maintenance procedure includes a sequence of routines; and
wherein the controller, when completing the maintenance procedure, is configured to:
receive, from a user, a continue command that identifies a routine of the maintenance procedure; and
in response to the continue command, perform at least one of the routines of the maintenance procedure such that the last routine performed is that which is identified by the continue command.
12. An apparatus for accessing a data storage assembly of a data storage system, the apparatus comprising:
an interface that couples to the data storage assembly of the data storage system;
a memory; and
a controller coupled to the interface and the memory, the controller being configured to:
perform part of a maintenance procedure on the data storage system such that a state of the data storage system transitions from a first state to a second state,
store, in a memory, a data structure identifying the second state, and
after aborting the maintenance procedure prior to completion of the maintenance procedure and after a transition of the state of the data storage system from the second state to a third state, (i) restore the data storage system to the second state based on the data structure stored in the memory, and (ii) complete the maintenance procedure;
wherein the controller is further configured to store the data structure in the memory such that the data structure further identifies the first state;
wherein the maintenance procedure includes multiple routines; and
wherein the controller, when completing the maintenance procedure, is configured to:
receive an undo command from a user; and
in response to the undo command, return the data storage system to the first state based on the data structure saved in the memory.
13. An apparatus for accessing a data storage assembly of a data storage system, the apparatus comprising:
an interface that couples to the data storage assembly of the data storage system;
a memory; and
a controller coupled to the interface and the memory, the controller being configured to:
perform part of a maintenance procedure on the data storage system such that a state of the data storage system transitions from a first state to a second state,
store, in a memory, a data structure identifying the second state, and
after aborting the maintenance procedure prior to completion of the maintenance procedure and after a transition of the state of the data storage system from the second state to a third state, (i) restore the data storage system to the second state based on the data structure stored in the memory, and (ii) complete the maintenance procedure;
wherein the maintenance procedure includes multiple routines; and
wherein the controller, when completing the maintenance procedure, is configured to:
save in the memory for each routine of the maintenance procedure:
a respective identifier that identifies that routine;
a respective set of runtime variables utilized by that routine when executed; and
a respective set of control variables that identifies how that routine operates relative to other routines of the maintenance procedure.
14. The apparatus of claim 13, further comprising:
an input/output device coupled to the controller, wherein the controller is further configured to display, in a graphical user interface on the input/output device, a hierarchical representation of portions of the data structure to enable a user to navigate among the hierarchical representation in order to access (i) the respective identifier, (ii) the respective set of runtime variables and (iii) the respective set of control variables for each routine of the maintenance procedure.
15. A data storage system, comprising:
a data storage assembly which is capable of storing and retrieving data; and
a service processor, coupled to the data storage assembly, that accesses the data storage assembly, the service processor having:
a memory; and
a controller coupled to the memory, the controller being configured to:
perform part of a maintenance procedure on the data storage system such that a state of the data storage system transitions from a first state to a second state,
store, in a memory, a data structure identifying the second state, and
after aborting the maintenance procedure prior to completion of the maintenance procedure and after a transition of the state of the data storage system from the second state to a third state, (i) restore the data storage system to the second state based on the data structure stored in the memory, and (ii) complete the maintenance procedure
wherein the controller of the service processor is further configured to store the data structure in the memory such that the data structure further identifies the first state; wherein the maintenance procedure includes multiple routines; and wherein the controller of the service processor,
when completing the maintenance procedure, is configured to:
receive an undo command from a user; and
in response to the undo command, return the data storage system to the first state based on the data structure saved in the memory.
16. The data storage system of claim 15 wherein the controller of the service processor is further configured to:
prior to performing the part of the maintenance procedure, search for the data structure in the memory to determine whether the maintenance procedure previously aborted.
17. A data storage system, comprising:
a data storage assembly which is capable of storing and retrieving data; and
a service processor, coupled to the data storage assembly, that accesses the data storage assembly, the service processor having:
a memory; and
a controller coupled to the memory, the controller being configured to:
perform part of a maintenance procedure on the data storage system such that a state of the data storage system transitions from a first state to a second state,
store, in a memory, a data structure identifying the second state, and
after aborting the maintenance procedure prior to completion of the maintenance procedure and after a transition of the state of the data storage system from the second state to a third state, (i) restore the data storage system to the second state based on the data structure stored in the memory, and (ii) complete the maintenance procedure;
wherein the maintenance procedure includes multiple routines; and
wherein the controller of the service processor, when completing the maintenance procedure, is configured to:
save in the memory for each routine of the maintenance procedure:
a respective identifier that identifies that routine;
a respective set of runtime variables utilized by that routine when executed; and
a respective set of control variables that identifies how that routine operates relative to other routines of the maintenance procedure.
18. The data storage system of claim 17 wherein the service processor further includes:
an input/output device coupled to the controller, wherein the controller is further configured to display, in a graphical user interface on the input/output device, a hierarchical representation of portions of the data structure to enable a user to navigate among the hierarchical representation in order to access (i) the respective identifier, (ii) the respective set of runtime variables and (iii) the respective set of control variables for each routine of the maintenance procedure.
19. A computer program product that includes a computer readable medium having instructions stored thereon for accessing a data storage system, such that the instructions, when carried out by a computer, cause the computer to perform the steps of:
performing part of a maintenance procedure on the data storage system such that a state of the data storage system transitions from a first state to a second state;
storing, in a memory of the computer, a data structure identifying the second state; and
after aborting the maintenance procedure prior to completion of the maintenance procedure and after a transition of the state of the data storage system from the second state to a third state, (i) restoring the data storage system to the second state based on the data structure stored in the memory, and (ii) completing the maintenance procedure;
wherein the maintenance procedure includes multiple routines, and
wherein the step of restoring and completing includes the steps of:
receiving, from a user, an individual run command that identifies a routine of the maintenance procedure; and
in response to the individual run command, individually running the routine of the maintenance procedure identified by the individual run command.
20. The computer program product of claim 1, wherein the instructions, when carried out by a computer, cause the computer to further perform the step of:
prior to the step of performing, searching for the data structure in the memory to determine whether the maintenance procedure previously aborted.
US09/862,813 2001-05-22 2001-05-22 Methods and apparatus for performing a maintenance procedure on a data storage system Expired - Lifetime US6760862B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/862,813 US6760862B1 (en) 2001-05-22 2001-05-22 Methods and apparatus for performing a maintenance procedure on a data storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/862,813 US6760862B1 (en) 2001-05-22 2001-05-22 Methods and apparatus for performing a maintenance procedure on a data storage system

Publications (1)

Publication Number Publication Date
US6760862B1 true US6760862B1 (en) 2004-07-06

Family

ID=32595625

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/862,813 Expired - Lifetime US6760862B1 (en) 2001-05-22 2001-05-22 Methods and apparatus for performing a maintenance procedure on a data storage system

Country Status (1)

Country Link
US (1) US6760862B1 (en)

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030120743A1 (en) * 2001-12-21 2003-06-26 Coatney Susan M. System and method of implementing disk ownership in networked storage
US20050273651A1 (en) * 2004-05-18 2005-12-08 Aristos Logic Corporation Method of implementing XOR based raid algorithms
US20060133285A1 (en) * 2004-12-22 2006-06-22 Cisco Technology, Inc. Method and system for performing circuit upgrade
US7146522B1 (en) * 2001-12-21 2006-12-05 Network Appliance, Inc. System and method for allocating spare disks in networked storage
US20070061526A1 (en) * 2001-12-20 2007-03-15 Coatney Susan M System and method for storing storage operating system data in switch ports
US20070100973A1 (en) * 2002-02-26 2007-05-03 Cordsmeyer Joel E System and method for reliably purging a fault server
US20070194116A1 (en) * 2002-06-04 2007-08-23 Siegfried Arnold Roll back method for a smart card
US20080208931A1 (en) * 2007-02-28 2008-08-28 Henri Han Van Riel Method and system for continuous availability subscription service
US20080209415A1 (en) * 2007-02-28 2008-08-28 Henri Han Van Riel Method and system for remote monitoring subscription service
US20080209409A1 (en) * 2007-02-28 2008-08-28 Henri Han Van Riel Method and system for quality assurance subscription service
US7444420B1 (en) * 2001-06-07 2008-10-28 Emc Corporation Apparatus and method for mirroring and restoring data
US20090282200A1 (en) * 2008-05-09 2009-11-12 Stephen Gouze Luning Storage Device Procurement System
US20100037207A1 (en) * 2008-08-06 2010-02-11 Chambers Jr Howell Jack Apparatus, system and method for integrated customization of multiple disk images independent of operating system type, version or state
US7739554B2 (en) 2007-02-28 2010-06-15 Red Hat, Inc. Method and system for automatic resolution and dispatching subscription service
US7788361B2 (en) 2001-12-21 2010-08-31 Netapp, Inc. System and method for transferring volume ownership in networked storage
US7805511B1 (en) * 2008-04-30 2010-09-28 Netapp, Inc. Automated monitoring and reporting of health issues for a virtual server
US20160364281A1 (en) * 2015-06-11 2016-12-15 Instana, Inc. Application performance management system with dynamic discovery and extension
US9946982B2 (en) 2007-02-28 2018-04-17 Red Hat, Inc. Web-based support subscriptions
US9983988B1 (en) * 2016-06-23 2018-05-29 Amazon Technologies, Inc. Resuming testing after a destructive event
US20180285178A1 (en) * 2017-03-31 2018-10-04 Cae Inc. Method and system for diagnosis of a simulator
US10235262B2 (en) * 2015-06-11 2019-03-19 Instana, Inc. Recognition of operational elements by fingerprint in an application performance management system
US10353762B2 (en) * 2015-06-11 2019-07-16 Instana, Inc. Hierarchical fault determination in an application performance management system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5852650A (en) * 1994-08-23 1998-12-22 Nokia Telecommunications Oy Method for recovering a faulty unit and a recovery system
US6105148A (en) * 1995-06-16 2000-08-15 Lucent Technologies Inc. Persistent state checkpoint and restoration systems
US6205558B1 (en) * 1998-10-07 2001-03-20 Symantec Corporation Recovery of file systems after modification failure

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5852650A (en) * 1994-08-23 1998-12-22 Nokia Telecommunications Oy Method for recovering a faulty unit and a recovery system
US6105148A (en) * 1995-06-16 2000-08-15 Lucent Technologies Inc. Persistent state checkpoint and restoration systems
US6205558B1 (en) * 1998-10-07 2001-03-20 Symantec Corporation Recovery of file systems after modification failure

Cited By (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7444420B1 (en) * 2001-06-07 2008-10-28 Emc Corporation Apparatus and method for mirroring and restoring data
US20070061526A1 (en) * 2001-12-20 2007-03-15 Coatney Susan M System and method for storing storage operating system data in switch ports
US7987323B2 (en) 2001-12-20 2011-07-26 Netapp, Inc. System and method for storing storage operating system data in switch ports
US8380824B1 (en) 2001-12-21 2013-02-19 Netapp, Inc. System and method of implementing disk ownership in networked storage
US7146522B1 (en) * 2001-12-21 2006-12-05 Network Appliance, Inc. System and method for allocating spare disks in networked storage
US20030120743A1 (en) * 2001-12-21 2003-06-26 Coatney Susan M. System and method of implementing disk ownership in networked storage
US7650412B2 (en) 2001-12-21 2010-01-19 Netapp, Inc. Systems and method of implementing disk ownership in networked storage
US7788361B2 (en) 2001-12-21 2010-08-31 Netapp, Inc. System and method for transferring volume ownership in networked storage
US20070100973A1 (en) * 2002-02-26 2007-05-03 Cordsmeyer Joel E System and method for reliably purging a fault server
US20070194116A1 (en) * 2002-06-04 2007-08-23 Siegfried Arnold Roll back method for a smart card
US7455234B2 (en) * 2002-06-04 2008-11-25 Nxp B.V. Roll back method for a smart card
US20050273651A1 (en) * 2004-05-18 2005-12-08 Aristos Logic Corporation Method of implementing XOR based raid algorithms
US20090094479A1 (en) * 2004-05-18 2009-04-09 Sanjay Subbarao Method of implementing xor based raid algorithms
US7827469B2 (en) * 2004-05-18 2010-11-02 Adpt Corporation Method of implementing XOR based RAID algorithms
US7693089B2 (en) * 2004-12-22 2010-04-06 Cisco Technology, Inc. Method and system for performing circuit upgrade
US20060133285A1 (en) * 2004-12-22 2006-06-22 Cisco Technology, Inc. Method and system for performing circuit upgrade
US9946982B2 (en) 2007-02-28 2018-04-17 Red Hat, Inc. Web-based support subscriptions
US7694189B2 (en) * 2007-02-28 2010-04-06 Red Hat, Inc. Method and system for remote monitoring subscription service
US7739554B2 (en) 2007-02-28 2010-06-15 Red Hat, Inc. Method and system for automatic resolution and dispatching subscription service
US11017333B2 (en) 2007-02-28 2021-05-25 Red Hat, Inc. Web-based support subscriptions
US20080208931A1 (en) * 2007-02-28 2008-08-28 Henri Han Van Riel Method and system for continuous availability subscription service
US20080209409A1 (en) * 2007-02-28 2008-08-28 Henri Han Van Riel Method and system for quality assurance subscription service
US8214483B2 (en) 2007-02-28 2012-07-03 Red Hat, Inc. Method and system for continuous availability subscription service
US8276023B2 (en) 2007-02-28 2012-09-25 Red Hat, Inc. Method and system for remote monitoring subscription service
US20080209415A1 (en) * 2007-02-28 2008-08-28 Henri Han Van Riel Method and system for remote monitoring subscription service
US8578337B2 (en) 2007-02-28 2013-11-05 Red Hat, Inc. Method and system for quality assurance subscription service
US7805511B1 (en) * 2008-04-30 2010-09-28 Netapp, Inc. Automated monitoring and reporting of health issues for a virtual server
US8782471B2 (en) * 2008-05-09 2014-07-15 Dell Products L.P. Storage device procurement system
US20090282200A1 (en) * 2008-05-09 2009-11-12 Stephen Gouze Luning Storage Device Procurement System
US9317274B2 (en) * 2008-08-06 2016-04-19 Lenovo (Singapore) Pte. Ltd. Apparatus, system and method for integrated customization of multiple disk images independent of operating system type, version or state
US20100037207A1 (en) * 2008-08-06 2010-02-11 Chambers Jr Howell Jack Apparatus, system and method for integrated customization of multiple disk images independent of operating system type, version or state
US20160364281A1 (en) * 2015-06-11 2016-12-15 Instana, Inc. Application performance management system with dynamic discovery and extension
US10235262B2 (en) * 2015-06-11 2019-03-19 Instana, Inc. Recognition of operational elements by fingerprint in an application performance management system
US10353762B2 (en) * 2015-06-11 2019-07-16 Instana, Inc. Hierarchical fault determination in an application performance management system
US10671470B2 (en) * 2015-06-11 2020-06-02 Instana, Inc. Application performance management system with dynamic discovery and extension
US10817396B2 (en) 2015-06-11 2020-10-27 Instana, Inc. Recognition of operational elements by fingerprint in an application performance management system
US11138058B2 (en) 2015-06-11 2021-10-05 Instana, Inc. Hierarchical fault determination in an application performance management system
US9983988B1 (en) * 2016-06-23 2018-05-29 Amazon Technologies, Inc. Resuming testing after a destructive event
US20180285178A1 (en) * 2017-03-31 2018-10-04 Cae Inc. Method and system for diagnosis of a simulator
US10908981B2 (en) * 2017-03-31 2021-02-02 Cae Inc. Method and system for diagnosis of a simulator

Similar Documents

Publication Publication Date Title
US6760862B1 (en) Methods and apparatus for performing a maintenance procedure on a data storage system
US7650531B2 (en) System and method for automatically restoring hard drives on failure
US6205558B1 (en) Recovery of file systems after modification failure
US8549237B2 (en) Method and apparatus for use in data transfer
US6990611B2 (en) Recovering data from arrays of storage devices after certain failures
US8589913B2 (en) Tracking block-level writes
JP3737741B2 (en) Method and apparatus for creating backup copy
US6851073B1 (en) Extensible system recovery architecture
JP5757509B2 (en) System reset
US5907679A (en) Hard drive upgrade system
US7661018B2 (en) Method, apparatus and program storage device for providing automatic recovery from premature reboot of a system during a concurrent upgrade
CN102929665B (en) For the system of drive installation
US7565565B2 (en) Automated error recovery of a licensed internal code update on a storage controller
JP4620430B2 (en) Apparatus, system, method, recording medium, and program for high-speed loading of adapter
CN101647013A (en) Bookmark and configuration file for installation sequence
CN104461402B (en) A kind of method for adjusting disk order under Linux system between multi-controller
US6862690B1 (en) Hierarchical recovery method for fibre-channel devices
US20050166016A1 (en) Storage unit, storage unit control method, and storage system
KR100234634B1 (en) I/o device with test/recovery function
US8145602B2 (en) Storage apparatus, data restoration method and computer system
JP3048792B2 (en) Method of automatically replacing operating system and computer system using the same
US7313725B2 (en) Replacement restoration disk drive and method
US7389442B1 (en) Apparatus and method for self diagnosis, repair, removal by reversion of computer problems from desktop and recovery from booting or loading of operating system errors by removable media
KR100331734B1 (en) Disk driving apparatus which can update control information and the method thereof
JP2853527B2 (en) Automatic file failure recovery system

Legal Events

Date Code Title Description
AS Assignment

Owner name: EMC CORPORATION, MASSACHUSETTS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SCHREIBER, MOSHE;SHATIL, AROD;SQUAZZIN, STEFANO;REEL/FRAME:011839/0419

Effective date: 20010521

STCF Information on status: patent grant

Free format text: PATENTED CASE

CC Certificate of correction
FPAY Fee payment

Year of fee payment: 4

REMI Maintenance fee reminder mailed
FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 8

FPAY Fee payment

Year of fee payment: 12

AS Assignment

Owner name: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT, NORTH CAROLINA

Free format text: SECURITY AGREEMENT;ASSIGNORS:ASAP SOFTWARE EXPRESS, INC.;AVENTAIL LLC;CREDANT TECHNOLOGIES, INC.;AND OTHERS;REEL/FRAME:040134/0001

Effective date: 20160907

Owner name: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT, TEXAS

Free format text: SECURITY AGREEMENT;ASSIGNORS:ASAP SOFTWARE EXPRESS, INC.;AVENTAIL LLC;CREDANT TECHNOLOGIES, INC.;AND OTHERS;REEL/FRAME:040136/0001

Effective date: 20160907

Owner name: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLAT

Free format text: SECURITY AGREEMENT;ASSIGNORS:ASAP SOFTWARE EXPRESS, INC.;AVENTAIL LLC;CREDANT TECHNOLOGIES, INC.;AND OTHERS;REEL/FRAME:040134/0001

Effective date: 20160907

Owner name: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., A

Free format text: SECURITY AGREEMENT;ASSIGNORS:ASAP SOFTWARE EXPRESS, INC.;AVENTAIL LLC;CREDANT TECHNOLOGIES, INC.;AND OTHERS;REEL/FRAME:040136/0001

Effective date: 20160907

AS Assignment

Owner name: EMC IP HOLDING COMPANY LLC, MASSACHUSETTS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:EMC CORPORATION;REEL/FRAME:040203/0001

Effective date: 20160906

AS Assignment

Owner name: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., T

Free format text: SECURITY AGREEMENT;ASSIGNORS:CREDANT TECHNOLOGIES, INC.;DELL INTERNATIONAL L.L.C.;DELL MARKETING L.P.;AND OTHERS;REEL/FRAME:049452/0223

Effective date: 20190320

Owner name: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., TEXAS

Free format text: SECURITY AGREEMENT;ASSIGNORS:CREDANT TECHNOLOGIES, INC.;DELL INTERNATIONAL L.L.C.;DELL MARKETING L.P.;AND OTHERS;REEL/FRAME:049452/0223

Effective date: 20190320

AS Assignment

Owner name: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., TEXAS

Free format text: SECURITY AGREEMENT;ASSIGNORS:CREDANT TECHNOLOGIES INC.;DELL INTERNATIONAL L.L.C.;DELL MARKETING L.P.;AND OTHERS;REEL/FRAME:053546/0001

Effective date: 20200409

AS Assignment

Owner name: WYSE TECHNOLOGY L.L.C., CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058216/0001

Effective date: 20211101

Owner name: SCALEIO LLC, MASSACHUSETTS

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058216/0001

Effective date: 20211101

Owner name: MOZY, INC., WASHINGTON

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058216/0001

Effective date: 20211101

Owner name: MAGINATICS LLC, CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058216/0001

Effective date: 20211101

Owner name: FORCE10 NETWORKS, INC., CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058216/0001

Effective date: 20211101

Owner name: EMC IP HOLDING COMPANY LLC, TEXAS

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058216/0001

Effective date: 20211101

Owner name: EMC CORPORATION, MASSACHUSETTS

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058216/0001

Effective date: 20211101

Owner name: DELL SYSTEMS CORPORATION, TEXAS

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058216/0001

Effective date: 20211101

Owner name: DELL SOFTWARE INC., CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058216/0001

Effective date: 20211101

Owner name: DELL PRODUCTS L.P., TEXAS

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058216/0001

Effective date: 20211101

Owner name: DELL MARKETING L.P., TEXAS

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058216/0001

Effective date: 20211101

Owner name: DELL INTERNATIONAL, L.L.C., TEXAS

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058216/0001

Effective date: 20211101

Owner name: DELL USA L.P., TEXAS

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058216/0001

Effective date: 20211101

Owner name: CREDANT TECHNOLOGIES, INC., TEXAS

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058216/0001

Effective date: 20211101

Owner name: AVENTAIL LLC, CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058216/0001

Effective date: 20211101

Owner name: ASAP SOFTWARE EXPRESS, INC., ILLINOIS

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058216/0001

Effective date: 20211101

AS Assignment

Owner name: SCALEIO LLC, MASSACHUSETTS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061324/0001

Effective date: 20220329

Owner name: EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.), TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061324/0001

Effective date: 20220329

Owner name: EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC), MASSACHUSETTS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061324/0001

Effective date: 20220329

Owner name: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.), TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061324/0001

Effective date: 20220329

Owner name: DELL PRODUCTS L.P., TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061324/0001

Effective date: 20220329

Owner name: DELL INTERNATIONAL L.L.C., TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061324/0001

Effective date: 20220329

Owner name: DELL USA L.P., TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061324/0001

Effective date: 20220329

Owner name: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.), TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061324/0001

Effective date: 20220329

Owner name: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.), TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061324/0001

Effective date: 20220329

AS Assignment

Owner name: SCALEIO LLC, MASSACHUSETTS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061753/0001

Effective date: 20220329

Owner name: EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.), TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061753/0001

Effective date: 20220329

Owner name: EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC), MASSACHUSETTS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061753/0001

Effective date: 20220329

Owner name: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.), TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061753/0001

Effective date: 20220329

Owner name: DELL PRODUCTS L.P., TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061753/0001

Effective date: 20220329

Owner name: DELL INTERNATIONAL L.L.C., TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061753/0001

Effective date: 20220329

Owner name: DELL USA L.P., TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061753/0001

Effective date: 20220329

Owner name: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.), TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061753/0001

Effective date: 20220329

Owner name: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.), TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061753/0001

Effective date: 20220329