US8112665B1 - Methods and systems for rapid rollback and rapid retry of a data migration - Google Patents

Methods and systems for rapid rollback and rapid retry of a data migration Download PDF

Info

Publication number
US8112665B1
US8112665B1 US12/842,424 US84242410A US8112665B1 US 8112665 B1 US8112665 B1 US 8112665B1 US 84242410 A US84242410 A US 84242410A US 8112665 B1 US8112665 B1 US 8112665B1
Authority
US
United States
Prior art keywords
dataset
migration
sss
data
dss
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.)
Active
Application number
US12/842,424
Inventor
Nagender Somavarapu
Anurag Palsule
Mudhiganti Devender Reddy
Mohammed Nazeem
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.)
NetApp Inc
Original Assignee
NetApp Inc
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 NetApp Inc filed Critical NetApp Inc
Priority to US12/842,424 priority Critical patent/US8112665B1/en
Assigned to NETAPP, INC. reassignment NETAPP, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: NAZEEM, MOHAMMED, PALSULE, ANURAG, REDDY, MUDHIGANTI DEVENDER, SOMAVARAPU, NAGENDER
Application granted granted Critical
Publication of US8112665B1 publication Critical patent/US8112665B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms

Definitions

  • At least one embodiment of the present invention pertains to data migration, and more particularly, to methods and systems for rapidly rolling back and retrying a migration of data between storage systems.
  • Online data migration is the process of transferring data between storage systems in a networked environment.
  • Data migration is usually performed programmatically to achieve an automated migration, freeing up human resources from tedious and often time-consuming tasks.
  • Data migration may be required when, for example, organizations or individuals change computer systems or when it is determined, by capacity planning, that additional data resources are required for an existing computer system.
  • Non-disruptive data motion is the process of performing an online data migration that is virtually transparent to a client accessing the data.
  • the client is unaware of the migration process and can access the data throughout the migration process.
  • a computer network is typically utilized as a transport mechanism for data migration between storage systems.
  • the duration of the migration process can exceed tolerable levels, in some cases lasting for days or weeks.
  • an unforeseen problem emerges, necessitating a reversion (“rollback” of the migration), to the source storage system.
  • rollback of the migration
  • one such problem could be that, after the destination storage system is in operation for several hours or days after the migration from the source storage system, an administrator determines that the destination storage system lacks sufficient capacity to store data at a current or future data growth rate.
  • Another problem may relate to unexpectedly slow performance, at the destination storage system, of a migrated application or dataset. In these cases, it is desirable to revert back to utilizing the source storage system, at least until the unforeseen problem is addressed.
  • a user file may be copied.
  • the user file may include of, for example, a document, email, spreadsheet, or another form of electronic information.
  • the user may access the file and modify the file's content. For example, the user may append a graph to the document, reply to the email, or add a new calculation to the spreadsheet.
  • the retry migration in the conventional system involves copying a complete dataset of the source storage system to the destination storage system.
  • the user may perform additional modification to one or more user files located at the source storage system. The user may, for example, further modify the graph previously added to the document, receive a response to the email reply, or alter a value used by the spreadsheet calculation. These modifications must be copied during the retry migration to maintain data integrity.
  • the first storage system upon receiving a request at a provisioning manager to perform a rollback of a first data migration from a first storage system to a second storage system, merges, to a baseline dataset at the first storage system, a first incremental dataset received by the second storage system after the first data migration. Throughout the migration rollback the data of the baseline dataset and the incremental data are made available to a client and an application.
  • the second storage system upon receiving a request at a provisioning manager to perform a retry of the data migration from the first storage system to the second storage system, merges a second incremental dataset received to the first storage system with data previously received to the second storage system. Throughout the migration retry the data of the baseline dataset, first incremental dataset, and second incremental dataset are made available to the client such that non-disruptive data motion is maintained.
  • the solution presented here overcomes the time-consuming data migration problems of the prior art by removing the baseline dataset from the rollback and retry migration processes.
  • the provisioning manager determines whether the baseline dataset remains at the source storage system. If the baseline dataset remains at the source storage system the provisioning manager directs the source storage system to migrate, from the destination storage system, only modifications (incremental data) made to the baseline dataset. By skipping the large baseline dataset, the duration of the rollback migration is significantly decreased from that of the initial first data migration because the incremental dataset is typically a fraction of the size of the baseline dataset.
  • the provisioning manager utilizes existing data on the destination storage system, removing the necessity of copying duplicative data from the source storage system.
  • the only data migrated during the retry migration is incremental data received to the source storage system after the performance of the rollback migration.
  • Utilizing data on a storage system that remains after a previous data migration resolves the problem of time-consuming rollback and retry migrations, because only incremental data is copied during the rollback and retry migration processes.
  • FIG. 1 illustrates a network storage environment in which the present invention can be implemented.
  • FIG. 2 is a high-level block diagram showing an example of the hardware architecture of a storage system that can implement the source storage server or the destination storage system.
  • FIG. 3 is a high-level block diagram showing an example of the hardware architecture of a provisioning manager.
  • FIG. 4 illustrates an example of the network storage environment performing a rapid rollback of a first data migration.
  • FIG. 5 illustrates an example of the network storage environment performing a rapid retry after the performance of the rapid rollback.
  • FIG. 6 is a flow diagram illustrating a process for a provisioning manager performing a first data migration, a rollback of the first data migration, and a retry of the first data migration.
  • FIG. 7 is a flow diagram illustrating a process for the source and destination storage systems performing a first data migration, a rollback of the first data migration, and a retry of the first data migration.
  • FIG. 1 shows a network configuration in which the techniques introduced here can be implemented. It is noted that the network environment described here is for illustration of one type of a configuration in which the techniques can be implemented, and that other network storage configurations and schemes can be used for implementing the techniques.
  • FIG. 1 shows a network data storage environment, which includes a client system 108 , a source storage system (SSS) 102 , a destination storage system (DSS) 104 , a provisioning manager (PM) 106 , an optional server ( 110 ), and computer network 100 connecting the client system 108 , SSS 102 , DSS 104 , PM 106 and optional server 110 .
  • SSS source storage system
  • DSS destination storage system
  • PM provisioning manager
  • 110 optional server
  • computer network 100 connecting the client system 108 , SSS 102 , DSS 104 , PM 106 and optional server 110 .
  • the storage systems 102 and 104 each may be, for example, one of the FAS family of storage server products available from NetApp, Inc of Sunnyvale, Calif.
  • the SSS 102 and DSS 104 connect to the client system 108 , PM 106 and optional server 110 via the computer network 100 , which can be, for example, a local area network (LAN), wide area network (WAN), or a global area network, such as the Internet, and can make use of any conventional or non-conventional network technologies.
  • LAN local area network
  • WAN wide area network
  • Internet global area network
  • a server 110 is connected, via a network 100 , to a client 108 and storage systems 102 and 104 .
  • the server 110 contains an application 118 running in memory and in communication with application data 422 and the client 108 .
  • the client interacts with the application 118 , via the network 100 , for services provided by the application 118 .
  • the application 118 can be an email application, such as Microsoft Exchange®, that provides email services to the client 108 .
  • the application data generated or used by application 118 includes electronic mail-boxes that hold email messages updated via the application 118 .
  • the application 118 is located on a storage device of storage system 102 or 104 . It should be noted that the application 118 is not limited to an email application and may be essentially any computer application capable of receiving input from a client 108 and storing application data 422 on a storage system.
  • the storage systems 102 and 104 can make available, to the client 108 and application 118 , some or all of the storage space of each respective storage system.
  • each of the non-volatile mass storage devices 112 and 114 can be implemented as one or more disks (e.g., a RAID group) or any other suitable mass storage device(s).
  • some or all of the mass storage devices 112 and 114 can be other types of storage, such as flash memory, SSDs, tape storage, etc.
  • the storage systems 102 and 104 can communicate with the client 108 and application 118 according to well-known protocols, such as the Network File System (NFS) protocol or the Common Internet File System (CIFS) protocol, to make data stored on the storage devices 112 and 114 available to client and/or application programs 118 .
  • protocols such as the Network File System (NFS) protocol or the Common Internet File System (CIFS) protocol, to make data stored on the storage devices 112 and 114 available to client and/or application programs 118 .
  • Various functions and configuration settings of the storage systems 102 and 104 can be controlled from a provisioning manager 106 coupled to the network 100 .
  • a data migration operation can be initiated from the provisioning manager 106 .
  • FIG. 2 is a diagram illustrating an example of a physical storage system 200 that can implement one or more of the SSS 102 and DSS 104 .
  • the storage system 200 is a server-class computer system that includes a processor subsystem that includes one or more processors 208 .
  • the storage system 200 further includes a memory 210 , a network adapter 204 , and a storage adapter 202 , all interconnected by an interconnect 214 .
  • the storage system 200 can be embodied as a single- or multi-processor storage system executing a storage operating system 212 that preferably implements a high-level module, such as a storage manager, to logically organize the information as a hierarchical structure of named directories, files and special types of files called virtual disks on the non-volatile mass storage device 201 .
  • a storage operating system 212 that preferably implements a high-level module, such as a storage manager, to logically organize the information as a hierarchical structure of named directories, files and special types of files called virtual disks on the non-volatile mass storage device 201 .
  • the memory 210 illustratively comprises storage locations that are addressable by the processors 208 and adapters 202 and 204 for storing software program code and data structures associated with the present invention.
  • the processor 208 and adapters may, in turn, comprise processing elements and/or logic circuitry configured to execute the software code and manipulate the data structures.
  • the storage operating system 212 portions of which are typically resident in memory and executed by the processor(s) 208 , functionally organizes the storage system 200 by (among other things) configuring the processor(s) 208 to invoke storage related operations in support of the application 118 , which may optionally reside on server 110 , or in the memory 210 of the storage system 200 . It will be apparent to those skilled in the art that other processing and memory implementations, including various computer readable storage media, may be used for storing and executing program instructions pertaining to the technique introduced here.
  • the network adapter 204 includes a plurality of ports to couple the storage system 200 to the client 108 over a network, such as a wide area network, virtual private network implemented over a public network (Internet) or a shared local area network. Additionally, the network adapter 204 , or a separate additional adapter, is further configured to connect, via the network 100 , the SSS 102 with the DSS 104 .
  • the network adapter 204 thus can include the mechanical, electrical and signaling circuitry needed to connect the storage system 200 to the network 100 .
  • the network 100 can be embodied as an Ethernet network or a Fibre Channel (FC) adapter, for example.
  • Each client 204 can communicate with the application 118 , via the network 100 by, exchanging discrete frames or packets of data according to pre-defined protocols, such as TCP/IP.
  • the storage adapter 202 cooperates with the storage operating system 212 to access information requested by the client 108 and application 118 .
  • the information may be stored on any type of attached array of writable storage media, such as magnetic disk or tape, optical disk (e.g., CD-ROM or DVD), flash memory, solid-state disk (SSD), electronic random access memory (RAM), micro-electro mechanical and/or any other similar media adapted to store information, including data and parity information.
  • the information is stored on non-volatile mass storage device 201 .
  • the storage operating system 212 facilitates the client's and the application's access to data stored on the non-volatile mass storage device 201 .
  • the storage operating system 212 implements a write-anywhere file system that cooperates with one or more virtualization modules to “virtualize” the storage space provided by the non-volatile mass storage device 201 .
  • the storage operating system 212 is a version of the Data ONTAP® operating system available from NetApp, Inc. implementing the Write Anywhere File Layout (WAFL®) file system.
  • WAFL® Write Anywhere File Layout
  • FIG. 3 is a diagram illustrating the internal architecture 300 of the provisioning manager (PM) 106 .
  • the PM includes software in memory of a server 110 that is executed by a processor in accordance with the present invention.
  • PM includes a processor subsystem that includes one or more processors 302 .
  • the PM 300 further includes an input module 301 , memory 304 , a detection module 310 , a network adapter 312 , a storage system migration module (SSMM) 314 , and a display module 316 all interconnected by an interconnect 318 and powered by a power supply 308 .
  • SSMM storage system migration module
  • the provisioning manager 300 can be embodied as a single- or multi-processor storage system executing an operating system 306 stored in the memory 304 .
  • the processor 302 and adapters may, in turn, comprise processing elements and/or logic circuitry configured to execute the software code and manipulate the data structures.
  • the operating system 306 portions of which are typically resident in memory and executed by the processor(s) 302 , functionally organizes the provisioning manager by (among other things) configuring the processor(s) 302 to invoke storage operations to migrate data between non-volatile mass storage devices 112 and 114 ( FIG. 1 ). It will be apparent to those skilled in the art that other processing and memory implementations, including various computer readable storage media, may be used for storing and executing program instructions pertaining to the technique introduced here.
  • the network adapter 312 includes a plurality of ports to couple the PM to the storage systems 102 and 104 over a wide area networks, virtual private network implemented over a public network (Internet) or a shared local area network.
  • the network adapter 312 thus can include the mechanical, electrical and signaling circuitry needed to connect the PM 300 to the network 100 .
  • the input module 301 is configured to receive data from a user selection and communicate the received data to the processor 302 and operating system 306 , via the interconnect 318 .
  • the input module 301 can receive data from, for example, a keyboard, mouse, trackball, touch screen, or any other input device capable of communicating a user selection.
  • the display module 316 is configured to connect to an output device that illustrates a plurality of storage migration options to a user.
  • the output device can be a computer screen, monitor, or projection capable of displaying text and graphical representations of data.
  • the display module 316 outputs storage migration options relating to performing a data migration from the SSS 102 to the DSS 104 , rolling back the data migration from the DSS to the SSS, and retrying the data migration from the SSS to the DSS.
  • the detection module 310 is configured to connect, via the network adapter, to a storage system 200 and determine whether a dataset located on the non-volatile mass storage device 201 was copied to another storage system as part of a previously performed data migration. For example, in one embodiment, the detection module 310 can determine whether a baseline dataset 406 ( FIG. 4 ) is present at the non-volatile mass storage device 112 of SSS 102 is present and whether the baseline dataset was copied to storage device 114 of DSS 104 as part of a previous data migration 422 from the SSS to the DSS.
  • a baseline dataset 406 FIG. 4
  • the detection module 310 can further be configured to determine a storage capacity of a storage system 200 and calculate whether the storage system has adequate capacity to receive data, as part of a data migration, from another storage system.
  • Data Fabric Manager from NetApp, Inc of Sunnyvale, Calif.
  • the PM can determine, based on the stored results, the available storage capacity at the SSS and DSS.
  • the detection module 310 can additionally be configured to resize the storage volume of a storage device 201 to a desirable size to support an impending data migration.
  • the storage adapter 202 cooperates with the storage operating system 212 to access information requested by the client 108 or application 118 .
  • the information may be stored on any type of attached writable storage media, such as magnetic disk or tape, optical disk (e.g., CD-ROM or DVD), flash memory, solid-state disk (SSD), electronic random access memory (RAM), micro-electro mechanical and/or any other similar media adapted to store information, including data and parity information.
  • the information is stored on disks 201 .
  • the storage system migration module (SSMM) 314 is configured to initiate data migrations between the SSS 102 and the DSS 104 .
  • the SSMM is configured to initiate a first data migration between the SSS and the DSS.
  • the SSMM further can be configured to initiate a rollback migration, as illustrated in FIG. 4 , of the first data migration.
  • the SSMM further can be configured to initiate a retry of the first data migration from the SSS to the DSS, as illustrated in FIG. 5 .
  • the SSMM further can be configured to perform a cutover, as further explained herein, from one storage system, such as the SSS 102 , to another storage system, such as the DSS 104 .
  • the SSMM 314 can be configured to perform one or more of the above steps.
  • the SSMM 314 can be a processor 302 , programmed by the operating system 306 or other software stored in memory 304 , to perform the cutover, first migration, rollback migration and retry migration.
  • the SSMM 314 can be special-purpose hardwired circuitry.
  • FIG. 4 illustrates a rollback of a previously performed first data migration 422 .
  • a baseline dataset 406 is copied from the SSS 102 to the DSS 104 .
  • the baseline dataset includes application data 422 accessible to the client 108 and application 118 .
  • the application 118 is part of the baseline dataset.
  • the unforeseen problem may be degraded access times, from the client 108 or application 118 to the first dataset 416 , related to network/system performance lag.
  • an administrator may determine that there is inadequate data capacity, at the DSS 104 , for the projected growth rate of application data 422 .
  • other issues may become manifest only several days after the first data migration and after new data is added, removed or changed at the first dataset 416 . Therefore, a complete rollback from the DSS to the SSS will include the previously migrated data 416 and any incremental data 418 .
  • Incremental data 418 is new data added to an existing dataset, such as the baseline dataset. Incremental data is typically much smaller in size than the baseline data.
  • Data is classified as incremental data through a variety of methods well-known to those in the art familiar with data backup procedures.
  • data is characterized as incremental data based on a data snapshot of the DSS and/or SSS, such as that provided by the SnapshotTM technology available at NetApp, Inc of Sunnyvale, Calif.
  • a snapshot of the DSS stores a point-in-time reference to the data currently at the DSS. New data arriving to the DSS will be received after the snapshot and will be characterized as incremental data.
  • An example of incremental data is an email received to the DSS after the first data migration. Any number of additional modifications can be made to the application data 422 by the client 108 or the application 118 .
  • a rapid rollback of data from the DSS 104 to the SSS 102 is performed by utilizing the baseline dataset 406 at the SSS 102 , thus avoiding the necessity of copying the first dataset 416 from the DSS 104 .
  • an administrator requests 400 , at an input module 301 of the PM, a rollback migration from the DSS to the SSS.
  • the SSMM 314 FIG. 3
  • the rollback request 401 is a request instructing the SSS to perform a rollback migration from the DSS.
  • the rollback request 401 further contains an indicator 402 to avoid coping to the SSS the first dataset 416 of the first data migration because this data is available at the SSS as the baseline dataset.
  • the indicator 402 specifically directs the SSS to copy only the incremental data 418 received after the first data migration.
  • the SSS 102 Upon receipt of the rollback request 401 , the SSS 102 sends to the DSS 104 , a first mirror request 424 to copy, from the DSS, the incremental dataset 418 received after the performance of the first data migration 422 of the baseline dataset.
  • the incremental dataset 418 is data received from the client 108 or application 118 that modifies the first dataset 416 at the DSS 104 .
  • the DSS Upon receipt of the first mirror request 424 by the DSS, the DSS sends to the SSS the requested incremental dataset 418 which is merged into a third dataset 412 , at the SSS 102 , by updating the baseline dataset 406 with the incremental dataset 418 .
  • a cutover is a process of reconfiguring the Network 100 , SSS 102 , and DSS 104 such that a client 108 can access resources of one of the storage systems after one other of the storage systems is brought offline (“decommissioned”).
  • the DSS is decommissioned from the network 100 and the SSS is brought online (“commissioned”).
  • the application data 422 is no longer available to the client 108 or application 118 , and similarly, when the SSS is brought online, the client and application can access the application data 422 from the SSS.
  • the cutover is performed without reconfiguring the application 118 or the client 108 from accessing the application data 422 from the DSS.
  • the Network Adapter IP Address 413 at the SSS, is configured to be identical to the Network Adapter IP Address 420 , at the DSS, thus allowing a client to continue to access the application data 422 during the cutover, without reconfiguring the client.
  • the cutover process does not exceed a maximum duration time equal to a client-timeout time 402 .
  • the client-timeout time is the maximum amount of time that a client 108 can wait for requested data without receiving a network timeout error.
  • the client-timeout time is less than a protocol-timeout time of a protocol used to communicate between the application 118 and a storage system 200 , such as the SSS and the DSS.
  • the protocol-timeout time, and thus the client-timeout time is equal to or less 120 seconds which is a default timeout time utilized by various network protocols such as NFS, and iSCSI.
  • FIG. 5 illustrates a rapid retry of the first data migration 422 .
  • the user or administrator may request a retry 500 of the data migration.
  • a rapid retry is performed by utilizing, at the DSS, the first dataset 416 and the first incremental dataset 418 as part of the data of the retry migration 510 .
  • a retry migration essentially repeated the steps of the initial first data migration 422 and required that the entire baseline dataset 406 be copied from the DSS 104 to the SSS 102 .
  • Utilizing the existing datasets 416 and 418 avoids the necessity of copying the baseline dataset 406 and the second dataset 410 from the SSS. This allows for rapid performance of the retry data migration 510 . If the first dataset 416 and the first incremental dataset 418 are physically present on the DSS, the SSMM 314 sends to the DSS a retry request 501 instructing the DSS to perform a retry migration from the SSS to the DSS.
  • the retry request 501 further contains an indicator 502 to avoid copying, to the DSS, the baseline dataset 406 and the second dataset 410 .
  • the indicator 502 specifically directs the DSS to copy only the second incremental dataset 504 received to the SSS after the rollback migration 426 .
  • the second incremental dataset 504 is data received from the client 108 or application 118 that modifies the baseline dataset 406 and second dataset 410 at the SSS 102 .
  • the second incremental dataset 504 can be a client 108 modification to the application data 422 , at the SSS 102 , such as a graph added to a document or a new calculation added to a spreadsheet.
  • the DSS Upon receipt of the retry request 501 , the DSS sends to the SSS, a second mirror request 508 to copy the second incremental dataset 504 .
  • the SSS responds to the second mirror request 508 by sending to the DSS the second incremental dataset, which is merged at the DSS into a fifth dataset 512 by updating, based on the aforementioned Snapshot technology, the first dataset 416 and first incremental dataset 418 with the second incremental dataset 504 .
  • a cutover is performed as previously described.
  • the SSS is brought offline from the network 100 and the DSS is brought online.
  • the Network Adapter IP Address 420 is configured to be identical to the Network Adapter IP Address 413 , at the SSS.
  • the application data 422 is available to the client 108 and application 118 , except during the client-timeout time 402 .
  • the application data 422 of the baseline dataset 406 is accessible, via the network 100 , by the application 118 and the client 108 .
  • the original baseline dataset 406 containing the application data 422 remains accessible to the client 108 while a copy of the baseline dataset is migrated to the DSS.
  • client 108 and application 118 access to the application data 422 is transitioned, as part of the cutover, from the SSS 102 to the DSS 104 .
  • FIG. 6 is a flow diagram depicting a process for performing, at the PM 106 , a rapid rollback and rapid retry of a migration between the DSS and the SSS.
  • the PM receives at 604 a request to rollback the previously performed first data migration.
  • the request can come from, for example, a user or administrator, via an input device, to the input module 301 .
  • the user or administrator can enter the request using any input device capable of communicating with the input module, such as a touch screen, keyboard, or mouse, for example.
  • the PM determines at 606 whether the data of the first data migration (the baseline data) is located on the SSS 102 .
  • the PM would determine, using the detection module 310 , whether the baseline dataset is still present at the SSS 102 . If it is determined that the baseline dataset is not present at the SSS, the rollback migration 426 may copy both the first dataset 416 and the first incremental dataset 418 from the DSS 104 to the SSS 102 . If the PM determines that the baseline dataset remains on the SSS, the PM sends (step 608 ) to the SSS a rollback request instructing the SSS to copy the data of the DSS while skipping data previously copied during the first data migration.
  • the SSS would then receive a request from the PM to copy only incremental data received to the DSS after the first data migration of the baseline data.
  • the PM performs a cutover (step 610 ) such that client and application access to application data 422 is routed to the SSS.
  • Step 612 is the first step of the process to rapidly retry the first data migration from the SSS to the DSS.
  • the user or administer requests a retry migration at the PM.
  • the detection module 310 determines whether the DSS retains data related to the first data migration and the rollback migration. Particularly, in step 614 , the PM detects that the first dataset and the first incremental dataset are available at the DSS.
  • the PM sends to the DSS a request to copy, from the SSS to the DSS, incremental data received after the performance of the rollback migration.
  • An indicator 502 in the retry request 501 informs the DSS to avoid duplicating the data of the baseline dataset 406 ( FIG. 4 ) and the second dataset 410 .
  • the PM performs a cutover (step 618 ) such that client and application access to application data 422 is routed to the DSS.
  • FIG. 7 is a flow diagram depicting a process for performing, at the SSS and the DSS, a rapid rollback and rapid retry of a first data migration.
  • the SSS receives, from the PM, a request to rollback from the previously performed first data migration (step 704 ).
  • the rollback request includes details of a new migration to perform from the DSS to the SSS.
  • the rollback request includes an indicator informing the SSS to skip data (e.g. the baseline dataset) previously copied from the SSS to the DSS.
  • the SSS copies the requested data from the DSS that is merged, in step 708 , to the baseline dataset.
  • the SSS and DSS are configured, in step 710 , such that the application and client access the application data 422 on the SSS, not the DSS.
  • the application 118 and client 108 can access application data 422 on the SSS without being reconfigured.
  • an application 118 configured to access application data 422 on the DSS can access the application data on the SSS, after the cutover, without any changes being made to the application.
  • the DSS receives a request 501 , from the PM, to retry the data migration (step 712 ).
  • the rollback request includes an indicator 502 informing the DSS to skip data (e.g. the first dataset and first incremental dataset) previously copied during the first data migration and second data migration.
  • the requested data (the second incremental dataset) is copied from the SSS to the DSS where it is merged, in step 716 , with the existing data at the DSS (the first dataset and the first incremental dataset).
  • client and application access to the application data 422 is cutover from the SSS to the DSS.
  • ASICs application-specific integrated circuits
  • PLDs programmable logic devices
  • FPGAs field-programmable gate arrays
  • Machine-readable medium includes any mechanism that can store information in a form accessible by a machine (a machine may be, for example, a computer, network device, cellular phone, personal digital assistant (PDA), manufacturing tool, any device with one or more processors, etc.).
  • a machine-accessible medium includes recordable/non-recordable media (e.g., read-only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; etc.), etc.
  • logic can include, for example, special-purpose hardwired circuitry, software and/or firmware in conjunction with programmable circuitry, or a combination thereof.

Abstract

Methods and systems for rapidly rolling back and retrying a data migration between a first and a second storage system. In one embodiment, upon receiving a request at a provisioning manager to perform a rollback of a first data migration, the first storage system merges, to a baseline dataset, a first incremental dataset received by the second storage system after the first data migration. In another embodiment, upon receiving a request at a provisioning manager to perform a retry of the data migration, the second storage system merges, to the data received by the second storage system during and immediately after the first data migration, a second incremental dataset received to the first storage system after performance of the rollback. Throughout the migration rollback and retry, the data of the baseline dataset, first incremental dataset, and second incremental data set is made available to the client.

Description

FIELD OF THE INVENTION
At least one embodiment of the present invention pertains to data migration, and more particularly, to methods and systems for rapidly rolling back and retrying a migration of data between storage systems.
BACKGROUND
In recent years, an exponential increase in the demand for computer storage has been driven by growth in digital information due to faster processors, lower cost of digital data storage, increasing availability of high data rate access, and development of new applications. This increased dependence on computer data has caused a need for more efficient data storage and data migration technology.
Online data migration is the process of transferring data between storage systems in a networked environment. Data migration is usually performed programmatically to achieve an automated migration, freeing up human resources from tedious and often time-consuming tasks. Data migration may be required when, for example, organizations or individuals change computer systems or when it is determined, by capacity planning, that additional data resources are required for an existing computer system.
Non-disruptive data motion is the process of performing an online data migration that is virtually transparent to a client accessing the data. The client is unaware of the migration process and can access the data throughout the migration process.
A computer network is typically utilized as a transport mechanism for data migration between storage systems. However, due to the large amounts of data copied across the network (often well over several terabytes in an enterprise environment) the duration of the migration process can exceed tolerable levels, in some cases lasting for days or weeks.
Often, after a data migration from a source storage system to a destination storage system, an unforeseen problem emerges, necessitating a reversion (“rollback” of the migration), to the source storage system. For example, one such problem could be that, after the destination storage system is in operation for several hours or days after the migration from the source storage system, an administrator determines that the destination storage system lacks sufficient capacity to store data at a current or future data growth rate. Another problem may relate to unexpectedly slow performance, at the destination storage system, of a migrated application or dataset. In these cases, it is desirable to revert back to utilizing the source storage system, at least until the unforeseen problem is addressed. However, it is not possible to simply redirect the client from accessing the destination storage system to accessing the source storage system, because the data at the destination storage system is modified arbitrarily after the initial data migration based on new data received to the destination storage system. For example, during the initial data migration of a baseline data set from the source storage system to the destination storage system, a user file may be copied. The user file may include of, for example, a document, email, spreadsheet, or another form of electronic information. Once the baseline dataset having the user file is copied to the destination storage system, the user may access the file and modify the file's content. For example, the user may append a graph to the document, reply to the email, or add a new calculation to the spreadsheet. These new modifications are made at the destination storage system, not the source storage system. Therefore, a complete rollback from the destination storage system to the source storage system in the conventional system involves copying both the previously migrated baseline dataset and the user modifications made to the baseline dataset.
Similarly, after a successful rollback migration to the source storage system and after the unforeseen problem of the initial migration has been resolved, a retry of the migration to the second storage system may be desirable. However, as in the rollback migration, the retry migration in the conventional system involves copying a complete dataset of the source storage system to the destination storage system. Following the previous example, after the rollback migration, the user may perform additional modification to one or more user files located at the source storage system. The user may, for example, further modify the graph previously added to the document, receive a response to the email reply, or alter a value used by the spreadsheet calculation. These modifications must be copied during the retry migration to maintain data integrity.
Therefore, the problem of the first data migration being undesirably time-consuming is compounded with the additional time required for the rollback migration and the subsequent retry migration. Together these delays make the prospect of performing a large data migration troublesome at best and, where a large enterprise is concerned, data migrations can be justifiably prohibitive.
SUMMARY
Introduced herein are methods and systems for rapidly rolling back and retrying a data migration from a first storage system to a second storage system. In one embodiment, upon receiving a request at a provisioning manager to perform a rollback of a first data migration from a first storage system to a second storage system, the first storage system merges, to a baseline dataset at the first storage system, a first incremental dataset received by the second storage system after the first data migration. Throughout the migration rollback the data of the baseline dataset and the incremental data are made available to a client and an application. In another embodiment, upon receiving a request at a provisioning manager to perform a retry of the data migration from the first storage system to the second storage system, the second storage system merges a second incremental dataset received to the first storage system with data previously received to the second storage system. Throughout the migration retry the data of the baseline dataset, first incremental dataset, and second incremental dataset are made available to the client such that non-disruptive data motion is maintained.
The solution presented here overcomes the time-consuming data migration problems of the prior art by removing the baseline dataset from the rollback and retry migration processes. After the initial migration of the baseline dataset from the source storage system to the destination storage system and after a rollback migration is requested, the provisioning manager determines whether the baseline dataset remains at the source storage system. If the baseline dataset remains at the source storage system the provisioning manager directs the source storage system to migrate, from the destination storage system, only modifications (incremental data) made to the baseline dataset. By skipping the large baseline dataset, the duration of the rollback migration is significantly decreased from that of the initial first data migration because the incremental dataset is typically a fraction of the size of the baseline dataset.
Similarly, during the retry migration, the provisioning manager utilizes existing data on the destination storage system, removing the necessity of copying duplicative data from the source storage system. The only data migrated during the retry migration is incremental data received to the source storage system after the performance of the rollback migration.
Utilizing data on a storage system that remains after a previous data migration resolves the problem of time-consuming rollback and retry migrations, because only incremental data is copied during the rollback and retry migration processes.
BRIEF DESCRIPTION OF THE DRAWINGS
One or more embodiments of the present invention are illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements.
FIG. 1 illustrates a network storage environment in which the present invention can be implemented.
FIG. 2 is a high-level block diagram showing an example of the hardware architecture of a storage system that can implement the source storage server or the destination storage system.
FIG. 3 is a high-level block diagram showing an example of the hardware architecture of a provisioning manager.
FIG. 4 illustrates an example of the network storage environment performing a rapid rollback of a first data migration.
FIG. 5 illustrates an example of the network storage environment performing a rapid retry after the performance of the rapid rollback.
FIG. 6 is a flow diagram illustrating a process for a provisioning manager performing a first data migration, a rollback of the first data migration, and a retry of the first data migration.
FIG. 7 is a flow diagram illustrating a process for the source and destination storage systems performing a first data migration, a rollback of the first data migration, and a retry of the first data migration.
DETAILED DESCRIPTION
References in this specification to “an embodiment”, “one embodiment”, or the like, mean that the particular feature, structure or characteristic being described is included in at least one embodiment of the present invention. Occurrences of such phrases in this specification do not necessarily all refer to the same embodiment.
FIG. 1 shows a network configuration in which the techniques introduced here can be implemented. It is noted that the network environment described here is for illustration of one type of a configuration in which the techniques can be implemented, and that other network storage configurations and schemes can be used for implementing the techniques.
FIG. 1 shows a network data storage environment, which includes a client system 108, a source storage system (SSS) 102, a destination storage system (DSS) 104, a provisioning manager (PM) 106, an optional server (110), and computer network 100 connecting the client system 108, SSS 102, DSS 104, PM 106 and optional server 110.
The storage systems 102 and 104 each may be, for example, one of the FAS family of storage server products available from NetApp, Inc of Sunnyvale, Calif. The SSS 102 and DSS 104 connect to the client system 108, PM 106 and optional server 110 via the computer network 100, which can be, for example, a local area network (LAN), wide area network (WAN), or a global area network, such as the Internet, and can make use of any conventional or non-conventional network technologies. It is noted that, within the network data storage environment, any other suitable numbers of storage systems, clients, and/or mass storage devices may be employed.
In one embodiment, a server 110 is connected, via a network 100, to a client 108 and storage systems 102 and 104. The server 110 contains an application 118 running in memory and in communication with application data 422 and the client 108. The client interacts with the application 118, via the network 100, for services provided by the application 118. For example, the application 118 can be an email application, such as Microsoft Exchange®, that provides email services to the client 108. In this example, the application data generated or used by application 118 includes electronic mail-boxes that hold email messages updated via the application 118. In another embodiment, the application 118 is located on a storage device of storage system 102 or 104. It should be noted that the application 118 is not limited to an email application and may be essentially any computer application capable of receiving input from a client 108 and storing application data 422 on a storage system.
The storage systems 102 and 104 can make available, to the client 108 and application 118, some or all of the storage space of each respective storage system. For example, each of the non-volatile mass storage devices 112 and 114 can be implemented as one or more disks (e.g., a RAID group) or any other suitable mass storage device(s). Alternatively, some or all of the mass storage devices 112 and 114 can be other types of storage, such as flash memory, SSDs, tape storage, etc. The storage systems 102 and 104 can communicate with the client 108 and application 118 according to well-known protocols, such as the Network File System (NFS) protocol or the Common Internet File System (CIFS) protocol, to make data stored on the storage devices 112 and 114 available to client and/or application programs 118.
Various functions and configuration settings of the storage systems 102 and 104 can be controlled from a provisioning manager 106 coupled to the network 100. Among many other operations, a data migration operation can be initiated from the provisioning manager 106.
FIG. 2 is a diagram illustrating an example of a physical storage system 200 that can implement one or more of the SSS 102 and DSS 104. In the illustrated embodiment, the storage system 200 is a server-class computer system that includes a processor subsystem that includes one or more processors 208. The storage system 200 further includes a memory 210, a network adapter 204, and a storage adapter 202, all interconnected by an interconnect 214.
The storage system 200 can be embodied as a single- or multi-processor storage system executing a storage operating system 212 that preferably implements a high-level module, such as a storage manager, to logically organize the information as a hierarchical structure of named directories, files and special types of files called virtual disks on the non-volatile mass storage device 201.
The memory 210 illustratively comprises storage locations that are addressable by the processors 208 and adapters 202 and 204 for storing software program code and data structures associated with the present invention. The processor 208 and adapters may, in turn, comprise processing elements and/or logic circuitry configured to execute the software code and manipulate the data structures. The storage operating system 212, portions of which are typically resident in memory and executed by the processor(s) 208, functionally organizes the storage system 200 by (among other things) configuring the processor(s) 208 to invoke storage related operations in support of the application 118, which may optionally reside on server 110, or in the memory 210 of the storage system 200. It will be apparent to those skilled in the art that other processing and memory implementations, including various computer readable storage media, may be used for storing and executing program instructions pertaining to the technique introduced here.
The network adapter 204 includes a plurality of ports to couple the storage system 200 to the client 108 over a network, such as a wide area network, virtual private network implemented over a public network (Internet) or a shared local area network. Additionally, the network adapter 204, or a separate additional adapter, is further configured to connect, via the network 100, the SSS 102 with the DSS 104. The network adapter 204 thus can include the mechanical, electrical and signaling circuitry needed to connect the storage system 200 to the network 100. Illustratively, the network 100 can be embodied as an Ethernet network or a Fibre Channel (FC) adapter, for example. Each client 204 can communicate with the application 118, via the network 100 by, exchanging discrete frames or packets of data according to pre-defined protocols, such as TCP/IP.
The storage adapter 202 cooperates with the storage operating system 212 to access information requested by the client 108 and application 118. The information may be stored on any type of attached array of writable storage media, such as magnetic disk or tape, optical disk (e.g., CD-ROM or DVD), flash memory, solid-state disk (SSD), electronic random access memory (RAM), micro-electro mechanical and/or any other similar media adapted to store information, including data and parity information. However, as illustratively described herein, the information is stored on non-volatile mass storage device 201.
The storage operating system 212 facilitates the client's and the application's access to data stored on the non-volatile mass storage device 201. In certain embodiments, the storage operating system 212 implements a write-anywhere file system that cooperates with one or more virtualization modules to “virtualize” the storage space provided by the non-volatile mass storage device 201. In the illustrative embodiment, the storage operating system 212 is a version of the Data ONTAP® operating system available from NetApp, Inc. implementing the Write Anywhere File Layout (WAFL®) file system. However, other storage operating systems are capable of being enhanced or created for use in accordance with the principles described herein.
FIG. 3 is a diagram illustrating the internal architecture 300 of the provisioning manager (PM) 106. In an exemplary embodiment, the PM includes software in memory of a server 110 that is executed by a processor in accordance with the present invention. In an alternative embodiment, PM includes a processor subsystem that includes one or more processors 302. The PM 300 further includes an input module 301, memory 304, a detection module 310, a network adapter 312, a storage system migration module (SSMM) 314, and a display module 316 all interconnected by an interconnect 318 and powered by a power supply 308.
The provisioning manager 300 can be embodied as a single- or multi-processor storage system executing an operating system 306 stored in the memory 304. The processor 302 and adapters may, in turn, comprise processing elements and/or logic circuitry configured to execute the software code and manipulate the data structures. The operating system 306, portions of which are typically resident in memory and executed by the processor(s) 302, functionally organizes the provisioning manager by (among other things) configuring the processor(s) 302 to invoke storage operations to migrate data between non-volatile mass storage devices 112 and 114 (FIG. 1). It will be apparent to those skilled in the art that other processing and memory implementations, including various computer readable storage media, may be used for storing and executing program instructions pertaining to the technique introduced here.
The network adapter 312 includes a plurality of ports to couple the PM to the storage systems 102 and 104 over a wide area networks, virtual private network implemented over a public network (Internet) or a shared local area network. The network adapter 312 thus can include the mechanical, electrical and signaling circuitry needed to connect the PM 300 to the network 100.
The input module 301 is configured to receive data from a user selection and communicate the received data to the processor 302 and operating system 306, via the interconnect 318. The input module 301 can receive data from, for example, a keyboard, mouse, trackball, touch screen, or any other input device capable of communicating a user selection.
The display module 316 is configured to connect to an output device that illustrates a plurality of storage migration options to a user. The output device can be a computer screen, monitor, or projection capable of displaying text and graphical representations of data. In one embodiment, the display module 316 outputs storage migration options relating to performing a data migration from the SSS 102 to the DSS 104, rolling back the data migration from the DSS to the SSS, and retrying the data migration from the SSS to the DSS.
The detection module 310 is configured to connect, via the network adapter, to a storage system 200 and determine whether a dataset located on the non-volatile mass storage device 201 was copied to another storage system as part of a previously performed data migration. For example, in one embodiment, the detection module 310 can determine whether a baseline dataset 406 (FIG. 4) is present at the non-volatile mass storage device 112 of SSS 102 is present and whether the baseline dataset was copied to storage device 114 of DSS 104 as part of a previous data migration 422 from the SSS to the DSS.
The detection module 310 can further be configured to determine a storage capacity of a storage system 200 and calculate whether the storage system has adequate capacity to receive data, as part of a data migration, from another storage system. For example, Data Fabric Manager (DFM), from NetApp, Inc of Sunnyvale, Calif., monitors and records the storage capacity of devices connected to a network, such as the SSS and DSS, and stores the results on the devices. The PM can determine, based on the stored results, the available storage capacity at the SSS and DSS.
Similarly, using the results provided by the DFM, the detection module 310 can additionally be configured to resize the storage volume of a storage device 201 to a desirable size to support an impending data migration.
The storage adapter 202 cooperates with the storage operating system 212 to access information requested by the client 108 or application 118. The information may be stored on any type of attached writable storage media, such as magnetic disk or tape, optical disk (e.g., CD-ROM or DVD), flash memory, solid-state disk (SSD), electronic random access memory (RAM), micro-electro mechanical and/or any other similar media adapted to store information, including data and parity information. However, as illustratively described herein, the information is stored on disks 201.
The storage system migration module (SSMM) 314 is configured to initiate data migrations between the SSS 102 and the DSS 104. In one embodiment, the SSMM is configured to initiate a first data migration between the SSS and the DSS. The SSMM further can be configured to initiate a rollback migration, as illustrated in FIG. 4, of the first data migration. The SSMM further can be configured to initiate a retry of the first data migration from the SSS to the DSS, as illustrated in FIG. 5. The SSMM further can be configured to perform a cutover, as further explained herein, from one storage system, such as the SSS 102, to another storage system, such as the DSS 104. Alternatively, the SSMM 314 can be configured to perform one or more of the above steps.
In one embodiment, the SSMM 314 can be a processor 302, programmed by the operating system 306 or other software stored in memory 304, to perform the cutover, first migration, rollback migration and retry migration. Alternatively, the SSMM 314 can be special-purpose hardwired circuitry.
FIG. 4 illustrates a rollback of a previously performed first data migration 422. During the first data migration 422, a baseline dataset 406 is copied from the SSS 102 to the DSS 104. The baseline dataset includes application data 422 accessible to the client 108 and application 118. In one embodiment, the application 118 is part of the baseline dataset. After the performance of the first data migration, a user or administrator may determine that, due to an unforeseen problem with the first data migration, a migration rollback is desirable.
For instance, the unforeseen problem may be degraded access times, from the client 108 or application 118 to the first dataset 416, related to network/system performance lag. Or, after the first data migration 422, an administrator may determine that there is inadequate data capacity, at the DSS 104, for the projected growth rate of application data 422. Similarly, other issues may become manifest only several days after the first data migration and after new data is added, removed or changed at the first dataset 416. Therefore, a complete rollback from the DSS to the SSS will include the previously migrated data 416 and any incremental data 418. Incremental data 418 is new data added to an existing dataset, such as the baseline dataset. Incremental data is typically much smaller in size than the baseline data. Data is classified as incremental data through a variety of methods well-known to those in the art familiar with data backup procedures. In one embodiment, data is characterized as incremental data based on a data snapshot of the DSS and/or SSS, such as that provided by the Snapshot™ technology available at NetApp, Inc of Sunnyvale, Calif. For example, a snapshot of the DSS stores a point-in-time reference to the data currently at the DSS. New data arriving to the DSS will be received after the snapshot and will be characterized as incremental data. An example of incremental data is an email received to the DSS after the first data migration. Any number of additional modifications can be made to the application data 422 by the client 108 or the application 118.
In one embodiment, a rapid rollback of data from the DSS 104 to the SSS 102 is performed by utilizing the baseline dataset 406 at the SSS 102, thus avoiding the necessity of copying the first dataset 416 from the DSS 104. On determination that a rollback is desired, an administrator requests 400, at an input module 301 of the PM, a rollback migration from the DSS to the SSS. Next, the SSMM 314 (FIG. 3) operates with the detection module 310 to determine if the baseline dataset 406 is available at the SSS 102, for example, by using the Snapshot technology previously disclosed. If the baseline dataset 406 is available, the SSMM 314 sends to the SSS a rollback request 401; otherwise, a full migration of the baseline dataset 406 can be performed by the SSMM 314. The rollback request 401 is a request instructing the SSS to perform a rollback migration from the DSS.
In one embodiment, the rollback request 401 further contains an indicator 402 to avoid coping to the SSS the first dataset 416 of the first data migration because this data is available at the SSS as the baseline dataset. Alternatively in another embodiment, the indicator 402 specifically directs the SSS to copy only the incremental data 418 received after the first data migration.
Upon receipt of the rollback request 401, the SSS 102 sends to the DSS 104, a first mirror request 424 to copy, from the DSS, the incremental dataset 418 received after the performance of the first data migration 422 of the baseline dataset. The incremental dataset 418 is data received from the client 108 or application 118 that modifies the first dataset 416 at the DSS 104. Upon receipt of the first mirror request 424 by the DSS, the DSS sends to the SSS the requested incremental dataset 418 which is merged into a third dataset 412, at the SSS 102, by updating the baseline dataset 406 with the incremental dataset 418.
In one embodiment, after completion of the rollback migration 426, a cutover is performed. A cutover is a process of reconfiguring the Network 100, SSS 102, and DSS 104 such that a client 108 can access resources of one of the storage systems after one other of the storage systems is brought offline (“decommissioned”). During the cutover, the DSS is decommissioned from the network 100 and the SSS is brought online (“commissioned”). When a storage system 200, such as the DSS, is decommissioned, the application data 422 is no longer available to the client 108 or application 118, and similarly, when the SSS is brought online, the client and application can access the application data 422 from the SSS. The cutover is performed without reconfiguring the application 118 or the client 108 from accessing the application data 422 from the DSS. In one embodiment, as part and near the completion of the cutover, the Network Adapter IP Address 413, at the SSS, is configured to be identical to the Network Adapter IP Address 420, at the DSS, thus allowing a client to continue to access the application data 422 during the cutover, without reconfiguring the client.
In one embodiment, the cutover process does not exceed a maximum duration time equal to a client-timeout time 402. The client-timeout time is the maximum amount of time that a client 108 can wait for requested data without receiving a network timeout error. In one embodiment, the client-timeout time is less than a protocol-timeout time of a protocol used to communicate between the application 118 and a storage system 200, such as the SSS and the DSS. For example, in one embodiment, the protocol-timeout time, and thus the client-timeout time, is equal to or less 120 seconds which is a default timeout time utilized by various network protocols such as NFS, and iSCSI.
FIG. 5 illustrates a rapid retry of the first data migration 422. After the resolution of the problem necessitating the rapid rollback 426 of the first data migration, the user or administrator may request a retry 500 of the data migration.
In one embodiment, a rapid retry is performed by utilizing, at the DSS, the first dataset 416 and the first incremental dataset 418 as part of the data of the retry migration 510. In prior art, a retry migration essentially repeated the steps of the initial first data migration 422 and required that the entire baseline dataset 406 be copied from the DSS 104 to the SSS 102. Utilizing the existing datasets 416 and 418 avoids the necessity of copying the baseline dataset 406 and the second dataset 410 from the SSS. This allows for rapid performance of the retry data migration 510. If the first dataset 416 and the first incremental dataset 418 are physically present on the DSS, the SSMM 314 sends to the DSS a retry request 501 instructing the DSS to perform a retry migration from the SSS to the DSS.
In one embodiment, the retry request 501 further contains an indicator 502 to avoid copying, to the DSS, the baseline dataset 406 and the second dataset 410. Alternatively in another embodiment, the indicator 502 specifically directs the DSS to copy only the second incremental dataset 504 received to the SSS after the rollback migration 426. The second incremental dataset 504 is data received from the client 108 or application 118 that modifies the baseline dataset 406 and second dataset 410 at the SSS 102. For example, the second incremental dataset 504 can be a client 108 modification to the application data 422, at the SSS 102, such as a graph added to a document or a new calculation added to a spreadsheet.
Upon receipt of the retry request 501, the DSS sends to the SSS, a second mirror request 508 to copy the second incremental dataset 504. The SSS responds to the second mirror request 508 by sending to the DSS the second incremental dataset, which is merged at the DSS into a fifth dataset 512 by updating, based on the aforementioned Snapshot technology, the first dataset 416 and first incremental dataset 418 with the second incremental dataset 504.
In one embodiment, after completion of the retry migration 510, a cutover is performed as previously described. During the cutover, the SSS is brought offline from the network 100 and the DSS is brought online. In one embodiment, as part of the cutover, the Network Adapter IP Address 420, at the DSS, is configured to be identical to the Network Adapter IP Address 413, at the SSS.
In one embodiment, throughout the first data migration 422, the second data migration (rollback) 426, and the third data migration (retry) 510, the application data 422 is available to the client 108 and application 118, except during the client-timeout time 402. In particular, prior to the first data migration 422, the application data 422 of the baseline dataset 406 is accessible, via the network 100, by the application 118 and the client 108. Throughout the first data migration, the original baseline dataset 406 containing the application data 422 remains accessible to the client 108 while a copy of the baseline dataset is migrated to the DSS. After the baseline dataset is copied to the DSS as the first dataset 416, client 108 and application 118 access to the application data 422 is transitioned, as part of the cutover, from the SSS 102 to the DSS 104.
FIG. 6 is a flow diagram depicting a process for performing, at the PM 106, a rapid rollback and rapid retry of a migration between the DSS and the SSS. After a first data migration has occurred, as illustrated in step 602, the PM receives at 604 a request to rollback the previously performed first data migration. The request can come from, for example, a user or administrator, via an input device, to the input module 301. The user or administrator can enter the request using any input device capable of communicating with the input module, such as a touch screen, keyboard, or mouse, for example. After the rollback request 400 (FIG. 4) is received, the PM determines at 606 whether the data of the first data migration (the baseline data) is located on the SSS 102. For example, if, during the first data migration, the baseline dataset was copied from the SSS to the DSS, the PM would determine, using the detection module 310, whether the baseline dataset is still present at the SSS 102. If it is determined that the baseline dataset is not present at the SSS, the rollback migration 426 may copy both the first dataset 416 and the first incremental dataset 418 from the DSS 104 to the SSS 102. If the PM determines that the baseline dataset remains on the SSS, the PM sends (step 608) to the SSS a rollback request instructing the SSS to copy the data of the DSS while skipping data previously copied during the first data migration. Following the above example, the SSS would then receive a request from the PM to copy only incremental data received to the DSS after the first data migration of the baseline data. After the incremental data is copied from the DSS to the SSS, the PM performs a cutover (step 610) such that client and application access to application data 422 is routed to the SSS.
Step 612 is the first step of the process to rapidly retry the first data migration from the SSS to the DSS. In step 612, the user or administer requests a retry migration at the PM. Upon receipt of the retry request, the detection module 310 determines whether the DSS retains data related to the first data migration and the rollback migration. Particularly, in step 614, the PM detects that the first dataset and the first incremental dataset are available at the DSS. In step 616, the PM sends to the DSS a request to copy, from the SSS to the DSS, incremental data received after the performance of the rollback migration. An indicator 502 in the retry request 501 informs the DSS to avoid duplicating the data of the baseline dataset 406 (FIG. 4) and the second dataset 410. After the incremental data is copied from the SSS to the DSS, the PM performs a cutover (step 618) such that client and application access to application data 422 is routed to the DSS.
FIG. 7 is a flow diagram depicting a process for performing, at the SSS and the DSS, a rapid rollback and rapid retry of a first data migration. After a first migration has occurred from the SSS to the DSS, as illustrated in step 702, the SSS receives, from the PM, a request to rollback from the previously performed first data migration (step 704). The rollback request includes details of a new migration to perform from the DSS to the SSS. Particularly, the rollback request includes an indicator informing the SSS to skip data (e.g. the baseline dataset) previously copied from the SSS to the DSS. In step 706, the SSS copies the requested data from the DSS that is merged, in step 708, to the baseline dataset. After the data is copied and merged at the SSS, and as part of a cutover process initiated by the PM, the SSS and DSS are configured, in step 710, such that the application and client access the application data 422 on the SSS, not the DSS. For example, by taking the DSS offline form the Network 100 and configuring the network IP Address of the SSS to be identical to the network IP address of the DSS, the application 118 and client 108 can access application data 422 on the SSS without being reconfigured. In other words, an application 118 configured to access application data 422 on the DSS can access the application data on the SSS, after the cutover, without any changes being made to the application.
Once it is determined that a retry of the data migration is desirable, for example, after resolving an issue requiring the rollback migration, the DSS receives a request 501, from the PM, to retry the data migration (step 712). The rollback request includes an indicator 502 informing the DSS to skip data (e.g. the first dataset and first incremental dataset) previously copied during the first data migration and second data migration. In step 714, the requested data (the second incremental dataset) is copied from the SSS to the DSS where it is merged, in step 716, with the existing data at the DSS (the first dataset and the first incremental dataset). Finally, in step 718 and as described in step 618, client and application access to the application data 422 is cutover from the SSS to the DSS.
The techniques introduced above can be implemented by programmable circuitry programmed or configured by software and/or firmware, or entirely by special-purpose circuitry, or in a combination of such forms. Such special-purpose circuitry (if any) can be in the form of, for example, one or more application-specific integrated circuits (ASICs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), etc.
Software or firmware for implementing the techniques introduced here may be stored on a machine-readable storage medium and may be executed by one or more general-purpose or special-purpose programmable microprocessors. A “machine-readable medium”, as the term is used herein, includes any mechanism that can store information in a form accessible by a machine (a machine may be, for example, a computer, network device, cellular phone, personal digital assistant (PDA), manufacturing tool, any device with one or more processors, etc.). For example, a machine-accessible medium includes recordable/non-recordable media (e.g., read-only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; etc.), etc.
The term “logic”, as used herein, can include, for example, special-purpose hardwired circuitry, software and/or firmware in conjunction with programmable circuitry, or a combination thereof.
Although the present invention has been described with reference to specific exemplary embodiments, it will be recognized that the invention is not limited to the embodiments described, but can be practiced with modification and alteration within the spirit and scope of the appended claims. Accordingly, the specification and drawings are to be regarded in an illustrative sense rather than a restrictive sense.

Claims (30)

1. A method comprising,
sending, from a source storage system (SSS) to a destination storage system (DSS) via a network, a first dataset as part of a data migration from the SSS to the DSS, wherein the first dataset includes a copy of a baseline dataset stored at the SSS, and wherein, throughout the data migration, the baseline data is made available to a client via the network;
cutting over from the SSS to the DSS such that an application is available, after a cutover duration, to communicate the first dataset to the client via the network, wherein cutting over makes the first dataset available to the application without reconfiguring the application from accessing the baseline dataset at the SSS, and wherein the cutover duration is less than a client-timeout time that the client can wait for a requested application data without the client receiving a timeout error;
receiving, at the SSS from a provisioning manager (PM), a request to rollback the data migration by migrating a second dataset from the DSS to the SSS, wherein the DSS contains the first dataset and the second dataset, and wherein the second dataset is an incremental dataset received at the DSS after the data migration;
receiving at the SSS, in response to the request, the second dataset from the DSS; and
merging into a third dataset, at the SSS, the baseline dataset with the second dataset.
2. The method of claim 1, further comprising, after the merging of the baseline dataset with the second dataset, cutting over from the DSS to the SSS such that an application is available, after a cutover duration, to communicate the third dataset to the client via the network, wherein cutting over makes the third dataset available to the application without reconfiguring the application from accessing the first and second dataset at the DSS, and wherein the cutover duration is less than a client-timeout time that the client can wait for a requested application data without the client receiving a timeout error.
3. The method of claim 2, wherein the client-timeout time is less than a protocol-timeout time of a protocol used to communicate between the application and a storage system.
4. The method of claim 2, wherein the protocol-timeout time is greater than 180 seconds.
5. The method of claim 1, wherein an application makes the baseline dataset available to the client.
6. The method of claim 1, wherein the baseline dataset includes a copy of an application, and wherein the application makes the baseline dataset available to the client.
7. The method of claim 1, wherein, after the data migration and after receiving the request, at the PM, to perform the rollback of the data migration, the PM detects that the baseline dataset is available to the SSS.
8. The method of claim 1, wherein the baseline dataset, at the SSS, is brought online by the PM.
9. The method of claim 1, wherein the request includes an indicator to exclude mirroring the first dataset as part of the second migration.
10. The method of claim 1, wherein the retrieving of the second dataset is preceded by sending, from the SSS to the DSS, a first mirror request to mirror the second dataset to the SSS.
11. The method of claim 1, wherein throughout the first data migration, an application is operating in the SSS and available to communicate, via the network, the baseline dataset to the client.
12. The method of claim 1, wherein throughout the data migration, an application is operating at a server and available to communicate, via the network, the baseline dataset to the client, and wherein the server is other than the SSS or DSS.
13. The method of claim 1, further comprising, after the migration of the second dataset,
detecting, at the DSS by the PM, the first dataset and the second dataset,
receiving, at the DSS from the PM, a request to perform a retry of the data migration from the SSS to the DSS, and
performing the requested retry of the data migration from the SSS to the DSS.
14. The method of claim 13, further comprising, after the performance of the requested retry of the data migration, cutting over from the SSS to the DSS such that an application is available to communicate, after a cutover duration, a fifth dataset to the client via the network, wherein cutting over makes the fifth dataset available to the application without reconfiguring the application from accessing the third dataset at the SSS, and wherein the cutover duration is less than a client-timeout time that the client can wait for a requested application data without the client receiving a timeout error, and wherein the fifth dataset includes the first dataset and the first incremental dataset.
15. The method of claim 14, further comprising, before cutting over from the SSS to the DSS, retrieving to the DSS, based on the request to perform the retry of the data migration request and as an additional member of the fifth dataset, a fourth dataset, wherein the fourth dataset includes a second incremental dataset received to the SSS after the second data migration.
16. The method of claim 15, wherein the retrieving of the fourth dataset is preceded by sending, from the DSS to the SSS, a second mirror request to mirror the fourth dataset to the DSS.
17. The method of claim 15, further comprising, merging, at the DSS, the fifth dataset with the fourth dataset.
18. The method of claim 13, further comprising, before detecting the first dataset and the second dataset at the DSS, the PM receives a request to perform a retry of the data migration.
19. The method of claim 13, wherein the request to perform the retry of the data migration includes an indicator to exclude mirroring the baseline dataset as part of the third migration.
20. The method of claim 13, wherein throughout the performance of the third data migration, the application is available to communicate to the client, via the network, the third dataset and any incremental data received to the SSS after the second data migration.
21. The method of claim 1, wherein the PM is located on at least one of the SSS, DSS, or a server connected to the network.
22. A method comprising:
operating a source storage system (SSS) and a destination storage system (DSS); and
performing a data migration rollback from the DSS to SSS and a data migration retry from the SSS to the DSS by utilizing, after a prior attempted migration, a dataset remaining at each of the SSS and the DSS, wherein at least one cutover is performed during the performance of the migration rollback and migration retry and a duration of the cutover is less than a client-timeout time that the client can wait for a requested application data without the client receiving a timeout error.
23. The method of claim 22, further including, detecting, by a provisioning manager (PM), a first dataset of the plurality of datasets at the SSS and a second dataset at the DSS, each said dataset remaining at the respective SSS and DSS after an attempted migration from the SSS to the DSS.
24. The method of claim 23, wherein, throughout performance of the migration rollback and migration retry, the PM sends a request to one of the DSS and the SSS to mirror the data of the other one of the DSS and the SSS, wherein the request includes an indicator to exclude mirroring any dataset of the plurality of datasets remaining after the prior attempted migration.
25. The method of claim 23, wherein throughout the duration of the performance of the migration rollback and migration retry, an application is available to communicate the plurality of datasets located at either the SSS or the DSS via a network to a client, except during the cutover duration, wherein during the cutover the PM makes available the plurality of datasets located on one of the SSS or the DSS while making unavailable the plurality of datasets on the other one of the SSS or the DSS.
26. The method of claim 22, wherein the client-timeout time is less than 120 seconds.
27. A provisioning manager (PM) comprising,
an input module for receiving a user selection of a migration option of a plurality of migration options;
a detection module configured to detect a migration-data of a first storage system, wherein the migration-data includes a post-migration dataset sent by the first storage system after a prior attempted migration from the first storage system to a second storage system, wherein both the first storage system and the second storage system are each individually coupled to a network, wherein the detection module is further configured to determine, before the initiation of the rollback migration, if the first storage system has the capacity to store the migration data rolled back from the second storage system; and
a storage system migration module (SSMM) configured to initiate, after the detection of the post-migration dataset at the first storage system and based on a user selected rollback migration option of the plurality of migration options, a rollback of migration data from the second storage system to the first storage system by sending a migration-rollback request to the first storage system, wherein the migration-rollback request includes an indicator to exclude the post-migration dataset during the rollback of migration data from the second storage system.
28. The PM of claim 27, wherein the detection module is further configured to determine, before the initiation of the rollback migration, if the storage volume of the first storage system has been resized since the prior attempted migration, wherein when the first storage volume has been resized and provided that the second storage volume has the capacity, the second storage volume is accordingly resized to the size of the first storage volume.
29. The PM of claim 27, wherein the SSMM is further configured to perform a cutover from the second storage system to the first storage system by decommissioning the second storage system from serving data, via the network, to an application and commissioning the first storage system to serve the data, via the network, to the application, wherein the cutover is performed without reconfiguring the application from accessing the data from the second storage system.
30. A method comprising,
sending, from a source storage system (SSS) to a destination storage system (DSS) via a network, a first dataset as part of a first data migration from the SSS to the DSS, wherein the first dataset includes a copy of a baseline dataset stored at the SSS, and wherein, throughout the first data migration, the baseline data is made available, at the SSS, to a client via the network;
updating, at the SSS, the baseline dataset with an incremental dataset received from the DSS as part of a rollback of the first data migration, wherein the initiation of the rollback of the first data migration is based on a rollback request received at a provisioning manager (PM), and wherein, throughout the rollback of the first data migration, the incremental dataset is made available, at the DSS, to the client, wherein a cutover duration does not exceed a client-timeout time that the client can wait for a requested application data without the client receiving a timeout error.
US12/842,424 2010-07-23 2010-07-23 Methods and systems for rapid rollback and rapid retry of a data migration Active US8112665B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/842,424 US8112665B1 (en) 2010-07-23 2010-07-23 Methods and systems for rapid rollback and rapid retry of a data migration

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/842,424 US8112665B1 (en) 2010-07-23 2010-07-23 Methods and systems for rapid rollback and rapid retry of a data migration

Publications (1)

Publication Number Publication Date
US8112665B1 true US8112665B1 (en) 2012-02-07

Family

ID=45532325

Family Applications (1)

Application Number Title Priority Date Filing Date
US12/842,424 Active US8112665B1 (en) 2010-07-23 2010-07-23 Methods and systems for rapid rollback and rapid retry of a data migration

Country Status (1)

Country Link
US (1) US8112665B1 (en)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120221813A1 (en) * 2011-02-28 2012-08-30 Hitachi, Ltd. Storage apparatus and method of controlling the same
US20120239168A1 (en) * 2011-03-16 2012-09-20 General Electric Company Virtual communication relationship information extraction, availability determination and validation from foundation fieldbus device description files
US10545913B1 (en) * 2017-04-30 2020-01-28 EMC IP Holding Company LLC Data storage system with on-demand recovery of file import metadata during file system migration
US10740156B1 (en) * 2018-02-22 2020-08-11 Amazon Technologies, Inc. Reversible representation-based partitioning of distributed computing environments
US11637896B1 (en) 2020-02-25 2023-04-25 Pure Storage, Inc. Migrating applications to a cloud-computing environment
US11693565B2 (en) 2021-08-10 2023-07-04 Hewlett Packard Enterprise Development Lp Storage volume synchronizations responsive to communication link recoveries
US11720274B2 (en) 2021-02-03 2023-08-08 Hewlett Packard Enterprise Development Lp Data migration using cache state change
US11741066B2 (en) 2021-05-25 2023-08-29 International Business Machines Corporation Blockchain based reset for new version of an application
US11755226B2 (en) 2020-09-18 2023-09-12 Hewlett Packard Enterprise Development Lp Tracking changes of storage volumes during data transfers
US11868622B2 (en) 2020-02-25 2024-01-09 Pure Storage, Inc. Application recovery across storage systems

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050038828A1 (en) * 2003-08-14 2005-02-17 Oracle International Corporation Transparent migration of stateless sessions across servers
US20070094467A1 (en) * 2005-10-20 2007-04-26 Yasuo Yamasaki Method for rolling back from snapshot with log
US7379996B2 (en) * 2003-04-07 2008-05-27 Microsoft Corporation System and method for web server migration
US7383463B2 (en) * 2004-02-04 2008-06-03 Emc Corporation Internet protocol based disaster recovery of a server
US20090006493A1 (en) * 2007-06-29 2009-01-01 International Business Machines Corporation Method For Enabling Traceability And Recovery From Errors During Migration Of Software Applications
US20090222691A1 (en) * 2008-02-29 2009-09-03 Riemers Bill C Data Migration Manager
US7613889B2 (en) * 2004-06-10 2009-11-03 International Business Machines Corporation System, method, and program for determining if write data overlaps source data within a data migration scheme
US7661015B2 (en) * 2006-05-16 2010-02-09 Bea Systems, Inc. Job scheduler
US7765272B1 (en) * 2003-09-30 2010-07-27 Cisco Technology, Inc. Method and system for migrating content on a network
US7769722B1 (en) * 2006-12-08 2010-08-03 Emc Corporation Replication and restoration of multiple data storage object types in a data network

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7379996B2 (en) * 2003-04-07 2008-05-27 Microsoft Corporation System and method for web server migration
US20050038828A1 (en) * 2003-08-14 2005-02-17 Oracle International Corporation Transparent migration of stateless sessions across servers
US7765272B1 (en) * 2003-09-30 2010-07-27 Cisco Technology, Inc. Method and system for migrating content on a network
US7383463B2 (en) * 2004-02-04 2008-06-03 Emc Corporation Internet protocol based disaster recovery of a server
US7613889B2 (en) * 2004-06-10 2009-11-03 International Business Machines Corporation System, method, and program for determining if write data overlaps source data within a data migration scheme
US20070094467A1 (en) * 2005-10-20 2007-04-26 Yasuo Yamasaki Method for rolling back from snapshot with log
US7661015B2 (en) * 2006-05-16 2010-02-09 Bea Systems, Inc. Job scheduler
US7769722B1 (en) * 2006-12-08 2010-08-03 Emc Corporation Replication and restoration of multiple data storage object types in a data network
US20090006493A1 (en) * 2007-06-29 2009-01-01 International Business Machines Corporation Method For Enabling Traceability And Recovery From Errors During Migration Of Software Applications
US20090222691A1 (en) * 2008-02-29 2009-09-03 Riemers Bill C Data Migration Manager

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120221813A1 (en) * 2011-02-28 2012-08-30 Hitachi, Ltd. Storage apparatus and method of controlling the same
US20120239168A1 (en) * 2011-03-16 2012-09-20 General Electric Company Virtual communication relationship information extraction, availability determination and validation from foundation fieldbus device description files
US10545913B1 (en) * 2017-04-30 2020-01-28 EMC IP Holding Company LLC Data storage system with on-demand recovery of file import metadata during file system migration
US10740156B1 (en) * 2018-02-22 2020-08-11 Amazon Technologies, Inc. Reversible representation-based partitioning of distributed computing environments
US11637896B1 (en) 2020-02-25 2023-04-25 Pure Storage, Inc. Migrating applications to a cloud-computing environment
US11868622B2 (en) 2020-02-25 2024-01-09 Pure Storage, Inc. Application recovery across storage systems
US11755226B2 (en) 2020-09-18 2023-09-12 Hewlett Packard Enterprise Development Lp Tracking changes of storage volumes during data transfers
US11720274B2 (en) 2021-02-03 2023-08-08 Hewlett Packard Enterprise Development Lp Data migration using cache state change
US11741066B2 (en) 2021-05-25 2023-08-29 International Business Machines Corporation Blockchain based reset for new version of an application
US11693565B2 (en) 2021-08-10 2023-07-04 Hewlett Packard Enterprise Development Lp Storage volume synchronizations responsive to communication link recoveries

Similar Documents

Publication Publication Date Title
US8112665B1 (en) Methods and systems for rapid rollback and rapid retry of a data migration
US11836155B2 (en) File system operation handling during cutover and steady state
US11016696B2 (en) Redundant distributed data storage system
US10146453B2 (en) Data migration using multi-storage volume swap
US8812436B2 (en) Schedule based data lifecycle management
US11481139B1 (en) Methods and systems to interface between a multi-site distributed storage system and an external mediator to efficiently process events related to continuity
US10311028B2 (en) Method and apparatus for replication size estimation and progress monitoring
US20170004058A1 (en) Managing backup operations from a client system to a primary server and secondary server
US20220043727A1 (en) Assigning backup resources in a data storage management system based on failover of partnered data storage resources
US20160162371A1 (en) Supporting multi-tenancy through service catalog
US20050015409A1 (en) Techniques for performing operations on migrated files without recalling data
US9275060B1 (en) Method and system for using high availability attributes to define data protection plans
US10353872B2 (en) Method and apparatus for conversion of virtual machine formats utilizing deduplication metadata
US11645237B2 (en) Replicating data utilizing a virtual file system and cloud storage
EP3019987B1 (en) Virtual database rewind
US20190258548A1 (en) Storage Unit Replacement
US10452680B1 (en) Catch-up replication with log peer
US10860427B1 (en) Data protection in a large-scale cluster environment
US10901859B2 (en) Automated development of recovery plans
US11620191B2 (en) Fileset passthrough using data management and storage node
WO2008103429A1 (en) Data management in a data storage system using data sets
US11442815B2 (en) Coordinating backup configurations for a data protection environment implementing multiple types of replication

Legal Events

Date Code Title Description
AS Assignment

Owner name: NETAPP, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SOMAVARAPU, NAGENDER;PALSULE, ANURAG;REDDY, MUDHIGANTI DEVENDER;AND OTHERS;REEL/FRAME:024736/0029

Effective date: 20100707

FEPP Fee payment procedure

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

STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 12