Snapshot reset method and apparatus

A method, device, and system for resetting snapshots are provided. The reset of a snapshot incorporates the traditional snapshot delete and snapshot create operations into a single operation. Additionally, a snapshot created under the reset operation may receive an array partition from a snapshot being deleted under the same snapshot reset operation thereby retaining its identifying characteristics.

FIELD

The present invention is directed to data storage management. In particular, the present invention is directed to methods and apparatuses for re-setting snapshots.

BACKGROUND

The need to store digital files, documents, pictures, images and other data continues to increase rapidly. In connection with the electronic storage of data, various data storage systems have been devised for the rapid and secure storage of large amounts of data. Such systems may include one or a plurality of storage devices that are used in a coordinated fashion. Systems in which data can be distributed across multiple storage devices such that data will not be irretrievably lost if one of the storage devices (or in some cases, more than one storage device) fails are also available. Systems that coordinate operation of a member of individual storage devices can also provide improved data access and/or storage times. Examples of systems that can provide such advantages can be found in the various RAID (redundant array of independent disks) levels that have been developed. Whether implemented using one or a plurality of storage devices, the storage provided by a data storage system can be treated as one or more storage volumes.

In order to facilitate the availability of desired data, it is often advantageous to maintain different versions of a data storage volume. Indeed, data storage systems are available that can provide at least limited data archiving through backup facilities and/or snapshot facilities. The use of snapshot facilities greatly reduces the amount of storage space required for archiving large amounts of data.

Snapshots provide a versatile feature that is useful for data recovery operations, such as backup and recovery of storage elements. However, traditional backup systems are limited by snapshot system requirements and restrictions. More specifically, backup systems using snapshot applications for backups typically have to configure backup settings based on the features and parameters defined by the snapshot application. Most backup systems perform systematic backups (e.g., daily, weekly, monthly, etc.) of a data storage volume. The frequency of the backups generally depends upon the use of the storage volume and whether a significant amount of data changes on a regular basis. Furthermore, most backup systems utilize only a fixed number of snapshots. With this restriction, backup systems are generally required to delete the oldest snapshot prior to creating a new snapshot that represents the current point-in-time of the data storage volume. This is cumbersome to backup system managers because each time a new snapshot is created it is assigned new attributes such as a World Wide Name (WWN), Logical Unit Number (LUN), Serial Number, and the like, which requires the backup system manager to reconfigure the backup application for the new snapshot volume information. Furthermore, since, in most cases, the volume looks like a new volume to the backup application, one cannot perform incremental backups due to the fact that the backup application does not know about the “new” volume.

SUMMARY

The present invention is directed to solving these and other problems and disadvantages of the prior art. In accordance with embodiments of the present invention, a service for efficiently resetting a snapshot is provided. The method generally comprises receiving a command to reset a first snapshot of a master volume, where the first snapshot includes a first array partition and first snapshot data. The method continues by disassociating the first array partition from the first snapshot and associating the first array partition with a second snapshot of the master volume. After disassociating and associating the first array partition, the method continues by updating the first array partition to reflect a size of the master volume at a point-in-time associated with the second snapshot. Typically the first array partition is disassociated from the first snapshot prior to being associated with the second snapshot, but such an order of events is not required. For example, the disassociation and association may be contemporaneous or the association may occur prior to the disassociation.

As used herein, the terms “partition” and “array partition” represent the entity (e.g., the snapshot and corresponding master volume) to the outside world, that is applications running outside the storage controller. In essence, the array partition represents the attributes and identity of the volume. In other words, the array partition represents the name, LUN, and serial number of the volume. These identifying characteristics may be used by a backup application and other entities such as access control lists, zoning, and so on to indicate how the volume is to be used. One aspect of the present invention is that these identifying characteristics remain unchanged during and after a snapshot reset. Only the data underlying is changed, so that to the external application, it appears as though the data has been updated as opposed to having a snapshot being removed and then having the data replaced.

In accordance with at least some embodiments of the present invention, the first snapshot (i.e., the snapshot firstly associated with the first array partition) is deleted and the second snapshot (i.e., the snapshot secondly associated with the first array partition) is created as a new snapshot via the reset operation. However, in accordance with certain embodiments of the present invention, the second snapshot may correspond to a snapshot in existence before the reset operation is initiated. Accordingly, an array partition may be transferred between existing snapshots as well as from an existing snapshot to a new snapshot.

In accordance with at least some embodiments of the present invention, a device for controlling a storage system is provided. The device may comprise a reset application adapted to receive a reset command and in response to receiving a reset command, transfer a first array partition associated with first snapshot of a master volume to a second snapshot of the master volume, where the first array partition provides access to a virtual disk drive which can read and/or write fixed memory block addresses. The array partition transferred from the first snapshot to the second snapshot carries with it certain attributes (e.g., a global identifier such as a WWN, a LUN, a Serial Number, and a zoning of the LUN) that allow a backup application to reference the second snapshot in the same way that it previously referenced the first snapshot. Accordingly, reconfiguration of backup systems is minimized due to the use of a recycled array partition realized under a snapshot reset operation.

Additional features and advantages of embodiments of the present invention will become more readily apparent from the following description, particularly when taken together with the accompanying drawings.

DETAILED DESCRIPTION

In accordance with embodiments of the present invention, a snapshot is a block level point-in-time representation of data on a storage volume. The data is essentially frozen in time at the instant that the snapshot is taken. Although data on the storage volume may change as a result of write operations, the data represented by the snapshot will remain constant and frozen in time at the instant that the snapshot was taken. In order to preserve snapshot data, a backing store, also known as a snap pool, is used to store data that is not otherwise represented in the storage volume and snapshot metadata. All data and metadata associated with the snapshot is stored in the backing store. In accordance with embodiments of the present invention, data is stored within the snapshot in “chunks.” A chunk is equivalent to a number of Logical Block Addresses (LBAs). Alternatively or in addition, data can be stored within subchunks. A subchunk is a fixed size subset of a chunk. Pointers, table entries, or other data structures can be used to identify the location of a chunk in the backing store.

FIG. 1is a block diagram depicting an electronic data system100in accordance with embodiments of the present invention incorporating a first data storage system104and a second data storage system108. The electronic data system100may also include one or more host processors, computers or computer systems112. In addition, the electronic data system100may include or may be interconnected to an administrative computer116. As will be appreciated by one of skill in the art after consideration of the present disclosure, embodiments of the present invention have application in association with single or multiple hosts112in storage area network (SAN) or direct connect environments.

The data storage systems104,108are typically interconnected to one another through an in-band network120. The in-band network120may also interconnect the data storage systems104,108to a host computer112and/or an administrative computer116. The electronic data system100may also include an out-of-band network124interconnecting some or all of the electronic data system100nodes104,108,112and/or116. For example, one or more host computers112are connected to each data storage system104,108. For instance, a first data storage system104is connected to a second data storage system108across some distance by a Fibre Channel or a TCP/IP network120, and each of these data storage systems104,108is connected to a host computer112through an in-band120and/or an out-of-band124network.

The in-band or storage area network120generally functions to transport data between data storage systems104and/or108and host devices112, and can be any data pipe capable of supporting multiple initiators and targets. Accordingly, examples of in-band networks120include Fibre Channel (FC), iSCSI, parallel SCSI, Ethernet, ESCON, or FICON connections or networks, which may typically be characterized by an ability to transfer relatively large amounts of data at medium to high bandwidths. The out-of-band network124generally functions to support the transfer of communications and/or commands between various network nodes, such as data storage resource systems104,108, host computer112, and/or administrative computers116, although such data may also be transferred over the in-band communication network120. Examples of an out-of-band communication network124include a local area network (LAN) or other transmission control protocol/Internet protocol (TCP/IP) network. In general, the out-of-band communication network124is characterized by an ability to interconnect disparate nodes or other devices through uniform user interfaces, such as a web browser. Furthermore, the out-of-band communication network124may provide the potential for globally or other widely distributed management of data storage systems104,108via TCP/IP.

Every electronic data system node or computer104,108,112and116, need not be interconnected to every other node or device through both the in-band network120and the out-of-band network124. For example, no host computer112needs to be interconnected to any other host computer112, data storage system104,108, or administrative computer116through the out-of-band communication network124, although interconnections between a host computer112and other devices104,108,116through the out-of-band communication network124are not prohibited. As another example, an administrative computer116may be interconnected to at least one storage system104or108through the out-of-band communication network124. An administrative computer116may also be interconnected to the in-band network120directly, although such an interconnection is not required. For example, instead of a direct connection, an administrator computer116may communicate with a controller of a data storage system104,108using the in-band network120.

In general, a host computer112exchanges data with one or more of the data storage systems104,108in connection with the performance of the execution of application programming, whether that application programming concerns data management or otherwise. Furthermore, an electronic data system100may include multiple host computers112. An administrative computer116may provide a user interface for controlling aspects of the operation of the storage systems104,108. The administrative computer116may be interconnected to the storage system104,108directly, and/or through a bus or network120and/or124. In accordance with still other embodiments of the present invention, an administrative computer116may be integrated with a host computer112. In addition, multiple administrative computers116may be provided as part of the electronic data system100. Furthermore, although two data storage systems104,108are shown inFIG. 1, an electronic data system100may include more than two data storage systems or may include a single data storage system.

FIG. 2illustrates components that may be included in a data storage system104,108in accordance with embodiments of the present invention. In general, the data storage system104,108includes a number of storage devices204. Examples of storage devices204include hard disk drives, such as serial advanced technology attachment (SATA), small computer system interface (SCSI), serial attached SCSI (SAS), Fibre Channel (FC), or parallel advanced technology attached (PATA) hard disk drives. Other examples of storage devices204include magnetic tape storage devices, optical storage devices or solid state disk devices. Furthermore, although a number of storage devices204are illustrated, it should be appreciated that embodiments of the present invention are not limited to any particular number of storage devices204, and that a lesser or greater number of storage devices204may be provided as part of a data storage system104. As can be appreciated by one of skill in the art, one or more arrays and/or array partitions, hereinafter referred to as logical unit numbers (LUNs) comprising a storage volume, may be established on the data storage devices204. As can be further appreciated by one of skill in the art, a LUN may be implemented in accordance with any one of the various array levels or other arrangements for storing data on one or more storage devices104. As can also be appreciated by one of skill in the art, the storage devices204may contain data comprising a master storage volume, which may correspond to a LUN, in addition to one or more snapshots of the master storage volume taken at different times. As can further be appreciated by one of skill in the art, snapshots may comprise metadata and data stored in a backing store on the storage devices204. As can also be appreciated by one of skill in the art, the storage devices204contain data comprising a master storage volume, which may correspond to a LUN, and one or more snapshots of the storage volume taken at different times. In one embodiment, the snapshots may be mapped to the LUNs and stored on a backing store. However, the backing store, which also occupies an array and/or array partition, does not have a LUN number assigned to it, thus making the backing store invisible to a host computer112and/or administrative computer116.

A data storage system104,108, in accordance with embodiments of the present invention, may be provided with a first controller slot208a. In addition, other embodiments may include additional controller slots, such as a second controller slot208b. As can be appreciated by one of skill in the art, a controller slot208may comprise a connection or set of connections to enable a controller212to be operably interconnected to other components of the data storage system104,108. Furthermore, a data storage system104,108in accordance with embodiments of the present invention includes at least one controller212a. For example, while the data storage system104,108is operated in a single controller, non-failover mode, the data storage system104,108may include exactly one controller212. A data storage system104,108in accordance with other embodiments of the present invention may be operated in a dual redundant active-active controller mode by providing a second controller212b. When a second controller212bis used in addition to a first controller212a, the second controller slot208breceives the second controller. As can be appreciated by one of skill in the art, the provision of two controllers,212aand212b, permits data to be mirrored between the controllers212a-212b, providing redundant active-active controller operation.

One or more busses or channels216are generally provided to interconnect a controller or controllers212through the associated controller slot or slots208to the storage devices204. Furthermore, while illustrated as a single shared bus or channel216, it can be appreciated that a number of dedicated and/or shared buses or channels may be provided. Additional components that may be included in a data storage system104include one or more power supplies224and one or more cooling units228. In addition, a bus or network interface220may be provided to interconnect the data storage system104,108to the bus or network112, and/or to a host computer108or administrative computer116.

Although illustrated as a complete RAID system inFIG. 2, it should be appreciated that the data storage system104,108can comprise one or more storage volumes implemented in various other ways. For example, the data storage system104,108may comprise a hard disk drive or other storage device204connected or associated with a server or a general-purpose computer. As further examples, the storage system104may comprise a Just a Bunch of Disks (JBOD) system or a Switched Bunch of Disks (SBOD) system.

FIG. 3illustrates aspects of a storage controller212in accordance with embodiments of the present invention. In general, a storage controller212includes a processor subsystem304capable of executing instructions for performing, implementing and or controlling various controller212functions. Such instructions may include instructions for implementing aspects of a snapshot reset method and apparatus. Furthermore, such instructions may be stored as software and/or firmware. As can be appreciated by one of skill in the art, operations concerning the generation of parity data or other operations may be performed using one or more hardwired and/or programmable logic circuits provided as part of the processor subsystem304. Accordingly, the processor subsystem304may be implemented as a number of discrete components, such as one or more programmable processors in combination with one or more logic circuits. Processor subsystem304may also include or be implemented as one or more integrated devices or processors. For example a processor subsystem may comprise a complex programmable logic device (CPLD).

A controller212also generally includes memory308. The memory308is not specifically limited to memory of any particular type. For example, the memory308may comprise a solid-state memory device, or a number of solid-state memory devices. In addition, the memory308may include separate non-volatile memory310and volatile memory312portions. As can be appreciated by one of skill in the art, the memory308may include a read cache316and a write cache320that are provided as part of the volatile memory312portion of the memory308, although other arrangements are possible. By providing caches316,320, a storage controller212can improve the speed of input/output (IO) operations between a host112and the data storage devices204comprising an array or array partition. Examples of volatile memory312include DRAM and SDRAM.

The non-volatile memory310may be used to store data that was written to the write cache of memory308in the event of a power outage affecting the data storage system104. The non-volatile memory portion310of the storage controller memory308may include any type of data memory device that is capable of retaining data without requiring power from an external source. Examples of non-volatile memory310include, but are not limited to, compact flash or other standardized non-volatile memory devices.

A volume information block324may be stored in the non-volatile memory310, although in accordance with at least some embodiments of the present invention, the volume information block324resides in volatile memory312. The volume information block324comprises data that may be used to represent attribute and state information for master volumes, backing stores, and/or snapshots. Each master volume, backing store, and snapshot is typically associated with a different volume information block324. The volume information block324is generally employed by the processor304to determine whether certain data is located on master volumes, backing stores, and/or snapshots and whether such data is safe to access based on the state of each. For example, the state of a master volume or backing store may be such that if data access were attempted, data corruption may occur. Accordingly, the volume information block324may be referenced prior to data access during an I/O operation.

The memory308also includes portions of the memory308comprising a region that provides storage for controller code328. The controller code328may comprise a number of components, including an I/O application332comprising instructions for accessing and manipulating data. The I/O application332may provide the controller212with the ability to perform read and/or write operations of data on a storage volume and/or on a snapshot. The I/O application332may reference the volume information block324prior to executing such operations. The I/O application332may also employ the read and write caches316and320respectively when performing such operations.

A snapshot application334is an example of another application that may be included in the controller code328. Although depicted as separate from the I/O application332, the snapshot application334may comprise functionality similar to the I/O application332. The snapshot application334is essentially responsible for the creation and management of various snapshots on a given storage volume.

In accordance with at least some embodiments of the present invention, the snapshot application may comprise a snapshot reset application336. While the snapshot reset application336is shown as being a module within the snapshot application334, one skilled in the art will appreciate that alternative embodiments of the present invention may employ the snapshot reset application336as a separate entity from the snapshot application334.

The snapshot reset application336may be adapted to reset an older snapshot with newer snapshot data. In accordance with at least some embodiments of the present invention, the snapshot reset application336may perform a synchronized snapshot delete/create operation that allows the snapshot created under the create portion of the operation to assume at least some properties of the snapshot deleted under the delete portion of the operation. For instance, the snapshot reset application336may afford the ability to transfer an array partition associated with one snapshot to another snapshot. In a more specific example, the snapshot reset application336may disassociate an array partition with a snapshot that is going to be deleted and then re-associate it with a new snapshot that is being created for a given storage volume.

A storage controller212may additionally include other components. For example, a bus and/or network interface344may be provided for operably interconnecting the storage controller212to the remainder of the data storage system104, for example through a controller slot208and a bus or channel216. Furthermore, the interface344may be configured to facilitate removal or replacement of the storage controller212in a controller slot208as a field replaceable unit (FRU). In addition, integral signal and power channels may be provided for interconnecting the various components of the storage controller212to one another.

With reference toFIGS. 4A and 4B, a series of snapshots and reset snapshots will be described in accordance with at least some embodiments of the present invention. Referring initially toFIG. 4A, a master volume404is depicted having three snapshots408a,408b, and408cassociated therewith. The snapshots408are ordered based on their relative age where the first snapshot408ais an older snapshot of the master volume404than the second snapshot408b, while both the first408aand second408bsnapshots are older snapshots of the master volume404than the third snapshot404c. Accordingly, if the I/O application332were searching for snapshot data associated with the second snapshot408b, the I/O application332would first search the second snapshot408b, and if the data were not found there, the I/O application332would search the third snapshot408c. If the data were not on the third snapshot408c, then the I/O application332would find the data on the master volume404.

Each snapshot408may be created with a separate and distinct array partition412and snapshot data416. The array partition412of each snapshot408provides the controller212access to a virtual disk drive which can read or write fixed blocks addressed by LBA. An array partition can have a member of assigned attributes such as a LUN, Serial Number, zoning on the LUN (access control for the LUN), a global identifier such as a WWN, and the like. The array partition412attributes describe how a host112and/or administrative computer116can access the snapshot408, and more specifically the snapshot data416. In accordance with at least some embodiments of the present invention, the array partition412is transferable between snapshots408. The array partition412may define or store the attributes for reference by other applications in the form of metadata.

The snapshot data416, on the other hand, is the actual data representing the point-in-time of the master volume404when the snapshot408was taken. The snapshot data416may be divided logically into chunks, subchunks and/or any other data organizational format known in the art. The snapshot data416may be updated with a copy on write (COW) operation that occurs with a change to the master volume404. In accordance with at least some embodiments of the present invention, the snapshot data416may initially be empty. But as changes occur that alter the master volume404from the point-in-time captured by the snapshot408, a COW operation causes the data from the master volume404to be transferred to the snapshot data416prior to executing the requested change of the master volume404.

Referring now toFIG. 4B, the snapshot reset application336may reset an existing snapshot408(e.g., the first snapshot408a) into a new snapshot408(e.g. a fourth snapshot408d). The reset application336may cause the array partition412associated with the first snapshot408ato disassociate with the first snapshot408athen re-associate with the fourth snapshot408d. As a result, the fourth snapshot408dcomprises all of the same attributes (e.g., a global identifier (e.g., WWN), LUN, Serial Number, zoning of the LUN, etc.) of the first snapshot408aand an external application does not have to reconfigure itself to a new array partition412. As a result of the first snapshot408alosing its array partition412its snapshot data can no longer be accessed because identifying data or addresses now refer to the fourth snapshot. As can be seen inFIG. 4B, the fourth snapshot408dcomprises its own snapshot data416to represent the master volume404. However, the fourth snapshot408dutilizes a pre-existing array partition412(e.g., from the first snapshot408a). The array partition412may be updated to reflect the current size of the master volume404but otherwise is left with the same attributes that were used for the first snapshot408a. Additionally, the fourth snapshot408dis assigned a new age that makes it the newest snapshot408as compared to the second and third snapshots408band408crespectively.

FIG. 5is a flow diagram depicting a method of resetting a snapshot408in accordance with at least some embodiments of the present invention. A snapshot reset operation is commenced when the controller212receives a command to reset a currently existing snapshot (e.g., older snapshot408) into a new snapshot408of the master volume404. Once the snapshot reset operation is initiated, the snapshot reset application336marks the older snapshot408for reset (step504). The reset mark for the older snapshot408may be registered in the volume information block324such that the I/O application332does not attempt to access or otherwise use the snapshot data416from the older snapshot408. However, in accordance with at least some embodiments of the present invention, a host112may still be allowed to access the snapshot data416from the older snapshot408while it is marked for reset, at least until such data is deleted. Each snapshot408may have a dedicated bit in the volume information block324that, if selected, indicates the corresponding snapshot408is marked for reset. Alternatively, an unselected reset bit in the volume information block324may provide the appropriate indication that the snapshot408is marked for reset.

After the older snapshot408has been marked for reset, the snapshot reset application336marks the older snapshot408for deletion (step508). The deletion mark for the older snapshot408may also be registered in the volume information block324. By marking the older snapshot408for reset prior to deletion, the older snapshot408is temporarily maintained in memory, on disk, or anywhere else where storage is available. Whereas if the older snapshot408were simply marked for deletion, then the older snapshot408would be deleted and its array partition412would be lost. By marking the older snapshot408for reset and then deletion, the snapshot reset application336also causes the older snapshot408to be disassociated from its array partition412(step512). The disassociation of the older snapshot408from the array partition412releases the array partition412thereby allowing it to be assigned to another snapshot408. The actual attributes of the array partition412are not altered as a result of the disassociation but rather are freed from the older snapshot408for use by another snapshot408. The array partition412may be selectively associated and disassociated by altering the reference between a given snapshot408and the array partition412in the volume information block324.

Once the older snapshot408and its array partition412have been adequately disassociated, the snapshot reset application336continues by updating the array partition412to reflect the current size of the master volume404(step516). Most times, user changes do not affect the size of the master volume404. Therefore, the snapshots are usually of the same size. However, since the array partition412is used to describe the current size of the master volume404at the point-in-time corresponding to the snapshot408, this step is important to cover the case when the user changes the size of the master volume. Accordingly, since the array partition412is disassociated with the older snapshot408it needs to be updated to reflect the size of the master volume404at the current point-in-time rather than a previous point-in-time. However, all other volume attributes such as its global identifier, LUN, Serial Number, and zoning of the LUN remain unchanged.

The snapshot reset application336continues by creating a new snapshot408that will provide a representation of the master volume404at the point-in-time corresponding to the execution of the reset operation (step520). The creation of a new snapshot408generally comprises allocating the required memory for the new snapshot408, then generating and storing the various data structures that will ultimately be employed to store snapshot data416. The data structures created in this step are preferably organized in a tabular fashion employing pointers and the like but any other data organization technique known in the art may also be employed.

While creating the new snapshot408, the snapshot reset application336associates the new snapshot408with the array partition412from the older snapshot408(step524). The association causes the new snapshot408to receive the same array partition attributes previously assigned to the older snapshot408. This way the snapshot can be referred to in the same manner, for example by its global identifier and Serial Number. This association also allows the newer snapshot408to be assigned to the same LUN that the older snapshot408was assigned to. This allows a backup application running on a host computer112and/or administrative computer116to reference the new snapshot408in the same way the older snapshot408was referenced. Furthermore, it obviates the need to allocate additional backing store resources to the new snapshot408.

After the new snapshot408has been associated with the array partition412from the older snapshot408, the age of the new snapshot408and correspondingly the age of the array partition412is set to reflect the master volume404at the current point-in-time (step528). Accordingly, the new snapshot408is assigned an age that is newer as compared to all other snapshots of the master volume404. As a result of the new snapshot408being assigned such an age all changes to the master volume404are reflected by COW operations that write data to the new snapshot408, even though some of that data may reflect a point-in-time associated with another snapshot408. Data will continue to be written to the new snapshot408until another snapshot408of the master volume404is taken at which point the newest snapshot408will begin receiving the data.

With the creation of the new snapshot408completed, the reset indicator for the older snapshot408is cleared from the volume information block324(step532). The release of the reset indicator leaves only the delete indicator marked in the volume information block324. Accordingly, the snapshot reset application336identifies that the older snapshot408is no longer needed for a reset operation and initiates the deletion of the older snapshot408(step536). The snapshot reset application336deletes the older snapshot408by deleting the snapshot data416associated with the older snapshot408as well as the data structures previously used to store the snapshot data416. The snapshot reset application336may also delete any residual information previously associated with the older snapshot408from the volume information block324. Thereafter, the method ends and the controller212awaits receipt of a new command (step540).