Method and apparatus for implementing an enterprise virtual storage system
One embodiment is a method and apparatus for managing a virtual data storage object in a computer system including at least one host and at least one storage device that present at least one storage disk to the host as a storage resource. The host includes at least one of an LVM and a file system. The virtual data storage object is created so that at least one of a logical volume and a file is employed as a storage resource to store data stored to the virtual data storage object. Another embodiment forms a virtual data storage object with data images stored on logical volumes from LVMs on different hosts. A further embodiment forms a virtual data storage object with one data image stored to a disk and another stored to a logical volume. Another embodiment is directed to a method and apparatus for distributing the metadata that defines a virtual storage object about the computer system.
Latest EMC Corporation Patents:
- Combining explicit and implicit feedback in self-learning fraud detection systems
- System and method to enhance phrase search with nested thesaurus parsing
- Systems and methods for bi-directional replication of cloud tiered data across incompatible clusters
- Method and system for adaptive wear leveling in solid state memory
- Handling deletes with distributed erasure coding
The present invention is directed to the area of computer system storage, particularly in a network environment.
BACKGROUND OF THE INVENTIONMost computer or data processing systems include one or more host computers (e.g., servers) and one or more storage systems that store data accessed by the hosts. Conventionally, volumes of storage stored on a storage system are treated as peripherals to the host, which carries with it several implications. First, the host appears to own the data that it stores in storage volumes that are specifically assigned to the host. Second, the host typically is responsible for management (e.g., protection, replication, migration, etc.) of data that is stored on the storage volumes allocated to the host. Third, the host typically determines the placement and layout of its data across the storage volumes assigned to it. Fourth, storage volumes are perceived as being assigned to particular physical storage systems.
More recently, the concept of storage virtualization in a network environment has been proposed, see e.g., Storage Networking Virtualization, by Blunden, Berx-Debeys and Sim, IBM Redbooks (December 2000). Storage virtualization employs a different data-centric model in which storage units are no longer perceived as peripherals assigned to a particular host or physical storage device. Under this model, host devices need not be aware of the physical placement or layout of data. Thus, management of the data may be moved away from individual hosts, and can be built into a storage infrastructure, e.g., comprised of a number of storage systems connected over a storage area network (SAN).
It is an object of the present invention to provide a method and apparatus for implementing storage virtualization.
SUMMARY OF THE INVENTIONOne embodiment of the invention is directed to a method of managing a virtual data storage object in a computer system including at least one host and at least one storage device that stores data written by the at least one host, the at least one storage device presenting at least one storage disk to the at least one host as a storage resource, the at least one host including at least one of a logical volume manager (LVM) that presents at least one logical volume to other layers in the host as a storage resource and a file system that presents at least one file to other layers in the host as a storage resource. The method comprises acts of: (A) creating the virtual data storage object to be independent of any particular host and any particular storage device; and (B) creating the virtual data storage object so that at least one of the at least one logical volume and the at least one file is employed as a storage resource to store data stored to the virtual data storage object.
Another embodiment is directed to a computer readable medium for use in a computer system including at least one host and at least one storage device that stores data written by the at least one host, the at least one storage device presenting at least one storage disk to the at least one host as a storage resource, the at least one host including at least one of a logical volume manager (LVM) that presents at least one logical volume to other layers in the host as a storage resource and a file system that presents at least one file to other layers in the host as a storage resource. The computer readable medium is encoded with metadata defining a virtual data storage object that is independent of any particular host and any particular storage device in the computer system and that employs at least one of the at least one logical volume and the at least one file as a storage resource to store data stored to the virtual data storage object.
A further embodiment is directed to a computer readable medium encoded with a program for execution on a computer system including at least one host and at least one storage device that stores data written by the at least one host, the at least one storage device presenting at least one storage disk to the at least one host as a storage resource, the at least one host including at least one of a logical volume manager (LVM) that presents at least one logical volume to other layers in the host as a storage resource and a file system that presents at least one file to other layers in the host as a storage resource. The program, when executed, performs a method of managing a virtual data storage object, the method comprising acts of: (A) creating the virtual data storage object to be independent of any particular host and any particular storage device; and (B) creating the virtual data storage object so that at least one of the at least one logical volume and the at least one file is employed as a storage resource to store data stored to the virtual data storage object.
Another illustrative embodiment of the invention is directed to a control station for use in a computer system including at least one host and at least one storage device that stores data written by the at least one host, the at least one storage device presenting at least one storage disk to the at least one host as a storage resource, the at least one host including at least one of a logical volume manager (LVM) that presents at least one logical volume to other layers in the host as a storage resource and a file system that presents at least one file to other layers in the host as a storage resource, the control station to manage a virtual data storage object. The control station comprises a storage medium; and at least one controller that creates the virtual data storage object to be independent of any particular host and any particular storage device, and so that at least one of the at least one logical volume and the at least one file is employed as a storage resource to store data stored to the virtual data storage object.
A further illustrative embodiment is directed to a host computer for use in a computer system including the host computer and at least one storage device that stores data written by the host computer, the at least one storage device presenting at least one storage disk to the at least one host computer as a storage resource. The host computer comprises at least one software layer that issues access request to a virtual data storage object that is independent of the host computer and any particular storage device; at least one of a logical volume manager (LVM) that presents at least one logical volume to other software layers in the host as a storage resource and a file system that presents at least one file to other software layers in the host as a storage resource; and at least one conversion layer that converts the access requests directed to the virtual data storage object to access requests directed to at least one of the at least one logical volume and the at least one file.
Another illustrative embodiment of the invention is directed to a method for use in a computer system including at first and second hosts and at least one storage device that stores data written by the first and second hosts, the at least one storage device presenting at least one storage disk to the at least one host as a storage resource, the first host including a first logical volume manager (LVM) that presents at least one logical volume to other layers in the first host, the second host including a second LVM that presents at least one logical volume to other layers in the second host as a storage resource. The method comprising acts of: (A) creating a virtual data storage object that is independent of any particular host and any particular storage device, the virtual data storage object including first and second data images; (B) assigning the first data image to be stored on a logical volume presented by the first LVM; and (C) assigning the second data image to be stored on a logical volume presented by the second LVM.
A further illustrative embodiment is directed to a method for use in a computer system including at least one host and at least one storage device that stores data written by the at least one host, the at least one storage device presenting at least one storage disk to the at least one host as a storage resource, the at least one host including a logical volume manager (LVM) that presents at least one logical volume to other layers in the host as a storage resource. The method comprises acts of: (A) creating a virtual data storage object that is independent of any particular host and any particular storage device and includes first and second data images; (B) assigning the first data image to be stored on a logical volume presented by the LVM; and (C) assigning the second data image to be stored on a storage disk presented by the at least one storage device to the host.
Another illustrative embodiment is directed to a method for use in a computer system including at least one host and at least one storage device that stores data written by the at least one host. The method comprises acts of: (A) creating metadata defining a virtual data storage object that is independent of any particular host and any particular storage device; and (B) distributing the metadata about the computer system so that there is no central location that is the exclusive resource for accessing the metadata.
A further illustrative embodiment is directed to a computer readable medium encoded with a program for execution on a computer system including at least one host and at least one storage device that stores data written by the at least one host, the program, when executed, performs a method comprising acts of: (A) creating metadata defining a virtual data storage object that is independent of any particular host and any particular storage device; and (B) distributing the metadata about the computer system so that there is no central location that is the exclusive resource for accessing the metadata.
Another illustrative embodiment is directed to a control station for use in a computer system including at least one host and at least one storage device the control station comprising: a storage medium; and at least one controller that creates metadata defining a virtual data storage object that is independent of any particular host and any particular storage device, and distributes the metadata about the computer system so that there is no central location that is the exclusive resource for accessing the metadata.
A further illustrative embodiment is directed to a storage system for use in a computer system including at least one host and the storage system, the storage system to store data written by the at least one host, the at least one host storing a first copy of metadata for a virtual data storage object that is independent of any particular host and the storage system and that is stored using a storage resource on the storage system. The storage system comprises the storage resource; a storage medium that stores a second copy of the metadata; and at least one controller that notifies the at least one host when the second copy of the metadata is updated so that the host can update the first copy of the metadata.
Another illustrative embodiment of the invention is directed to a method of managing a virtual data storage object in a computer system including a host and at least one storage device that stores data written by the host, the at least one storage device presenting at least one storage disk to the host as a storage resource. The method comprises acts of: (A) creating the virtual data storage object to be independent of any particular host and any particular storage device and to comprise at least first and second data images; (B) presenting each of the first and second data images to host; and (C) performing a selection process within the host to select which of the first and second data images to employ in accessing the virtual data storage object.
A further illustrative embodiment is directed to a method of implementing a virtual data storage object in a computer system including at least one host and at least one storage device that stores data written by the at least one host, the virtual data storage object including at least one data image, at least one of the data image and the virtual data storage object having an attribute, the at least one storage device having at least one capability. The method comprises acts of: (A) considering the at least one capability of the at least one storage device when implementing the virtual data storage object; and (B) allocating at least one of the virtual data storage object and the at least one data image to be implemented on the at least one storage device so that the at least one capability of the at least one storage device is employed to implement the at least one attribute of the at least one of the virtual data storage object and the at least one data image.
Another illustrative embodiment is directed to a computer readable medium encoded with a program for execution on a computer system including at least one host and at least one storage device that stores data written by the at least one host, the program for implementing a virtual data storage object including at least one data image, at least one of the data image and the virtual data storage object having an attribute, the at least one storage device having at least one capability. The method comprises acts of (A) considering the at least one capability of the at least one storage device when implementing the virtual data storage object; and (B) allocating at least one of the virtual data storage object and the at least one data image to be implemented on the at least one storage device so that the at least one capability of the at least one storage device is employed to implement the at least one attribute of the at least one of the virtual data storage object and the at least one data image.
As mentioned above, one embodiment of the present invention is directed to a method and apparatus for implementing storage virtualization. The physical storage components on which storage virtualization can be implemented using the embodiments of the present invention described herein are not limited in any particular way, and can take any of numerous forms. For example, the physical storage components can include a plurality of storage systems (e.g., cached disk array systems) networked together over a storage area network (SAN), or any of a number of other devices.
The concept of storage virtualization, wherein a unit of storage is not constrained to a particular physical storage system nor owned by a particular host (i.e., it is independent of any particular host or storage system), is illustrated in FIG. 1. In the embodiment of the invention shown in
In the conceptual illustration of
In the conceptual illustration shown in
When the data object 1 is created, a unique identification scheme can be employed so that the data object can be uniquely identified. That is, within any particular computer system, there may be a plurality of data objects, such that an identification scheme can be employed so that each can be uniquely identified. This can be accomplished in any of numerous ways, examples of which are discussed below.
A result of the virtualization that is accomplished through the creation of data objects is that hosts 11, 13 need no longer be aware of the physical location of units of storage (e.g., disks) assigned to them. Rather, hosts 11, 13 need only be aware of the unique identifiers assigned to the data objects allocated to them. Thus, the actual physical storage location for the data object 1 is transparent to the hosts 11, 13, which can be advantageous as discussed below.
The virtualization of storage through the creation of data objects provides a number of advantages. For example, since the physical storage location for a data object 1 is transparent to the hosts 11, 13, management of the physical storage for the data object can be moved away from individual hosts and built into the storage infrastructure (as discussed in more detail below), which allows data management to be centralized and to be controlled by a set of policies that enables the data storage to be managed more effectively than is conventionally done.
Furthermore, the physical storage locations for a data object can be dynamically allocated (and reallocated) in a manner that is transparent to the hosts. This virtualization of storage can be analogized, for example, to the worldwide web, wherein a universal domain naming scheme (URLs) is employed to essentially obscure from the user the actual computing and storage resources employed, giving the appearance that resources (e.g., HTML pages) are suspended in the Internet and accessible via their URLs independent of the underlying infrastructure used to implement them. In accordance with one embodiment of the present invention, a unique naming scheme for data objects can accomplish a similar result, such that a data object can be considered to be suspended in a storage infrastructure, with the hosts 11, 13 that access the data object being unaware of the particular storage resources that are used to implement the data object.
In accordance with one embodiment of the present invention, tremendous flexibility is provided in the manner in which a data object is presented to applications executing on a host, as well as in the types of storage units that can be employed to form a data object.
Finally, the host 17 further includes a file system 23 that provides another layer of mapping and presents files 25 to the application layer 15 as units of storage to be used thereby. As shown in
As illustrated in
In accordance with one embodiment of the present invention, a data object 1 (
The host's handling of data objects to present them to the application layer 15 as a disk 19, file 25 or logical volume 21 can be implemented in any of numerous ways, as the present invention is not limited to any particular implementation technique. In accordance with one embodiment of the present invention, a conversion or presentation layer can be provided on the host 17 that is capable of receiving data objects (e.g., it has the capability to interface with the particular identification scheme used for identifying data objects), and performing a name conversion on each data object so that it appears to the other layers in the host (e.g., the application layer 15, file system 23 and logical volume manager 20) as a disk 19. This advantageously requires no changes to any of the other host layers to enable them to be compatible with receiving a data object. Alternatively, or in addition, when it is desired to present a data object to the application layer 15 (or file system 23) as a logical volume 21, a specially adapted LVM can be added to the host 17 that is capable of directly receiving data objects and presenting them to the other layers in the host as logical volumes. In addition, when it is desired to present a data object to the application layer as a file 25, a specially adapted file system can be added to the file system layer 23. In this respect, it will be appreciated by those skilled in the art that the file system layer 23 typically includes a number of different file systems that are accessible in parallel, with a common access layer. In accordance with one embodiment of the present invention, a file system can be added to this file system layer 23 that is capable of directly receiving data objects and presenting them to the application layer 15 as files 25.
Defining A Data Object
In accordance with one embodiment of the present invention, a data object can be conceptually considered to carry with it the definition of its structure, such that the data object is not controlled by any particular host. As shown in
An illustrative computer system 37 on which the data image 31 can be implemented is shown in
In the illustrative embodiment of
It should be appreciated that the particular structure of the data object 31 illustrated in
In accordance with one embodiment of the present invention, the data object 31 itself is considered to carry with it the definition of its internal structure. This structure can be defined by a set of classes, policies and rules that define the number of data images, how they interrelate and the manner in which each data image is implemented across physical storage devices. As stated above, each data image 33, 35 may be a complete copy of the data included in the data object. The policies or rules of the data object 31 define whether the data images are mirrored images or versions, and include the requirements for synchronization between the data images. There are no limitations on the type of information that can be provided in the rules and policies, as numerous options are possible. For example, the rules or policies for a data object 31 can impose geographical constraints concerning where specific data images should be physically stored (e.g., in connection with a large international network wherein it may be desirable to have particular data images stored in different cities). The rules or policies also can specify security access information concerning which hosts can access the data object, and can further limit access for particular hosts to only certain of the data images.
As discussed in more detail below, in accordance with one embodiment of the present invention, the computer system 37 includes a control station (not shown) that enables a system administrator to define the rules and policies for each of the data objects. After the high level structure of the data object is defined (e.g., the number of data images, any geographical constraints, mirror and versioning information, etc.), the capabilities of the physical storage devices can be considered in implementing the various data images that define the data object. In this respect, it should be appreciated that the data object can be implemented across numerous types of storage systems, including storage systems of different types and having differing capabilities. When implemented on a computer system including intelligent storage systems having sophisticated data management capabilities, those capabilities can be employed in implementing the necessary structure of the data object 31. This can be accomplished by a system administrator, or, in accordance with one embodiment of the present invention, can be accomplished automatically through the use of software that analyzes the components of the storage systems within the computer system and determines a specific physical layout for the data images that define the data object. Thereafter, in accordance with one embodiment of the present invention, metadata is created to define the data object 31.
It should be appreciated that the particular structure that implements a data object is transparent to the hosts that access the data object, such that each of the hosts simply uses the unique name assigned to a data object to access it, as the numbers of data images, their interrelationship and the physical storage devices that implement them all are transparent to the host.
Distributed Control
It should be appreciated that one aspect of the present invention that differs from conventional types of storage management is the distributed nature of the data object management. For example, although LVMs exist that manage the particular layout of logical volumes controlled thereby in a somewhat analogous fashion, that is accomplished through the use of a centralized controller, i.e., the LVM. Conversely, in accordance with one embodiment of the present invention, control over the data object is distributed throughout the computer system, as will be appreciated more fully from the discussions of illustrative embodiments below. For example, when a host seeks to access a particular data object, the host need not submit a request to a centralized controller that examines the request and determines the particular physical storage components needed to respond. Rather, the metadata that defines the data object is distributed throughout the computer system, such that the host gains access to at least some of the storage components that implement the data object automatically, without the need to access a centralized controller.
Uniquely Identifying Data Objects
As mentioned above, in accordance with one embodiment of the present invention, a unique ID is provided for each data object, so that each can be uniquely identified within a computer system. This can be done in any of numerous ways, as the present invention is not limited to any particular implementation technique. In accordance with one embodiment of the present invention, a unique ID can be provided to each data object, at the time of its creation, by a naming service. In one embodiment of the invention, the unique ID includes 128 bits, but it should be appreciated that unique identifiers of other sizes can be employed. The naming service can be implemented in any of numerous ways, and can be implemented similarly to naming services used in networking applications. The naming service assigns a unique ID to each data object at the time of its creation, and resolves any conflicts. Thereafter, the unique ID includes a pointer to the metadata for the data object, so that when a host seeks to access the data object by providing the appropriate unique ID, the metadata for the data object is returned to the host.
Load Balancing Among Data Images
It should be appreciated that in many instances, a data object will include multiple data images that may be accessible to a host. This is illustrated in
As mentioned above, in one embodiment of the present invention, the host includes one or more layers of conversion software that presents a data object to the application layer 15 (
As explained above, once a particular data image is selected, the software layer within the host that examines the data learns the particular physical storage devices used to implement the data image, and issues an access request to those storage devices in the conventional manner. It should be appreciated that many computer systems employ multiple paths between a host and a storage system. This is illustrated in
Returning to the example of
Asset and Attribute Allocation
As mentioned above, in one embodiment of the present invention, a tool (referred to as an allocation engine) is provided to facilitate the assignment of storage assets to physically store the data images specified when a data object is created. The physical storage resources within a computer system can be considered to constitute one or more pools of storage, wherein each pool shares common performance and/or functional characteristics (e.g., speed, size, reliability, type of storage device, functional capabilities, etc.). During the allocation process, each of the data images can be assigned to one or more pools of storage based upon the policies and rules that apply for that data image.
The types of attributes that can be defined for the data images in a data object are numerous, as the present invention is not limited to the use of any particular attributes. Examples of attributes that may apply to a data object or some of its data images include: (1) speed; (2) reliability, (3) size, (4) remote mirroring, (5) local mirroring; (6) performance attributes such as write once or write mostly; (7) disaster recovery; (8) versioning; and (9) application-specific attributes such as (a) a database log; (b) a temporary file; (c) mail systems; (d) web browser, etc. Thus, as seen from the foregoing illustrative list, attributes can be assigned for a particular host, or a specific application within the host. Thus, when a data object is created and its attributes are defined, in one embodiment of the present invention the allocation engine will look to the attributes and the pool of available storage resources, and make intelligent decisions concerning which storage resources should be used to implement each of the data images for the data object As mentioned above, the attributes/rules can also define the synchronization requirements for mirrors, which can impact the physical layout of mirrored devices.
As should be seen from the foregoing, the attributes can relate to any particular capabilities of the storage systems available within the computer system, an example of which is hardware replication techniques that can be used to present multiple images. When the storage systems are selected from the SYMMETRIX line of disk arrays, any of the special functionality provided thereby can be employed in implementing the attributes of the data object, e.g., a local mirroring operation can be implemented using hardware mirroring capabilities such as a business continuance volume (BCV) and a remote mirror can be implemented using SRDF. In addition, security capabilities provided within the storage system can be used to limit the visibility of certain data images only to hosts having the appropriate access privileges, an illustrative implementation of which is described in PCT publication WO 00/00889, entitled Method and Apparatus For Providing Data Management For a Storage System Coupled To a Network. Of course, it should be appreciated that the embodiment of the present invention related to utilizing the capabilities of the storage system to implement functional aspects of the data object is not limited to use with storage systems from the SYMMETRIX line of disks arrays, and can be used with any storage system, including those that capabilities similar to those described above or different capabilities.
While hierarchical storage asset management has been done before, two aspects of the allocation engine in accordance with one embodiment of the present invention are believed to be unique. First, storage asset management is conventionally done manually by a system administrator, as opposed to being done automatically by an allocation engine. Second, conventional storage system management is typically done on a single storage system and/or a single host. Conversely, in accordance with one embodiment of the present invention, the allocation engine allocates resources across an entire network of storage devices (e.g., an SAN).
It should be appreciated that the particular methodology or algorithm employed by the allocation engine to implement the assignment of storage assets to physically store the data images of a data object can take any of numerous forms, as the present invention is not limited to any particular implementation technique. In accordance with one embodiment of the present invention, a first best fit algorithm can be employed, to search from the lists of potential candidates and select the first that meets the specified criteria. However, numerous other techniques alternatively can be employed.
It should be appreciated that in accordance with one embodiment of the present invention, a central resource (referred to as a control station below) is provided to enable a user to define or modify the configuration of a data object. However, it should be appreciated that when a central control station is employed for this purpose, it does not diminish the fact that control over access to a data object is distributed, as the control station need not be accessed by a device seeking access to a data object, as access requests can be directed to numerous places distributed throughout the system as discussed in more detail below.
Data Object Building Blocks
In one embodiment of the present invention, the storage assets that can be employed as the building blocks for a data object are not limited to disks provided from a storage system. In this respect, in accordance with one embodiment of the present invention, the building blocks that form a data object can also include files 25 (
The use of storage components other than a disk as the building blocks for a data object provides a number of powerful capabilities. For example, many installed systems employ logical volume managers to manage storage, and administrators of such systems typically are hesitant to move away from the LVMs. However, one downside of employing LVMs is that they often do not have certain powerful management functionality that is available by managing storage at the disk level, for example using intelligent storage systems such as those from the SYMMETRIX line of storage systems. Thus, in accordance with one embodiment of the present invention, a data object can be formed with a first data image implemented on a logical volume, and a second data image on a disk, for example from a SYMMETRIX storage system. As a result, the logical volume can be “migrated” to a disk, which enables an installed base to continue to use its existing LVM, while also leveraging the functional capabilities that the storage system provides for its disks. For example, if remote mirroring is desired for a logical volume output from an LVM, a data object can be provided that includes one data image assigned to the logical volume, and another that is assigned to a disk output from a SYMMETRIX storage system, and then the SRDF capability of the SYMMETRIX storage system can be employed to conveniently and efficiently implement the remote mirror. Of course, it should be appreciated that this is simply an example, and that numerous other advantages can be achieved by migrating a logical volume to a storage system disk.
Another powerful capability of the embodiment of the present invention shown in
Distributed Metadata Store
As mentioned above, one embodiment of the present invention is directed to decentralized control, wherein a data object is considered to carry with it its own control information. In one embodiment of the present invention, this is implemented via the use of a distributed metadata store, wherein the metadata defining a data object is distributed throughout the computer system. This embodiment of the invention will be described referring to a computer system 79 illustrated in FIG. 7. The computer system 79 is similar in many respects to the computer system 37 of
The control station 82 has a user interface (not shown) that enables a system administrator to specify to the control station 82 the structure desired for a data object being created. Examples of the numerous ways in which a data object can be defined were described above. In one embodiment, the control station 82 executes software to perform the functions of the allocation engine discussed above, by examining the storage resources available within the computer 79 and applying the rules and policies to construct the data object. As part of the process of constructing the data object, the control station 82 can create the metadata that describes it. In accordance with one embodiment of the present invention, the control station 82 includes a full metadata store (FMDS) 84 for each data object created.
It should be appreciated from the description above that each host within the computer system 79 that can access a data object preferably has access to at least the portions of the metadata of the data object that define the data images accessible to that host. In accordance with one embodiment of the present invention, the control station 82 ensures that the metadata for each data object is accessible to every host. In the embodiment shown in
In accordance with one embodiment of the present invention shown in
For example, referring to
It should be appreciated that the above-described technique for implementing partial metadata stores is provided solely for illustrative purposes, and that numerous other techniques are possible.
It should be appreciated that the embodiment of the present invention relating to a distributed metadata store is not limited to providing only partial metadata stores on the storage systems that include components of a data object, as each of these could alternatively include a complete copy of the full metadata store 84. However, the embodiment of the present invention that employs partial metadata stores is advantageous, in that it uses less storage resources. In addition, it should be appreciated that a full metadata store is not necessary in each storage system, as the storage systems ultimately pass this metadata to the host (as discussed below), and each host need not have metadata relating to any data object images that the host does not have access to (e.g., either physical access via an available communication path or access privileges).
It should be appreciated that providing a distributed metadata store, rather than having all hosts access a centralized metadata store (e.g., in the control station 82), is advantageous for two reasons. First, the system is more fault tolerant, as there is no single point of failure (e.g., if the link to the control station 82 were to be lost). Second, contention for access to the control station 82 via all of the hosts can be avoided, as each host can gain access to the relevant portions of the metadata from other locations.
In the embodiment of the invention shown in
In the embodiment of the invention shown in
As mentioned above, a host accesses a data object by seeking access to the unique identifier assigned to that data object, and in response, the metadata for that data object is returned to the host. This can be accomplished in any of numerous ways, as the present invention is not limited to any particular implementation technique. In accordance with one embodiment of the present invention, each time a host is booted, it queries each of the storage systems accessible to it, to collect the metadata for the data objects accessible to the host. In an alternate embodiment of the invention, this process is not performed at boot time, to minimize boot time for the host. Rather, the collection of the metadata for a data object is initiated when the host device first does an “open” I/O for the data object. The host then receives the relevant portions of the metadata from the storage systems accessible to it, and maintains a local copy (e.g., within the host) of the metadata so that it need not collect the metadata each time it attempts to access the data object. Thereafter, each time the host seeks to access the data object, it refers to its local copy of the metadata.
As mentioned above, the embodiment of the present invention that maintains a local copy of the metadata for each data object accessible to a host is advantageous, in that the host need not collect the metadata each time it seeks to access a data object. However, it should be appreciated that the present invention is not limited in this respect, and that the host need not maintain a local copy.
As should be appreciated from the foregoing, one embodiment of the present invention employs multiple copies of metadata for a data object, including a full metadata store 84 in control station 82, partial metadata stores in the storage systems, and local copies in the hosts. In accordance with one embodiment of the present invention, a technique is employed to maintain coherency among the multiple copies of the metadata for each data object. This can be accomplished in any of numerous ways, as the present invention is not limited to any particular implementation technique.
In accordance with one embodiment of the present invention, consistency of the multiple copies of the metadata is maintained in the following manner. Initially, a restriction is imposed, whereby the control station 82 is the only component in the system 79 that can initiate a change in the metadata for any data object in the system. Thus, the control station 82 can detect any changes to the metadata for a storage object. In accordance with one embodiment of the present invention, control station 82 is responsible for updating the appropriate storage systems that have partial copies of the metadata for a data object when the full metadata store for that data object is updated, and each storage system is then responsible for propagating that change information to any of the hosts that have accessed the metadata from that storage system. This can be accomplished in any of numerous ways. In accordance with one embodiment of the present invention, each time a host attempts to open a data object for which a storage system has metadata, that storage system updates a list, such that the storage system maintains a list of all hosts that have accessed the metadata for a particular data object. Thus, when a storage system receives an update from the control station 82 indicating that metadata for a data object has been updated, the storage system knows which hosts have previously accessed the outdated metadata, and can propagate the updated metadata to those hosts. Thus, it is the storage systems in this embodiment of the present invention that update hosts when the metadata for a data object has been modified, which is reversed from the manner in which things are done conventionally in host-centric systems, wherein a host controls the storage units stored on a storage system, and is the entity that initiates a change in metadata and propagates any changes to the storage system.
In accordance with one illustrative embodiment of the present invention, each copy of the metadata for a data object (whether it be a partial metadata store or a full metadata store) can include information to reflect when it was last updated. This information can enable a host having access to multiple copies of the metadata for a data object to determine which copy has the most up to date information.
Illustrative Implementation of Control Station
It should be appreciated that the above-described functions of the control station can be implemented in any of numerous ways, as the present invention is not limited to any particular implementation. In accordance with one embodiment of the present invention, the control station is implemented on a single server that performs all of the functions of the control station. However, it should be appreciated that alternative implementations are possible, including ones wherein the functions of the control station are distributed among multiple servers.
An illustrative implementation of a control station 101 is shown in FIG. 8. Again, it should be appreciated that this is provided merely for illustrative purposes, as the present invention is not limited to this or any other particular implementation.
The control station 101 includes a user interface 103 that enables a system administrator or other user to communicate with the control station to perform any of the types of communication discussed below, e.g., to allow for defining or reconfiguring one or more data objects. In accordance with one embodiment of the present invention, the user interface 103 cooperates with one or more host computers, such that the control station 101 does not itself include a data entry device, but rather, can receive information from a data entry device on a host computer. Of course, it should be appreciated that the user interface can be implemented in any of numerous ways, including through the use of a data input/output device directly coupled to the control station 101, rather than being coupled through one or more host computers.
The control station 101 also includes a naming service 105 that performs the functions described above to provide a unique identifier to each data object created via the control station, and to translate user attempts to access a data object into the appropriate metadata for the data object.
In the embodiment of
Control station 101 further includes a database 111 that stores numerous types of information used by the other components within the control station 101. For example, the database 111 can store information relating to which storage resources are available for allocation by the data object manager 109, and which already have been allocated to particular data objects. In addition, the database 111 can include the full metadata store for each data object created by the data object manager 109.
In accordance with one embodiment of the present invention, in addition to the pooling together of storage resources having common attributes or capabilities, other grouping utilities can be employed to facilitate the creation of a data object. For example, in accordance with one embodiment of the present invention, the database 111 stores predefined classes of data objects, with each class providing a general description or topology for a particular type of data object that may be frequently employed. Thus, when a system administrator desires to create a new data object, the system administrator can easily select from one of the predefined classes that may be suitable. Alternatively, the system administrator can custom build a different type of data object that is distinct from the predefined classes. Although the use of predefined classes is advantageous, it should be appreciated that the present invention is not limited in this respect, and that predefined classes of data objects need not be employed.
Another organizational technique that can be optionally employed in accordance with one embodiment of the present invention relates to the formation of groups of data objects. A group is a list of data objects, and can provide a convenient management resource for a system administrator, who can perform one or more administrative functions on all of the data objects within a group. Again, it should be appreciated that although advantageous, groupings of data objects need not be employed in all embodiments of the present invention.
As discussed above, in the illustrative implementation shown in
Finally, the illustrative implementation of the control station 101 further includes an interface agent 113 that can communicate with counterpart agents in each of the host computers and storage systems. Examples of the types of communication that can be controlled by the host interface agent 113 include information relating to the propagation of a change in the metadata for a data object. For example, if a host is currently using a data object and the metadata for that data object is changed via the control station 101, the interface agent 113 can communicate with the host to have it suspend access to the data object while the control station 101 implements the desired changed to the metadata. In addition, the interface agent 113 can control communication with corresponding agents in the storage systems to perform necessary updates to the metadata for a data object
Illustrative Host Implementation
An illustrative implementation of the components to be added to a host to enable storage virtualization in accordance with the embodiments of the present invention described herein is shown in FIG. 9. It should be appreciated that this implementation is provided merely for illustrative purposes, as the present invention is not limited to this or any other particular implementation, as the capabilities of the host to enable storage virtualization in accordance with the various embodiments of the present invention described herein can be implemented in any of numerous ways.
In the illustrative implementation shown in
The host 121 further includes a storage manager agent 125 that communicates with the interface agent 113 on the control station 101, as well as with storage devices in the computer system, to pass information relating to the metadata of data objects accessible to the host 121.
As mentioned above, in one embodiment of the present invention, the host includes a metadata store 127 to store a local copy of the metadata for data objects accessible to the host 121. It should be appreciated that the local metadata store 127 is an optional feature, and is not a requirement of all embodiments of the present invention.
In the embodiment of the present invention shown in
In the implementation shown in
Finally, in the implementation shown in
Illustrative Storage System Implementation
An illustrative implementation of the components to be added to a storage system to enable storage virtualization in accordance with the embodiments of the present invention described herein is shown in FIG. 10. It should be appreciated that this implementation is provided merely for illustrative purposes, as the present invention is not limited to this or any other particular implementation, as the capabilities of the storage system to enable storage virtualization in accordance with the various embodiments described herein can be implemented in any of numerous ways. For example, storage virtualization in accordance with some of the embodiments of the present invention can be implemented without requiring any modification whatsoever to standard storage systems.
In the illustrative implementation shown in
In the implementation shown in
In accordance with one embodiment of the present invention, the storage manager agent 155 can also act to prevent inadvertent access or modification of the metadata store 153, for example by ensuring that the metadata store 153 can only be modified via the control station 101.
The above-discussed embodiments of the present invention can be implemented in any of numerous ways. For example, each of the components that can be added to a host, the control station or the storage system can be implemented in hardware, software, or a combination thereof. When implemented in software, the routines can be executed on any suitable processor.
It should be appreciated that any single component or collection of multiple components of any element within a computer system (e.g., a host, the storage system or the control station) that performs the functions described above can be generically considered as one or more controllers that control the above-discussed functions. The one or more controllers can be implemented in numerous ways, such as with dedicated hardware, or using a processor that is programmed using microcode or software to perform the functions recited above. In this respect, it should be appreciated that one implementation of the present invention comprises at least one computer readable medium (e.g., a computer memory, a floppy disk, a compact disc, a tape, etc.) encoded with a computer program that, when executed on a processor, performs the above-discussed functions that implement the embodiments of the present invention described above. The computer readable medium can be transportable such that the programs stored thereon can be loaded onto any computer system resource to implement the aspects of the present invention discussed above. In addition, it should be appreciated that the reference to a computer program that, when executed, performs the above-discussed functions is not limited to an application program running in application space on the host computer. Rather, the term computer program is used herein in a generic sense to reference any type of computer code (e.g., software or microcode) that can be employed to program a processor to implement the above-discussed aspects of the present invention.
Having described several embodiments of the invention in detail, various modifications and improvements will readily occur to those skilled in the art. Such modifications and improvements are intended to be within the spirit and scope of the invention. Accordingly, the foregoing description is provided by way of example only, and is not intended to be limiting. The invention is limited only as defined by the following claims and the equivalents thereto.
Claims
1. A method of managing a virtual data storage object in a computer system including at least one host and at least one storage device that stores data written by the at least one host, the at least one storage device presenting at least one storage disk to the at least one host as a storage resource, the at least one host including at least one of a logical volume manager (LVM) that presents at least one logical volume to other layers in the host as a storage resource and a file system that presents at least one file to other layers in the host as a storage resource, the method comprising acts of:
- (A) creating the virtual data storage object to be independent of any particular host and any particular storage device;
- (B) creating the virtual data storage object so that at least one of the at least one logical volume and the at least one file is employed as a storage resource to store data stored to the virtual data storage object;
- (C) receiving a set of parameters that defines a plurality of data images for the virtual data storage object and a manner in which the plurality of data images are interrelated; and
- (D) automatically assigning the storage resources within the computer system to store each of the plurality of data images.
2. The method of claim 1, further including an act of:
- (E) providing the host with a software layer that presents the virtual data storage object to other layers in the host as a storage disk.
3. The method of claim 1, further including an act of:
- (E) providing the host with a software layer that presents the virtual data storage object to other layers in the host as a logical volume.
4. The method of claim 1, further including an act of:
- (E) providing the host with a software layer that presents the virtual data storage object to other layers in the host as a file.
5. The method of claim 1, further including acts of:
- (E) creating metadata defining the virtual data storage object; and
- (F) distributing the metadata about the computer system so that there is no central location that is the exclusive resource for accessing the metadata.
6. The method of claim 5, wherein the at least one storage device comprises a plurality of storage devices, and wherein the act (F) comprises an act of distributing the metadata among each of the plurality of storage devices that stores data stored to the virtual data storage object.
7. The method of claim 6, wherein the act (F) comprises an act of distributing only a subset of the metadata to at least one of the plurality of storage devices.
8. The method of claim 5, wherein the at least one host comprises a plurality of hosts, and wherein the act (F) comprises an act of distributing the metadata among each of the plurality of hosts that accesses the virtual data storage object.
9. The method of claim 8, wherein the act (F) comprises an act of distributing only a subset of the metadata to at least one of the plurality of hosts.
10. The method of claim 5, wherein the at least one storage device comprises a plurality of storage devices, wherein the at least one host comprises a plurality of hosts, wherein the act (E) comprises an act of creating the metadata on a control station, and wherein the act (F) comprises an act of transmitting the metadata from the control station to the plurality of storage devices, and from the plurality of storage devices to the plurality of hosts.
11. The method of claim 1, wherein the act (B) comprises an act of creating the virtual data storage object to comprise at least first and second data images, and wherein the method further comprises acts of presenting each of the first and second data images to one of the plurality of hosts and performing a selection process within the one of the plurality of hosts to select which of the first and second data images to employ in accessing the virtual data storage object.
12. The method of claim 1, wherein the act (B) comprises an act of creating the virtual data storage object so that the at least one logical volume is employed as a storage resource to store data stored to the virtual data storage object.
13. The method of claim 1, wherein the act (B) comprises an act of creating the virtual data storage object so that the at least one file is employed as a storage resource to store data stored to the virtual data storage object.
14. The method of claim 1, wherein the at least one host comprises first and second hosts, wherein the first host comprises a first LVM and the second host comprises a second LVM, wherein the act (B) comprises an act of creating the virtual data storage object to comprise at least first and second data images, with the first data image being stored on a logical volume presented by the first LVM and the second data image being stored on a logical volume presented by the second LVM.
15. The method of claim 1, wherein the at least one logical volume comprises a plurality of logical volumes, wherein the at least one storage disk comprises a plurality of storage disks, and wherein the act (B) comprises an act of creating the virtual data storage object to comprise at least first and second data images, with the first data image being stored on one of the plurality of logical volumes and the second data image being stored on one of the plurality of storage disks.
16. The method of claim 1, wherein the at least one storage device comprises a plurality of storage devices, and wherein the act (D) comprises an act of considering performance and functionality characteristics of the plurality of storage devices in making the automatic assignment.
17. A method of managing a virtual data storage object in a computer system including at least one host and at least one storage device that stores data written by the at least one host, the at least one storage device presenting at least one storage disk to the at least one host as a storage resource, the at least one host including at least one of a logical volume manager (LVM) that presents at least one logical volume to other layers in the host as a storage resource and a file system that presents at least one file to other layers in the host as a storage resource the method comprising acts of:
- (A) creating the virtual data storage object to be independent of any particular host and any particular storage device;
- (B) creating the virtual data storage object so that at least one of the at least one logical volume and the at least one file is employed as a storage resource to store data stored to the virtual data storage object;
- (C) creating metadata defining the virtual data storage object; and
- (D) distributing the metadata about the computer system so that there is no central location that is the exclusive resource for accessing the metadata;
- wherein the at least one storage device comprises a plurality of storage devices, wherein the at least one host comprises a plurality of hosts, wherein the act (C) comprises an act of creating the metadata on a control station, and wherein the act (D) comprises an act of transmitting the metadata from the control station to the plurality of storage devices, and from the plurality of storage devices to the plurality of hosts; and
- wherein the act (A) comprises an act of creating the virtual data storage object to comprise a plurality of data images, wherein the act (D) comprises an act of storing within each one of the plurality of storage devices a list of which ones of the plurality of hosts has accessed a data image stored within the one of the plurality of storage devices, and when the metadata on the one of the plurality of storage devices is updated, transmitting updated metadata from the one of the plurality of storage devices to the ones of the plurality of hosts in its list.
18. A computer readable medium encoded with a program for execution on a computer system including at least one host and at least one storage device that stores data written by the at least one host, the at least one storage device presenting at least one storage disk to the at least one host as a storage resource, the at least one host including at least one of a logical volume manager (LVM) that presents at least one logical volume to other layers in the host as a storage resource and a file system that presents at least one file to other layers in the host as a storage resource, the program, when executed on the computer system, performs a method of managing a virtual data storage object, the method comprising acts of:
- (A) creating the virtual data storage object to be independent of any particular host and any particular storage device;
- (B) creating the virtual data storage object so that at least one of the at least one logical volume and the at least one file is employed as a storage resource to store data stored to the virtual data storage object;
- (C) receiving a set of parameters that defines a plurality of data images for the virtual data storage object and a manner in which the plurality of data images are interrelated; and
- (D) automatically assigning the storage resources within the computer system to store each of the plurality of data images.
19. The computer readable medium of claim 18, wherein the method further includes acts of:
- (E) creating metadata defining the virtual data storage object; and
- (F) distributing the metadata about the computer system so that there is no central location that is the exclusive resource for accessing the metadata.
20. The computer readable medium of claim 19, wherein the at least one storage device comprises a plurality of storage devices, and wherein the act (F) comprises an act of distributing the metadata among each of the plurality of storage devices that stores data stored to the virtual data storage object.
21. The computer readable medium of claim 20, wherein the act (F) comprises an act of distributing only a subset of the metadata to at least one of the plurality of storage devices.
22. The computer readable medium of claim 19, wherein the at least one host comprises a plurality of hosts, and wherein the act (F) comprises an act of distributing the metadata among each of the plurality of hosts that accesses the virtual data storage object.
23. The computer readable medium of claim 22, wherein the act (F) comprises an act of distributing only a subset of the metadata to at least one of the plurality of hosts.
24. The computer readable medium of claim 18, wherein the act (B) comprises an act of creating the virtual data storage object so that the at least one logical volume is employed as a storage resource to store data stored to the virtual data storage object.
25. The computer readable medium of claim 18, wherein the act (B) comprises an act of creating the virtual data storage object so that the at least one file is employed as a storage resource to store data stored to the virtual data storage object.
26. The computer readable medium of claim 18, wherein the at least one host comprises first and second hosts, wherein the first host comprises a first LVM and the second host comprises a second LVM, wherein the act (B) comprises an act of creating the virtual data storage object to comprise at least first and second data images, with the first data image being stored on a logical volume presented by the first LVM and the second data image being stored on a logical volume presented by the second LVM.
27. The computer readable medium of claim 18, wherein the at least one logical volume comprises a plurality of logical volumes, wherein the at least one storage disk comprises a plurality of storage disks, and wherein the act (B) comprises an act of creating the virtual data storage object to comprise at least first and second data images, with the first data image being stored on one of the plurality of logical volumes and the second data image being stored on one of the plurality of storage disks.
28. The computer readable medium of claim 18, wherein the at least one storage device comprises a plurality of storage devices, and wherein the act (D) comprises an act of considering performance and functionality characteristics of the plurality of storage devices in making the automatic assignment.
29. A control station for use in a computer system including at least one host and at least one storage device that stores data written by the at least one host, the at least one storage device presenting at least one storage disk to the at least one host as a storage resource, the at least one host including at least one of a logical volume manager (LVM) that presents at least one logical volume to other layers in the host as a storage resource or a file system that presents at least one file to other layers in the host as a storage resource, the control station to manage a virtual data storage object, the control station comprising:
- a storage medium; and
- at least one controller that creates the virtual data storage object to be independent of any particular host and any particular storage device, and so that at least one of the at least one logical volume and the at least one file is employed as a storage resource to store data stored to the virtual data storage object;
- wherein the at least one controller receives a set of parameters that defines a plurality of data images for the virtual data storage object and a manner in which the plurality of data images are interrelated, and automatically assigns the storage resources within the computer system to store each of the plurality of data images.
30. The control station of claim 29, wherein the at least one controller creates metadata defining the virtual data storage object and distributes the metadata about the computer system so that there is no central location that is the exclusive resource for accessing the metadata.
31. The control station of claim 30, wherein the at least one storage device comprises a plurality of storage devices, and wherein the at least one controller distributes the metadata among each of the plurality of storage devices that stores data stored to the virtual data storage object.
32. The control station of claim 31, wherein the at least one controller distributes only a subset of the metadata to at least one of the plurality of storage devices.
33. The control station of claim 30, wherein the at least one host comprises a plurality of hosts, and wherein the at least one controller distributes the metadata among each of the plurality of hosts that accesses the virtual data storage object.
34. The control station of claim 33, wherein the at least one controller distributes only a subset of the metadata to at least one of the plurality of hosts.
35. The control station of claim 29, wherein the at least one controller creates the virtual data storage object so that the at least one logical volume is employed as a storage resource to store data stored to the virtual data storage object.
36. The control station of claim 29, wherein the at least one controller creates the virtual data storage object so that the at least one file is employed as a storage resource to store data stored to the virtual data storage object.
37. The control station of claim 29, wherein the at least one host comprises first and second hosts, wherein the first host comprises a first LVM and the second host comprises a second LVM, wherein the at least one controller creates the virtual data storage object to comprise at least first and second data images, with the first data image being stored on a logical volume presented by the first LVM and the second data image being stored on a logical volume presented by the second LVM.
38. The control station of claim 29, wherein the at least one logical volume comprises a plurality of logical volumes, wherein the at least one storage disk comprises a plurality of storage disks, and wherein the at least one controller creates the virtual data storage object to comprise at least first and second data images, with the first data image being stored on at least in part on one of the plurality of logical volumes and the second data image being stored at least in part on one of the plurality of storage disks.
39. The control station of claim 29, wherein the at least one storage device comprises a plurality of storage devices, and wherein the at least one controller considers performance and functionality characteristics of the plurality of storage devices in making the automatic assignment.
40. The control station of claim 29, wherein the at least one controller includes means for creating the virtual data storage object to be independent of any particular host and any particular storage device, and so that at least one of the at least one logical volume and the at least one file is employed as a storage resource to store data stored to the virtual data storage object.
41. A host computer for use in a computer system including the host computer and at least one storage device that stores data written by the host computer, the at least one storage device presenting at least one storage disk to the host computer as a storage resource, the host computer comprising:
- at least one software layer that issues access requests to a virtual data storage object that is independent of the host computer and any particular storage device;
- at least one of a logical volume manager (LVM) that presents at least one logical volume to other software layers in the host as a storage resource or a file system that presents at least one file to other software layers in the host as a storage resource; and
- at least one conversion layer that converts at least one access request directed to the virtual data storage object to an access request directed to at least one of the at least one logical volume and the at least one file;
- wherein the virtual data storage object comprises at least first and second data images;
- wherein the host computer comprises a logical volume manager that presents a plurality of logical volumes to other layers in the host computer;
- wherein the at least one storage device presents a plurality of storage disks to the host computer; and
- wherein the at least one conversion layer converts an access request directed to the virtual data storage object to an access request directed to one of the first and second data images, converts an access request directed to the first data image to an access request directed to one of the plurality of logical volumes, and converts an access request directed to the second data image to an access request directed to one of the plurality of storage disks.
42. The host computer of claim 41, further including a presenter layer that presents the virtual data storage object to other layers in the host as a storage disk.
43. The host computer of claim 41, further including an LVM that presents the virtual data storage object to other layers in the host as a logical volume.
44. The host computer of claim 41, further including a file system that presents the virtual data storage object to other layers in the host as a file.
45. The host computer of claim 41, wherein the virtual data storage object is defined by metadata, and wherein the host computer further includes a storage medium that stores at least some of the metadata defining the virtual data storage object.
46. The host computer of claim 45, wherein the storage medium stores only a subset of the metadata that defines the virtual data storage object.
47. The host computer of claim 41, wherein the host includes at least one controller that performs a selection process to select which of the first and second data images to employ in responding to an access request to the virtual data storage object.
48. The host computer of claim 41, wherein the host computer comprises the logical volume manager (LVM) that presents at least one logical volume to other software layers in the host as a storage resource, and wherein the at least one conversion layer converts at least one of the access requests directed to the virtual data storage object to an access request directed to at least one logical volume.
49. The host computer of claim 41, wherein the host computer comprises the file system that presents at least one file to other software layers in the host as a storage resource, and wherein the at least one conversion layer converts at least one of the access requests directed to the virtual data storage object to an access request directed to at least one file.
50. The host computer of claim 41, wherein the at least one conversion layer includes means for converting at least one access request directed to the virtual data storage object to an access request directed to at least one of the at least one logical volume and the at least one file.
51. A method for use in a computer system including at least one host and at least one storage device that stores data written by the at least one host, the method comprising acts of:
- (A) creating metadata defining a virtual data storage object that is independent of any particular host and any particular storage device; and
- (B) distributing the metadata about the computer system so that there is no central location that is the exclusive resource for accessing the metadata;
- wherein the at least one storage device comprises a plurality of storage devices, wherein the at least one host comprises a plurality of hosts, wherein the act (A) comprises an act of creating the metadata on a control station, and wherein the act (B) comprises an act of transmitting the metadata from the control station to the plurality of storage devices, and from the plurality of storage devices to the plurality of hosts; and
- wherein the virtual data storage object comprises a plurality of data images, wherein the act (B) comprises an act of storing within each one of the plurality of storage devices a list of which ones of the plurality of hosts has accessed a data image stored within the one of the plurality of storage devices, and when the metadata on the one of the plurality of storage devices is updated, transmitting updated metadata from the one of the plurality of storage devices to the ones of the plurality of hosts in its list.
52. The method of claim 51, wherein the at least one storage device comprises a plurality of storage devices, and wherein the act (B) comprises an act of distributing the metadata among each of the plurality of storage devices that stores data stored to the virtual data storage object.
53. The method of claim 51, wherein the act (B) comprises an act of distributing only a subset of the metadata to at least one of the plurality of storage devices.
54. The method of claim 51, wherein the at least one host comprises a plurality of hosts, and wherein the act (B) comprises an act of distributing the metadata among each of the plurality of hosts that accesses the virtual data storage object.
55. The method of claim 54, wherein the act (B) comprises an act of distributing only a subset of the metadata to at least one of the plurality of hosts.
56. A method for use in a computer system including at least one host and at least one storage device that stores data written by the at least one host, the method comprising acts of:
- (A) creating metadata defining a virtual data storage object that is independent of any particular host and any particular storage device; and
- (B) distributing the metadata about the computer system so that there is no central location that is the exclusive resource for accessing the metadata;
- wherein the act (A) includes acts of:
- receiving a set of parameters that defines a plurality of data images for the virtual data storage object and a manner in which the plurality of data images are interrelated; and
- automatically assigning the storage resources within the computer system to store each of the plurality of data images.
57. The method of claim 56, wherein the at least one storage device comprises a plurality of storage devices, wherein the at least one host comprises a plurality of hosts, wherein the act (A) comprises an act of creating the metadata on a control station, and wherein the act (B) comprises an act of transmitting the metadata from the control station to the plurality of storage devices, and from the plurality of storage devices to the plurality of hosts.
58. The method of claim 56, wherein the at least one storage device comprises a plurality of storage devices, and wherein the act of automatically assigning comprises an act of considering performance and functionality characteristics of the plurality of storage devices in making the automatic assignment.
59. A computer readable medium encoded with a program for execution on a computer system including at least one host and at least one storage device that stores data written by the at least one host, the program, when executed on the computer system performs a method comprising acts of:
- (A) creating metadata defining a virtual data storage object that is independent of any particular host and any particular storage device; and
- (B) distributing the metadata about the computer system so that there is no central location that is the exclusive resource for accessing the metadata;
- wherein the at least one storage device comprises a plurality of storage devices, wherein the at least one host comprises a plurality of hosts, wherein the act (A) comprises an act of creating the metadata on a control station, and wherein the act (B) comprises an act of transmitting the metadata from the control station to the plurality of storage devices, and from the plurality of storage devices to the plurality of hosts; and
- wherein the virtual data storage object comprises a plurality of data images, wherein the act (B) comprises an act of storing within each one of the plurality of storage devices a list of which ones of the plurality of hosts has accessed a data image stored within the one of the plurality of storage devices, and when the metadata on the one of the plurality of storage devices is updated, transmitting updated metadata from the one of the plurality of storage devices to the ones of the plurality of hosts in its list.
60. A computer readable medium encoded with a program for execution on a computer system including at least one host and at least one storage device that stores data written by the at least one host, the program, when executed on the computer system, performs a method comprising acts of:
- (A) creating metadata defining a virtual data storage object that is independent of any particular host and any Particular storage device; and
- (B) distributing the metadata about the computer system so that there is no central location that is the exclusive resource for accessing the metadata;
- wherein the act (A) includes acts of:
- receiving a set of parameters that defines a plurality of data images for the virtual data storage object and a manner in which the plurality of data images are interrelated; and
- automatically assigning the storage resources within the computer system to store each of the plurality of data images.
61. The computer readable medium of claim 60, wherein the at least one storage device comprises a plurality of storage devices, and wherein the act (B) comprises an act of distributing the metadata among each of the plurality of storage devices that stores data stored to the virtual data storage object.
62. The computer readable medium of claim 60, wherein the act (B) comprises an act of distributing only a subset of the metadata to at least one of the plurality of storage devices.
63. The computer readable medium of claim 60, wherein the at least one host comprises a plurality of hosts, and wherein the act (B) comprises an act of distributing the metadata among each of the plurality of hosts that accesses the virtual data storage object.
64. The computer readable medium of claim 63, wherein the act (B) comprises an act of distributing only a subset of the metadata to at least one of the plurality of hosts.
65. The computer readable medium of claim 60, wherein the at least one storage device comprises a plurality of storage devices, wherein the at least one host comprises a plurality of hosts, wherein the act (A) comprises an act of creating the metadata on a control station, and wherein the act (B) comprises an act of transmitting the metadata from the control station to the plurality of storage devices, and from the plurality of storage devices to the plurality of hosts.
66. The computer readable medium of claim 60, wherein the at least one storage device comprises a plurality of storage devices, and wherein the act of automatically assigning comprises an act of considering performance and functionality characteristics of the plurality of storage devices in making the automatic assignment.
67. A control station for use in a computer system including at least one host and at least one storage device, the control station comprising:
- a user interface; and
- at least one controller that creates metadata defining a virtual data storage object that is independent of any particular host and any particular storage device, and that distributes the metadata about the computer system so that there is no central location that is the exclusive resource for accessing the metadata;
- wherein the at least one controller receives a set of parameters that defines a plurality of data images for the virtual data storage object and a manner in which the plurality of data images are interrelated, and wherein the at least one controller automatically assigns the storage resources within the computer system to store each of the plurality of data images.
68. The control station of claim 67, wherein the at least one storage device comprises a plurality of storage devices, and wherein the at least one controller distributes the metadata among each of the plurality of storage devices that stores data stored to the virtual data storage object.
69. The control station of claim 68, wherein the at least one controller distributes only a subset of the metadata to at least one of the plurality of storage devices.
70. The control station of claim 67, wherein the at least one host comprises a plurality of hosts, and wherein the at least one controller distributes the metadata among each of the plurality of hosts that accesses the virtual data storage object.
71. The control station of claim 70, wherein the at least one controller distributes only a subset of the metadata to at least one of the plurality of hosts.
72. The control station of claim 67, wherein the at least one storage device comprises a plurality of storage devices, and wherein the at least one controller considers performance and functionality characteristics of the plurality of storage devices in making the automatic assignment.
73. The control station of claim 67, wherein the at least one controller includes means for creating metadata defining a virtual data storage object that is independent of any particular host and any particular storage device, and means for distributing the metadata about the computer system so that there is no central location that is the exclusive resource for accessing the metadata.
74. A storage system for use in a computer system including at least one host and the storage system, the storage system to store data written by the at least one host, the at least one host storing a first copy of metadata for a virtual data storage object that is independent of any particular host and the storage system and that is stored using a storage resource on the storage system, the storage system comprising:
- the storage resource;
- a storage medium that stores a second copy of the metadata; and
- at least one controller that notifies the at least one host when the second copy of the metadata is updated so that the host can update the first copy of the metadata.
75. The storage system of claim 74, wherein the at least one controller further maintains a list of all hosts that access the virtual data storage object from the storage system.
76. A method of implementing a virtual data storage object in a computer system including at least one host and at least one storage device that stores data written by the at least one host, the virtual data storage object including at least one data image, at least one of the data image and the virtual data storage object having an attribute, the at least one storage device having at least one capability, the method comprising acts of:
- (A) considering the at least one capability of the at least one storage device when implementing the virtual data storage object; and
- (B) allocating at least one of the virtual data storage object and the at least one data image to be implemented on the at least one storage device so that the at least one capability of the at least one storage device is employed to implement the at least one attribute of the at least one of the virtual data storage object and the at least one data image.
77. The method of claim 76, wherein the at least one data image includes first and second data images, wherein the at least one attribute includes a mirror relationship between the first and second data images, and wherein the act (B) includes an act of allocating the first and second data images to utilize a mirroring capability of the at least one storage device.
78. The method of claim 77, wherein the mirror relationship is a local mirror relationship, and wherein the act (B) includes an act of allocating the first and second data images to a same storage device having local mirroring capability.
79. The method of claim 77, wherein the mirror relationship is a remote mirror relationship, and wherein the act (B) includes an act of allocating the first and second data images to first and second storage devices, respectively, each of the first and second storage devices having remote mirroring capability.
80. A computer readable medium encoded with a program for execution on a computer system including at least one host and at least one storage device that stores data written by the at least one host, the program for implementing a virtual data storage object including at least one data image, at least one of the data image and the virtual data storage object having an attribute, the at least one storage device having at least one capability, the method comprising acts of:
- (A) considering the at least one capability of the at least one storage device when implementing the virtual data storage object; and
- (B) allocating at least one of the virtual data storage object and the at least one data image to be implemented on the at least one storage device so that the at least one capability of the at least one storage device is employed to implement the at least one attribute of the at least one of the virtual data storage object and the at least one data image.
81. The computer readable medium of claim 80, wherein the at least one data image includes first and second data images, wherein the at least one attribute includes a mirror relationship between the first and second data images, and wherein the act (B) includes an act of allocating the first and second data images to utilize a mirroring capability of the at least one storage device.
82. The computer readable medium of claim 81, wherein the mirror relationship is a local mirror relationship, and wherein the act (B) includes an act of allocating the first and second data images to a same storage device having local mirroring capability.
83. The computer readable medium of claim 81, wherein the mirror relationship is a remote mirror relationship, and wherein the act (B) includes an act of allocating the first and second data images to first and second storage devices, respectively, each of the first and second storage device having remote mirroring capability.
5577231 | November 19, 1996 | Scalzi et al. |
5897661 | April 27, 1999 | Baranovsky et al. |
5948062 | September 7, 1999 | Tzelnic et al. |
6047294 | April 4, 2000 | Deshayes et al. |
6216202 | April 10, 2001 | D'Errico |
6732104 | May 4, 2004 | Weber |
6766359 | July 20, 2004 | Oliveira et al. |
20020019909 | February 14, 2002 | D'Errico |
20020161983 | October 31, 2002 | Milos et al. |
20030115406 | June 19, 2003 | Fought et al. |
20040044698 | March 4, 2004 | Ebata et al. |
20040078644 | April 22, 2004 | Fujibayashi et al. |
- PCT Written Opinion (PCT Rule 66), Sep. 23, 2004.
- International Search Report.
- IBM Redbooks, “Storage Networking Virtualization What's it all about? December 2000.
Type: Grant
Filed: Apr 15, 2002
Date of Patent: May 3, 2005
Assignee: EMC Corporation (Hopkington, MA)
Inventors: Fernando Oliveira (Sudbury, MA), Helen S. Raizen (Jamaica Plain, MA), Kevin Rodgers (Derry, NH)
Primary Examiner: Matthew Kim
Assistant Examiner: Hetul Patel
Attorney: Wolf, Greenfield & Sacks, P.C.
Application Number: 10/122,601