Embodiments of the present invention relate to storage systems, and in particular, to transferring volumes between storage systems.
A storage system can retain persistent point in time data to enable the quick recovery of data after data has perhaps been corrupted, lost, or altered. For example, a user accessing a document file may alter the document, save the document file, and later have remorse that the document should not have been altered. To recover the unaltered document, the user may access or be given access to persistent point in time data of the unaltered document by a storage system, administrator. Exemplary persistent point in time data is stored in a Snapshot™, available in technology offered by Network Appliance Inc., of Sunnyvale Calif.
When transferring logically organized data between two storage systems, such as data logically organized in volumes, persistent point in time data and current versions of the data can be transferred between the storage systems. However, during the transfer of volumes between the storage systems, transferring all persistent point in time data may increase the time to perform the data migration, thus causing one or both of the storage systems to be unavailable for user access. Further, data migration of volumes between multiple storage systems may cause more than two systems to be unavailable.
A solution to increase the availability of the storage systems during data migration is to transfer a portion of the persistent point in time data, thus reducing the time users have no access to the storage systems. However, this is not an optimal solution because persistent point in time data that are not migrated may be needed. For example, if the migrated current versions of the data and the migrated persistent point in time data do not contain the unaltered data sought by a user, then the user may become dissatisfied.
Accordingly, what is needed is a method and system to provide high availability of storage systems during data migration while retaining all persistent point in time data.
Embodiments of the present invention provide a method and a system for retaining all persistent point in time data during volume migration. In one exemplary embodiment, a storage system can organize data in logical constructs called volumes. Further, the volumes are stored on a collection of disks that is accessible by the storage system. Associated with each volume is persistent point in time (PPT) data, which provides read-only access to data organized by the volume. Thus, data stored on the disks can be perceived as being a collection of current data and PPT data. Such data includes, for example, a document written by a user to the disks.
During the operation of a group of storage systems, such as storage systems organized as a clustered computing environment, it may become necessary to transfer a volume from one storage system to another storage system, or to transfer a volume within one storage system. Such migrations of volumes between storage systems can be performed reliably and with minimal storage system unavailability with the use of a collective PPT data map, which is a logical organization of all the PPT data associated with a volume. By transmitting a volume and the collective PPT data map from a source storage system to a destination storage system, user access to data is minimally impacted.
For example, in an embodiment of a method for transferring data between a first system and a second system, the method includes logically comparing a plurality of PPT data maps of the first system and identifying a collective persistent point in time data map. Further, the method includes transmitting the collective persistent point in time data map from the first system to the second system, such that the second system implements a policy. The method also permits the transfer of control from the first system to the second system, such that data requests to access data stored on the first system are handled by the second system.
In an exemplary embodiment of a clustered system, the clustered system includes a first node that is configured to store a volume to be migrated. Further, the clustered system includes a second node that is configured to store the migrated volume, such that the second node includes a collective persistent point in time data map for the migration of persistent point in time data from the first node to the second node.
Alternatively, in an embodiment of a system for retaining data during a volume migration, the system includes a memory module that is configured to store a collective persistent point in time data map. The system also includes means for preventing a block allocation on a target storage system that would conflict with a block transfer from a source storage system.
Further, in an embodiment of a computer readable media containing instructions for execution on a processor for the practice of retaining persistent point in time data during a volume migration from a source volume to a target volume, the embodiment includes determining a collective persistent point in time data map. The embodiment also implements a policy while referencing the collective persistent point in time data map and permits access to data of the target volume while transferring persistent point in time data from the source volume to the target volume.
Other aspects of the invention will become apparent from the following detailed description taken in conjunction with the accompanying drawings, which illustrates by way of example, the principles of the invention.
A storage system can organize data in logical constructs called volumes. Further, the volumes are stored on a collection of disks that is accessible by the storage system. Associated with each volume is persistent point in time (PPT) data, which provides read-only access to data organized by the volume. Thus, data stored on the disks can be perceived as being a collection of data and PPT data. Data includes, for example, a document written by a user to the disks. During the operation of a group of storage systems, such as storage systems organized as a clustered computing environment, it may become necessary to transfer a volume from one storage system to another storage system. Such migrations of volumes between storage systems can be performed reliably and with minimal storage system unavailability with the use of a collective PPT data map, which is a logical organization of all the PPT data associated with a volume. By transmitting a volume and the collective PPT data map from a source storage system to a destination storage system, user access to data is minimally impacted. Further details describing the transfer of PPT data, which retains PPT data instead of discarding PPT data during volume migration are hereinafter described.
Distributed Storage System
In accordance with an embodiment of the invention,
The clients 170 may be general-purpose computers configured to interact with the node 110 in accordance with a client/server model of information delivery. For example, interaction between the clients 170 and nodes 110 can enable the provision of storage services. That is, each client 170 may request the services of the node 110, and the node 110 may return the results of the services requested by the client 170, by exchanging packets over the connection system 180, which may be a wire-based or wireless communication system. The client 170 may issue packets including file-based access protocols, such as the Common Internet File System (CIFS) protocol or Network File System (NFS) protocol, over the Transmission Control Protocol/Internet Protocol (TCP/IP) when accessing information in the form of files and directories. Alternatively, the client 170 may issue packets including block-based access protocols, such as the Small Computer Systems Interface (SCSI) protocol encapsulated over TCP (iSCSI) and SCSI encapsulated over Fibre Channel (FCP), when accessing information in the form of blocks.
Each node 110 is illustratively embodied as a dual processor storage system executing a storage operating system 300 that preferably implements a high-level module, such as a file system, to logically organize the information as a hierarchical structure of named directories, files and special types of files called virtual disks (hereinafter generally “blocks”) on the disks. However, it will be apparent to those of ordinary skill in the art that the node 110 may alternatively comprise a single or more than two processor system. Illustratively, one processor 222a can execute the functions of the N-module 310 on the node, while the other processor 222b can execute the functions of the D-module 350. It should also be appreciated that processors 222a,b may include multiple processing cores, thus improving the processing speed of the processors 222a,b.
The memory 224 illustratively comprises storage locations that are addressable by the processors and adapters for storing software program code and data structures associated with the present invention. The processor 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 300, portions of which is typically resident in memory and executed by the processing elements, functionally organizes the node 110 by, inter alia, invoking storage operations in support of the storage service implemented by the node 110. It will be apparent to those skilled in the art that other processing and memory means, including various computer readable media, may be used for storing and executing program instructions pertaining to the invention described herein.
The network adapter 225 comprises a plurality of ports adapted to couple the node 110 to one or more clients 170 over point-to-point links, wide area networks, virtual private networks implemented over a public network (Internet) or a shared local area network. The network adapter 225 thus may comprise the mechanical, electrical and signaling circuitry needed to connect the node to the network. Illustratively, the connection system 180 may be embodied as an Ethernet network or a Fibre Channel (FC) network. Each client 180 may communicate with the node 110 over the connection system 180 by exchanging discrete frames or packets of data according to pre-defined protocols, such as TCP/IP.
The storage adapter 228 cooperates with the storage operating system 300 executing on the node 110 to access information requested by the clients 170. The information may be stored on any type of attached array of writable storage device media such as video tape, optical, DVD, magnetic tape, bubble memory, electronic random access memory, micro-electro mechanical and any other similar media adapted to store information, including data and parity information. However, as illustratively described herein, the information is preferably stored on the disks 140 of the disk array 150. The storage adapter 228 comprises a plurality of ports having input/output (I/O) interface circuitry that couples to the disks over an I/O interconnect arrangement, such as a conventional high-performance, FC link topology.
In accordance with an exemplary embodiment of the present invention, storage of information on each disk array 150 is preferably implemented as one or more storage “volumes” 310 (
Storage Operating System
To facilitate access to the disks 140, the storage operating system 300 of
In the illustrative embodiment; the storage operating system 300 is preferably the NetApp® Data ONTAP® operating system available from Network Appliance Inc., of Sunnyvale, Calif., that implements a Write Anywhere File Layout (WAFL®) file system. However, it is expressly contemplated that any appropriate storage operating system may be enhanced for use in accordance with the inventive principles described herein. As such, the storage operating system 300 should be taken broadly to refer to any storage operating system that is otherwise adaptable to the teachings of this invention.
In addition, the storage operating system 300 includes a series of software layers organized to form a storage server 365 that provides data paths for accessing information stored on the disks 130 of the node 200. To that end, the storage server 365 includes a file system module 360 for managing volumes 310, a RAID system module 380 and a disk driver system module 390. The RAID system 380 manages the storage and retrieval of information to and from the volumes/disks in accordance with I/O operations, while the disk driver system 390 implements a disk access protocol such as, e.g., the SCSI protocol. A volume 310 includes zero or more persistent point in time (PPT) data 305. The PPT data 305 are read-only data that are point in time references to the volume's data (e.g. an hour ago, week ago, month age, etc.). PPT data 305 cannot be modified and can be deleted, thus providing a “snapshot” or a history of data.
It should be appreciated that in some exemplary embodiments, the “snapshot” is based on technology offered by Network Appliance Inc. of Sunnyvale, Calif. Alternative embodiments may implement a logical volume manager that use copy-on-write methods that permit the creation of persistent point in time data of block-accessible devices, such as disks. Such technology regarding copy-on-write methods are contemplated by exemplary embodiments of the present invention, for which the details are well known to those of ordinary skill in the art.
When migrating volumes 310 and PPT data 305 between nodes 110, the transfer of multiple PPT data 305 can cause node 110 unavailability during the migration. However, by utilizing a PPT data map that collectively describes multiple PPT data 305 during the volume migration, node 110 unavailability can be minimized. Further details regarding the transfer of volumes, the PPT data map, and PPT data are described with reference to
The file system 360 implements a virtualization system of the storage operating system 300 through the interaction with one or more virtualization modules illustratively embodied as, e.g., a virtual disk (vdisk) module (not shown) and a SCSI target module 335. The vdisk module enables access by administrative interfaces, such as a user interface of a management framework (not shown), in response to a user (system administrator) issuing commands to the node 110. The SCSI target module 335 is generally disposed between the FC and iSCSI drivers 328, 330 and the file system 360 to provide a translation layer of the virtualization system between the block (lun) space and the file system space, where luns are represented as blocks.
The file system 360 is illustratively a message-based system that provides logical volume management capabilities for use in access to the information stored on the storage devices, such as disks 140. That is, in addition to providing file system semantics, the file system 360 provides functions normally associated with a volume manager. These functions include (i) aggregation of the disks, (ii) aggregation of storage bandwidth of the disks, and (iii) reliability guarantees, such as mirroring and/or parity (RAID). The file system 360 illustratively implements the WAFL file system (hereinafter generally the “write-anywhere file system”) having an on-disk format representation that is block-based using, e.g., 4 kilobyte (kB) blocks and using index nodes (“inodes”) to identify files and file attributes (such as creation time, access permissions, size and block location). The file system uses files to store meta-data describing the layout of its file system; these meta-data files include, among others, an inode file. A file handle, i.e., an identifier that includes an inode number, is used to retrieve an inode from disk.
Broadly stated, all inodes of the write-anywhere file system are organized into the inode file. A file system (fs) info block specifies the layout of information in the file system and includes an inode of a file that includes all other inodes of the file system. Each logical volume has an fsinfo block that is preferably stored at a fixed location within, e.g., a RAID group. The inode of the inode file may directly reference (point to) data blocks of the inode file or may reference indirect blocks of the inode file that, in turn, reference data blocks of the inode file. Within each data block of the inode file are embedded inodes, each of which may reference indirect blocks that, in turn, reference data blocks of a file.
Operationally, a request from the client 170 is forwarded as a packet over the connection system 180 and onto the node 110 where it is received at the network adapter 225. A network driver (of layer 312 or layer 330) processes the packet and, if appropriate, passes it on to a network protocol and file access layer for additional processing prior to forwarding to the write-anywhere file system 360. Here, the file system generates operations to load (retrieve) the requested data from disk 140 if it is not resident “in core”, i.e., in memory 224. If the information is not in memory, the file system 360 indexes into the inode file using the inode number to access an appropriate entry and retrieve a logical vbn. The file system then passes a message structure including the logical vbn to the RAID system 380; the logical vbn is mapped to a disk identifier and disk block number (disk,dbn) and sent to an appropriate driver (e.g., SCSI) of the disk driver system 390. The disk driver accesses the dbn from the specified disk 140 and loads the requested data block(s) in memory for processing by the node. Upon completion of the request, the node 110 (and operating system) returns a reply to the client 170 over the connection system 180.
It should be noted that the software “path” through the storage operating system layers described above needed to perform data storage access for the client request received at the node may alternatively be implemented in hardware. That is, in an alternate embodiment of the invention, a storage access request data path may be implemented as logic circuitry embodied within a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC). This type of hardware implementation increases the performance of the storage service provided by node 110 in response to a request issued by the client 170. Moreover, in another alternate embodiment of the invention, the processing elements of adapters 225, 228 may be configured to offload some or all of the packet processing and storage access operations, respectively, from processor 222, to thereby increase the performance of the storage service provided by the node 110. It is expressly contemplated that the various processes, architectures and procedures described herein can be implemented in hardware, firmware or software.
As used herein, the term “storage operating system” generally refers to the computer-executable code operable on a computer to perform a storage function that manages data access and may, in the case of a node 110, implement data access semantics of a general purpose operating system. The storage operating system can also be implemented as a microkernel, an application program operating over a general-purpose operating system, such as UNIX® or Windows NT®, or as a general-purpose operating system with configurable functionality, which is configured for storage applications as described herein.
In addition, it will be understood to those skilled in the art that the invention described herein may apply to any type of special-purpose (e.g., file server, filer or storage serving appliance) or general-purpose computer, including a standalone computer or portion thereof, embodied as or including a storage system. Moreover, the teachings of this invention can be adapted to a variety of storage system architectures including, but not limited to, a network-attached storage environment, a storage area network and disk assembly directly-attached to a client or host computer. The term “storage system” should therefore be taken broadly to include such arrangements in addition to any subsystems configured to perform a storage function and associated with other equipment or systems. It should be noted that while this description is written in terms of a write any where file system, the teachings of the present invention may be utilized with any suitable file system, including a write in place file system.
In an illustrative embodiment, the storage server 365 is embodied as D-module 130 of the storage operating system 300 to service one or more volumes of the disk array 150. In addition, the multi-protocol engine 325 is embodied as N-module 120 to (i) perform protocol termination with respect to a client issuing incoming data access request packets over the connection system 180, as well as (ii) redirect those data access requests to any storage server 365 of the cluster 100. Moreover, the N-module 120 and D-module 130 cooperate to provide a highly-scalable, distributed storage system architecture of the cluster 100. To that end, each module includes a cluster fabric (CF) interface module 340a,b adapted to implement intra-cluster communication among the modules, including D-module-to-D-module communication for data container striping operations.
The protocol layers, e.g., the NFS/CIFS layers and the iSCSI/FC layers, of the N-module 120 function as protocol servers that translate file-based and block based data access requests from clients into CF protocol messages used for communication with the D-module 130. That is, the N-module servers convert the incoming data access requests into file system primitive operations (commands) that are embedded within CF messages by the CF interface module 340 for transmission to the D-modules 130 of the cluster 100. Notably, the CF interface modules 340 cooperate to provide a single file system image across all D-modules 130 in the cluster 100. Thus, any network port of an N-module 120 that receives a client 170 request can access any data container within the single file system image located on any D-module 130 of the cluster 100.
Further to the illustrative embodiment, the N-module 120 and D-module 130 are implemented as separately-scheduled processes of storage operating system 300; however, in an alternate embodiment, the modules may be implemented as pieces of code within a single operating system process. Communication between an N-module 120 and D-module 130 is thus illustratively effected through the use of message passing between the modules although, in the case of remote communication between an N-module 120 and D-module 130 of different nodes, such message passing occurs over the cluster switching fabric 160. A known message-passing mechanism provided by the storage operating system to transfer information between modules (processes) is the Inter Process Communication (IPC) mechanism. The protocol used with the IPC mechanism is illustratively a generic file and/or block-based “agnostic” CF protocol that comprises a collection of methods/functions constituting a CF application programming interface (API). Examples of such an agnostic protocol are the SpinFS and SpinNP protocols available from Network Appliance, Inc.
In an exemplary embodiment, luns (blocks) 402, directories 404, qtrees 406 and files 408 may be contained within flexible volumes 410, such as dual vbn flexible volumes, that, in turn, are contained within the aggregate 400. The aggregate 400 is illustratively layered on top of the RAID system, which is represented by at least one RAID plex 450 (depending upon whether the storage configuration is mirrored), wherein each plex 450 comprises at least one RAID group 460. Each RAID group further comprises a plurality of disks 430, e.g., one or more data (D) disks and at least one (P) parity disk. Whereas the aggregate 400 is analogous to a physical volume of a conventional storage system, a flexible volume is analogous to a file within that physical volume. That is, the aggregate 400 may include one or more files, wherein each file contains a flexible volume 410 and wherein the sum of the storage space consumed by the flexible volumes is physically smaller than (or equal to) the size of the overall physical volume.
A file, stored as blocks on the disks 140 is readable/writeable, while the PPT data 305 of the file is read-only. Within a volume, the PPT data 305 and the data of the file share the same blocks, i.e. if examining the on disk representation inside a flexible volume, then the metadata of PPT data 305 and the data would point to the same block numbers for storing the data for the file, as further illustrated in
However, when the file system 360 writes to a block, there is an allocation of a block from somewhere else in the flexible volume. Thus, when a block containing data is modified, a new target block is allocated. Repeated block modifications therefore cause multiple new block modifications. To track the modification of data and the creation of PPT data 305 of the data, the file system 360 can use a volume allocation map and PPT data map, respectively, which are bitmaps representing one bit per block in the flexible volume. For example, a “one” in the bitmap indicates whether the bitmap is using a block in any given time. It should be appreciated that in alternative embodiments, a “zero” can indicate a block in use.
Thus, if a file comprises ten blocks, then the bitmap of the PPT data 305 would illustrate ten bits set to indicate 10 blocks are in use. It should be appreciated that multiple bitmaps exist for multiple PPT data 305. Thus, the multiple bitmap contents indicate which blocks are in use. In an exemplary embodiment of the invention, the PPT data maps are called “snapmaps.” Blocks are “freed” and available for allocation, as indicated by the bitmaps, when the data in the blocks are deleted.
A file system layout is provided that apportions an underlying physical volume into one or more virtual volumes (or flexible volume) of a storage system, such as node 110. In an exemplary embodiment, the underlying physical volume is an aggregate 400 comprising one or more groups of disks, such as RAID groups, of the node 110. The aggregate has its own physical volume block number (pvbn) space and maintains meta-data, such as block allocation structures, within that pvbn space. Each flexible volume has its own virtual volume block number (vvbn) space and maintains meta-data, such as block allocation structures, within that vvbn space. Each flexible volume is a file system that is associated with a container file; the container file is a file in the aggregate that contains all blocks used by the flexible volume. Moreover, each flexible volume comprises data blocks and indirect blocks that contain block pointers that point at either other indirect blocks or data blocks.
In one embodiment, pvbns are used as block pointers within buffer trees of files (such as file 408) stored in a flexible volume. This “hybrid” flexible volume embodiment involves the insertion of only the pvbn in the parent indirect block (e.g., inode or indirect block). On a read path of a logical volume, a “logical” volume (vol) info block has one or more pointers that reference one or more fsinfo blocks, each of which, in turn, points to an inode file and its corresponding inode buffer tree. The read path on a flexible volume is generally the same, following pvbns (instead of vvbns) to find appropriate locations of blocks; in this context, the read path (and corresponding read performance) of a flexible volume is substantially similar to that of a physical volume. Translation from pvbn-to-disk,dbn occurs at the file system/RAID system boundary of the storage operating system 300.
In an illustrative dual vbn hybrid flexible volume embodiment, both a pvbn and its corresponding vvbn are inserted in the parent indirect blocks in the buffer tree of a file. That is, the pvbn and vvbn are stored as a pair for each block pointer in most buffer tree structures that have pointers to other blocks, e.g., level 1 (L1) indirect blocks, inode file level 0 (L0) blocks. For example, in
The pvbns reference locations on disks of the aggregate 400, whereas the vvbns reference locations within files of the flexible volume. The use of pvbns as block pointers 525 in the indirect blocks 524 provides efficiencies in the read paths, while the use of vvbn block pointers provides efficient access to required meta-data. That is, when freeing a block of a file, the parent indirect block in the file contains readily available vvbn block pointers, which avoids the latency associated with accessing an owner map to perform pvbn-to-vvbn translations; yet, on the read path, the pvbn is available.
Collective Persistent Point in Time Data Map
As previously described above, the PPT data map 610 performs a similar function of identifying blocks in use or not in use. Grouping the PPT data maps 610 together produces a collective PPT data map 620. For example, the collective PPT data map 620 can be created by performing a logical operation between the existing PPT data maps 610. An exemplary logical operation is a logical “OR” operation, but it should be appreciated that any suitable logical operation for creating the collective PPT data map 620 is possible, as long as the collective PPT data map 620 represents the blocks in use and not in use in the PPT data maps 610. When migrating the volume 310 from a source node 110 to a destination node 110, the collective PPT data map 620 is transferred, along with the volume's current data blocks, without the PPT data maps 610.
In accordance with an embodiment of the invention,
When performing a volume migration, a system administrator, or a user with administrative privileges, may determine that the source node disks 140 are over-utilized or that the node may have inadequate memory or network capacity, by examining statistics related to the performance of the source node. It should be appreciated that well-known methods of gathering such statistics are possible, such as using a network analyzer software application and the like.
Once the system administrator decides to transfer a volume, such as volume-1A from one node to another, the system administrator can use a command line interface (CLI) and/or a web-based graphical user interface (GUI) to initiate the volume migration operation. In an alternative exemplary embodiment, an automated system is capable of making a decision to transfer a volume. For example, a policy-based management system may automatically transfer volumes when a certain condition exists, such as disk space over-utilization. After initiating the volume migration operation, a volume 310 can be viewed as a set of read/write (r/w) blocks and a list of PPT data, such that each PPT data contains read-only files.
In an exemplary embodiment, the r/w portion of volume-1A is selected by the file system and transmitted to the destination node if the r/w portion is not being modified. Specifically, this can be performed by examining the volume allocation map to identify which blocks of the r/w volume are in use. The blocks in use are transferred from the source node to the destination node via, for example, the cluster switching fabric 160 (
For example, volume-1A may use four blocks of current data (not shown), such as block-B1, block-B2, block-B3, and block-B4. After the initiation of the migration of volume-1A from the source node to the destination node, a persistent point in time image includes information that block-B1, block-B2, block-B3, and block-B4 are in use. The four blocks are transferred from the source node to the destination node, such that volume-1B is populated. However, access to volume-1A continues such that by the end of the block transfers to volume-1B, block-B2 may no longer contain current data. Instead the current data may reside in block-B7.
At this point in time, access to volume-1A is suspended and the current persistent point in time data is compared with respect to block-B1, block-B2, block-B3, and block-B4. This examination leads to the discovery that block-B7 contains current data to be transferred. Accordingly, block-B7 is transferred from volume-1A to volume-1B and the identity of the destination node is replaced with the identity of the source node. It should be appreciated that access to the source node is no longer permitted after the identity transfer in order to prevent network congestion, data inconsistencies, and the like. In other exemplary embodiments, as described in relation to
While access is permitted to volume-1B, blocks identified by the collective persistent point in time data map are not used to allocate blocks in volume-1B. For example, block-B5 and block-B6 of volume-1A may be used by old persistent point in time data. Since block-B5 and block-B6 were not previously transferred, the blocks are migrated after volume-1B becomes the “live” volume for permitted access. In embodiments of the present inventions, without the collective persistent point in time data map, block-B5 and block-B6 may have been allocated during “write” operations. However, since the collective persistent point in time data map behaves as a placeholder for the blocks of volume-1A that were not previously migrated, block-B5 and block-B6 are prevented from being erroneously allocated on volume-1B during “write” operations. Thus, block-B5 and block-B6 can be safely transferred from volume-1A to volume-1B, thus preventing data inconsistencies.
Then, in operation 806, the storage operating system of the target node creates a target volume. Specifically, volume creation on the target node is the same process as volume creation on the source node. For example, the storage operating system establishes a volume allocation map and other metadata structures, such as described with the buffer trees in reference to
In operation 814, the source volume transmits the differences between the PPT data maps to the target volume and performs an update to the target volume. Then, returning to
During operation 818, the storage operation system of the source node determines the differences between the source volume allocation map, which indicates the blocks in use by the source volume, and the most recent PPT data map. Then, in operation 820, the source node transmits the differences between the source volume allocation map and the most recent PPT data map to the target volume of the target node and performs an update to the target volume. Further, the r/w block contents of the volume are also transmitted from the source volume to the target volume.
Thereafter, in operation 822, the source node and the target node switch identities, which switches the identities of the source volume and target volume. The effect of switching identities is that once the quiesced period ends, user access resumes on the target volume and not the source volume. It should be appreciated that the process to switch identities includes, and is not limited to, switching node names and IP addresses if the target node will replace the source node.
However, if both the source and target nodes will remain active for user access, then addresses of a volume database (not shown) can be updated to reflect that user access to the migrated volume should occur on the target node after the volume migration. For example, in one exemplary embodiment of a cluster, an N-module communicates with a client. Each N-module of the distributed storage system can communicate with a D-module. Thus, a source volume of source D-module can be migrated to a target D-module. A distributed volume database (not shown) accessible to all N-modules contains location information of particular volumes that reside on a particular D-module. Thus, swapping identities, such as the switch described above, can be an update of entries in the distributed volume database.
In an exemplary embodiment of the present invention, the storage operating system of the source node calculates a collective PPT data map in operation 824. For example, the collective PPT data map may be created by performing a logical operation, such as a logical “OR” operation between the collection of the PPT data map contents. Thus, if in bitmap location 3×4 (row 3, column 4) of an n×n bitmap of two PPT data maps there exists a “0,” then the corresponding 3×4 bitmap location of the collective PPT data map would indicate a “0.” It should be appreciated that other suitable operations are possible for determining the contents of a collective PPT data map, as long as the resulting collective PPT data map indicates a representation of the collection of PPT data.
Thereafter, in operation 826, the source node transmits the collective PPT data map to the target node. Then, in operation 828, the quiesced period ends and user access is restored to the source and target volumes. Accordingly, the quiescent period is brief and exists during the processing of bitmaps, such as the creation of the collective PPT data map. At this point, users may access the source node and the target node, such as a non-migrated volume on the source node and the migrated volume on the target volume.
During the on-the-fly, real-time operation of the nodes, wherein user access is permitted, more than one PPT data may be created in operation 830 on the source node. Specifically during this non-quiesced period, the collective PPT data map is a placeholder for the upcoming PPT data transfer from the source node to the target node. By using this placeholder, new PPT data can be created continuously without accidental conflicting block allocations between the new PPT data and the source PPT data to be migrated. Further, a rule, possibly implemented as a policy, can be that during PPT data migration, a block is available for allocation on the target volume if and only if the volume allocation bitmap and the collective PPT data map indicate that the corresponding bitmap location is clear, i.e. indicates a “0.” Accordingly, the rule prevents a block allocation on the target volume when a block is marked as “in use” in the collective PPT data map.
An advantage to users by using the collective PPT data map and the policy is that new PPT data can be created while transferring “old” PPT data from the source node to the target node. Thus, there is very little latency from the user perspective during the volume migration because potentially gigabytes worth of PPT data are not being migrated during the quiesced period. In alternative embodiments, not all PPT data may be migrated. For example, certain PPT data may be selected for migration, while others are retained on the source node. Alternatively, some PPT data may be deleted, thus obviating the need to migrate the deleted PPT data.
The operations herein described are purely exemplary and imply no particular order. Further, the operations can be used in any sequence when appropriate and can be partially used. With the above embodiments in mind, it should be understood that the invention can employ various computer-implemented operations involving data stored in computer systems. These operations are those requiring physical manipulation of physical quantities. Usually, though not necessarily, these quantities take the form of electrical, magnetic, or optical signals capable of being stored, transferred, combined, compared and otherwise manipulated.
Any of the operations described herein that form part of the invention are useful machine operations. The invention also relates to a device or an apparatus for performing these operations. The apparatus can be specially constructed for the required purpose, or the apparatus can be a general-purpose computer selectively activated or configured by a computer program stored in the computer. In particular, various general-purpose machines can be used with computer programs written in accordance with the teachings herein, or it may be more convenient to construct a more specialized apparatus to perform the required operations.
The invention can also be embodied as computer readable code on a computer readable medium. The computer readable medium is any data storage device that can store data, which can be thereafter be read by a computer system. Examples of the computer readable medium include hard drives accessible via network attached storage (NAS), Storage Area Networks (SAN), read-only memory, random-access memory, CD-ROMs, CD-Rs, CD-RWs, magnetic tapes and other optical and non-optical data storage devices. The computer readable medium can also be distributed over a network-coupled computer system so that the computer readable code is stored and executed in a distributed fashion. The computer readable medium can also be distributed using a switching fabric, such as used in compute farms.
The foregoing description has been directed to particular embodiments of this invention. It will be apparent, however, that other variations and modifications may be made to the described embodiments, with the attainment of some or all of their advantages. Specifically, it should be noted that the principles of the present invention may be implemented in non-distributed file systems. Furthermore, while this description has been written in terms of N and D-modules, the teachings of the present invention are equally suitable to systems where the functionality of the N and D-modules are implemented in a single system. Alternately, the functions of the N and D-modules may be distributed among any number of separate systems, wherein each system performs one or more of the functions. Additionally, the procedures, processes and/or modules described herein may be implemented in hardware, software, embodied as a computer-readable medium having program instructions, firmware, or a combination thereof. Therefore, it is the object of the appended claims to cover all such variations and modifications as come within the true spirit and scope of the invention.
Number | Name | Date | Kind |
---|---|---|---|
4570217 | Allen et al. | Feb 1986 | A |
5163131 | Row et al. | Nov 1992 | A |
5202979 | Hillis et al. | Apr 1993 | A |
5278979 | Foster et al. | Jan 1994 | A |
6629203 | Humlicek | Sep 2003 | B1 |
7096330 | Root et al. | Aug 2006 | B1 |
7389394 | Karr et al. | Jun 2008 | B1 |
7451168 | Patterson | Nov 2008 | B1 |
7454445 | Lewis et al. | Nov 2008 | B2 |
7620666 | Root et al. | Nov 2009 | B1 |
7707183 | Alstrin et al. | Apr 2010 | B2 |
7840536 | Ahal et al. | Nov 2010 | B1 |
20010028368 | Swartz et al. | Oct 2001 | A1 |
20020083037 | Lewis et al. | Jun 2002 | A1 |
20020174416 | Bates et al. | Nov 2002 | A1 |
20030182326 | Patterson | Sep 2003 | A1 |
20040030846 | Armangau et al. | Feb 2004 | A1 |
20040030951 | Armangau | Feb 2004 | A1 |
20050010618 | Hayden | Jan 2005 | A1 |
20050033929 | Burton et al. | Feb 2005 | A1 |
20050262377 | Sim-Tang | Nov 2005 | A1 |
20060064687 | Dostert | Mar 2006 | A1 |
20060294351 | Rostampour | Dec 2006 | A1 |
20080005468 | Faibish et al. | Jan 2008 | A1 |
20080216054 | Bates et al. | Sep 2008 | A1 |
20090177718 | Patterson et al. | Jul 2009 | A1 |
20090265516 | Prabhu et al. | Oct 2009 | A1 |
20090276593 | Jacobson et al. | Nov 2009 | A1 |
20100174682 | Alstrin et al. | Jul 2010 | A1 |
20110066897 | Bumgarner et al. | Mar 2011 | A1 |