TECHNICAL FIELDThe present invention relates generally to data storage on computer networks and, more particularly, to data storage schemes that involve the use of friendly names for storage elements, in which the friendly names are independent of the actual addresses or paths of the storage elements.[0001]
BACKGROUND OF THE INVENTIONName services have been in use on computer networks for many years. In general, the main function of a name service is to map a name, such as a file name, or network domain name, to some arbitrary data record, such as a file or a network address. A name service can, for example, receive a “look-up request” that includes a name, such as a textual name of a web site, from a requesting client and return information associated with the name, such as the IP address of the web site, to the requesting party. One of the most popular name services in use today is the Domain Naming Service (DNS).[0002]
One function of a name service is to define a namespace for computers on a network that is independent of the physical addresses used by the network. For example, if the website www.foo.com changes its IP address from 100.0.0.1 to 100.0.0.2, the website simply registers the change with the nearest DNS server. The DNS server responds by de-associating www.foo.com from the IP address 100.0.0.1 and creates a new association between wwvw.foo.com and 100.0.0.2. Thus, the rest of the world remains unaware that there was ever any change, and continues to type www.foo.com in their web browsers and achieve the desired result of reaching the website.[0003]
A data storage device, such as a magnetic disk drive, can be coupled to or integrated with an individual computer on a network and, therefore, can effectively have its own IP address and participate in a name service such as DNS. However, data storage technology has become increasingly sophisticated. With the proliferation of storage networks, such as so-called Storage Area Networks (SAN), multiple computer systems can now be connected to networks of multiple data storage devices. Although efforts have been made to create a DNS-like naming system for Internet storage systems [see, for example, the Internet Storage Name Service (iSNS), which is documented in various Internet Engineering Task Force (IETF) drafts], there is currently no effective way for a data storage device to divide its computer-readable media (its magnetic disks, for example) into logical volumes and to have each of those volumes be recognized as a separately addressable entity in a name service. Also, there is currently no effective way to build a SAN name space that makes the physical location of a storage device transparent to computer systems that need to access the storage device.[0004]
SUMMARY OF THE INVENTIONThe invention is generally directed to a method and system for managing stored data on a computer network, in which the data is organized into logical volumes, and each logical volume has a friendly name associated with it. A logical volume may correspond to an individual computer-readable storage element or to a multiple storage elements. For example, a logical volume can represent a single spindle (a physical hard disk), an entire disk array, or a logical partition of a disk array. A domain controller keeps track of the friendly names of the logical volumes and associates those friendly names with the actual physical paths of the logical volumes. When a client computer on the network wishes to access a logical volume, it sends a look-up request, which includes the friendly name, to the domain controller. The domain controller may fulfill the request by sending the path of the logical volume to the client computer.[0005]
Additional features and advantages of the invention will be made apparent from the following detailed description of illustrative embodiments that proceeds with reference to the accompanying figures.[0006]
BRIEF DESCRIPTION OF THE DRAWINGSWhile the appended claims set forth the features of the present invention with particularity, the invention, together with its objects and advantages, may be best understood from the following detailed description taken in conjunction with the accompanying drawings of which:[0007]
FIG. 1 shows an example of a computer network in which the invention may be practiced;[0008]
FIG. 2 shows an example of a computer on which at least some parts of the invention may be implemented; and[0009]
FIGS. 3 and 4 show example embodiments of the invention.[0010]
DETAILED DESCRIPTION OF THE INVENTIONPrior to proceeding with a description of the various embodiments of the invention, a description of the computer and networking environment in which various embodiments of the invention may be practiced will be provided. Although it is not required, the present invention may be implemented by program modules that are executed by a computer. Generally, program modules include routines, objects, components, data structures and the like that perform particular tasks or implement particular abstract data types. The term “program” as used herein may connote a single program module or multiple program modules acting in concert. The invention may be implemented on a variety of types of computers. Accordingly, the terms “computer,” “device,” and “computing device” as used herein include personal computers (PCs), hand-held devices, multi-processor systems, microprocessor-based programmable consumer electronics, network PCs, PC servers, minicomputers, mainframe computers and the like. The invention may also be employed in distributed computing environments, where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, modules may be located in both local and remote memory storage devices.[0011]
An example of a networked environment in which the invention may be used will now be described with reference to FIG. 1. The example network includes[0012]several computers100 communicating with one another over anetwork102, represented by a cloud. Network102 may include many well-known components, such as routers, gateways, hubs, etc. and may allow thecomputers100 to communicate via wired and/or wireless media. Thenetwork102 may have one or moredata storage devices107 linked to it. Thecomputers100 may also havedata storage devices103 attached directly to them, or may be communicatively linked to astorage area network104, which includes one or moredata storage devices105.
Referring to FIG. 2, an example of a basic configuration for a computing device on which the system described herein may be implemented is shown. In its most basic configuration, the[0013]computing device100 typically includes at least oneprocessing unit112 andmemory114. Depending on the exact configuration and type of thecomputing device100, thememory114 may be volatile (such as RAM), nonvolatile (such as ROM or flash memory) or some combination of the two. This most basic configuration is illustrated in FIG. 2 bydashed line106. Additionally, the computing device may also have additional features/functionality. For example,computing device100 may also include additional storage (removable and/or non-removable) including, but not limited to, magnetic or optical disks or tape. Computer storage media includes volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules, or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to stored the desired information and which can be accessed by thecomputing device100. Any such computer storage media may be part ofcomputing device100.
[0014]Computing device100 may also contain communications connections that allow the device to communicate with other devices. A communication connection is an example of a communication medium. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. The term computer readable media as used herein includes both storage media and communication media.
[0015]Computing device100 may also have input devices such as a keyboard, mouse, pen, voice input device, touch input device, etc. Output devices such as adisplay118, speakers, a printer, etc. may also be included. All these devices are well known in the art and need not be discussed at length here.
The invention is generally directed to a method and system for managing stored data on a computer network, in which the data is divided up into logical volumes, and each volume is separately addressable via a name service. Each logical volume may correspond to an individual computer-readable storage element, such as a disk, or may be stored across multiple storage elements. As the physical location of a volume changes, its physical location can be re-registered with the name service. Thus, devices on the computer network can continue to access the volume via the name service using the volume's “friendly” name. In various embodiments of the invention, the name service can maintain security of the data on the network by restricting the ability of devices on the network to resolve the friendly names of logical volumes into physical paths.[0016]
Various embodiments of the invention will now be described in the context of an example network, shown in FIG. 3. The network, generally labeled[0017]150, includes one or more computing devices, represented by acomputing device152 and adomain controller154. Thedomain controller154 has access to a computer-readable medium156, which may be physically located within the domain controller154 (within a magnetic hard drive, for example) or may be external to thedomain controller154. Thenetwork150 also includes one or more storage devices, represented in FIG. 3 bystorage devices158 and160. Each storage device manages computer-readable media and organizes the computer-readable media into logical volumes. Each logical volume represents a collection of data, and is separately recognized by thenetwork150. An example of a type of logical volume is a disk volume. In some embodiments of the invention, each logical volume represents a separately removable computer-readable medium. For example, thestorage device158 is shown as being a Redundant Array of Independent Disks (RAID) unit having threeremovable disks162,164 and166. Each disk of thestorage device158 may, itself, constitute a logical volume. Alternatively, logical volumes may be striped across multiple disks. Thelogical volume174 is shown as example of such striping. In another example, thestorage device160 is assumed to be a magnetic hard drive with asingle disk176. Thedisk176 of thestorage device160 is shown as having multiplelogical volumes178,180, and182.
The logical volume examples of FIG. 3 are not meant to be exhaustive. A logical volume may, for example, span multiple data storage devices. In another example, an array of multiple, identical disks can be organized into logical volumes. For example, suppose that a RAID 5 unit has five identical disks. As is known in the art, the capacity of this unit is four (five minus one) times the capacity of each individual disk. The unit can be partitioned into individual volumes. Thus, if each disk is 100 Gigabytes (GB), giving an overall capacity of 400 GB for the RAID 5 unit, then the unit could be partitioned into two logical volumes of 200 GB each.[0018]
Referring to FIG. 3, an example of how the[0019]logical volume174 of thestorage device158 is registered with the domain controller will now be described. Upon being connected to thestorage area network150, a registration message is sent to thedomain controller154. The registration message may be generated in a variety of ways. For example, thestorage device158 itself might broadcast the message as soon as it is connected to thenetwork150. In some embodiments, thestorage device158 will be connected to a switch, such as a Fibre Channel switch, and, upon detecting the presence of thestorage device158, the switch obtains the relevant information from thestorage device158 and sends the registration message to thedomain controller154. In other embodiments, thedomain controller154 discovers thestorage device158 and obtains the relevant information from it. The registration message can be sent according to a variety of protocols. A protocol suitable for the discovery, enumeration and configuration of devices may be used, including Universal Plug and Play (UPnP) and Simple Service Discovery Protocol (SSDP).
The registration message contains a unique identifier, such as a world-wide name, that uniquely identifies the[0020]storage device158. The registration message also includes the identification number and the path of the logical volume on the storage device. If thestorage device158 is a SCSI device, the logical volume may be identified in the registration message by its logical unit number (LUN). The logical volume may also be identified by a world-wide name. As used herein, the term “world-wide name” refers to an effectively unique number of reasonably large size (256 bits, for example). The registration message may also contain additional information, such as the characteristics of thestorage device158 or its location on the topology of thenetwork150 and the path needed to access it. The request message can also provide information such as a Public/Private Key pair for authorization or for encryption of the channel over which communication with thestorage device158 is taking place.
When the[0021]domain controller154 receives the registration message, it initiates the process of assigning a name to thelogical volume174. In doing so, thedomain controller154 references adata structure157 to determine whether thestorage device158 has ever registered with thedomain controller154 before. In determining whether thestorage device158 has previously registered, thedomain controller154 may require thestorage device158 to authenticate itself. For example, thedomain controller154 may ask thestorage device158 for a security key, a hash of a certain key value, or a hash of a network attribute in order to verify that thestorage device158 had, in fact, previously registered. If thedomain controller154 determines that it has, then thedomain controller154 may simply continue the naming system previously used with thestorage device158. Otherwise, thedomain controller154 establishes a new naming system for volumes on thestorage device158.
If required, a name is generated for the[0022]logical volume174. The name may be generated in a variety of ways. For example, thedomain controller154 itself may generate the name automatically. Alternatively, a human administrator could choose the name. The name that is chosen for thelogical volume174 may be completely arbitrary, or may convey data concerning the logical volume. For example, the logical volume may be named Finance_vol—1_DataCenter—5_RAID_ unit—3″ to indicate that the volume is one that is intended to store data generated by the finance department, is the first volume used in that department, and is physically located in Data Center 5 on RAID (Redundant Array of Independent Disks) unit 3. Thedomain controller154 then enters the name, referred to hereinafter as the “friendly name,” into thedata structure157 and associates the friendly name with the identification number of thestorage device158, and with the path and world-wide name of thelogical volume174. At some point during, or after, the registration process, thedomain controller154 may send a message to thestorage device158 to acknowledge receipt of the registration message or to confirm registration of thelogical volume174. Thedomain controller154 may also send other information to thestorage device158, such as an Access Control List (ACL) that identifies which computer systems are permitted to access thestorage device158.
According to various embodiments of the invention, users or programs wishing to obtain access to particular logical volumes stored on a network are required to pass through one or more security checks. These security checks may be enforced by the[0023]domain controller154 of FIG. 3, and/or by some centralized authority such as a MICROSOFT® ACTIVE DIRECTORY® server or MICROSOFT® Passport. Additionally, thedomain controller154 may, itself be a MICROSOFT® ACTIVE DIRECTORY® server. In some embodiments of the invention, thedomain controller154 controls access to storage devices (such as the storage device158) through the use of thedata structure157. In those embodiments, thedata structure157 contains information that indicates which devices on thenetwork150 are authorized to gain access to the various logical volumes on the computer network. For example, if thecomputing device152 needs to access thelogical volume174 on thestorage device158, it first sends a request to thedomain controller154. The request includes the friendly name of thelogical volume174 and, in some implementations, authentication data such as a certificate or password. Thedomain controller154 refers to thedata structure157 to determine whether thecomputing device152 and/or the user of thecomputing device152 is authorized to access thelogical volume174. In doing so, thedomain controller154 performs such actions as checking an access control list within thedata structure157 and verifying any authentication data received from thecomputing device152. Other possible ways of determining whether the user and/or thecomputing device152 are authorized to access thelogical volume174 include a challenge/response and a public/private key exchange.
In the previous example, the domain controller may, in addition to the procedures described, publish certain storage devices and/or logical volumes. In this way, the computer systems that do not have physical access to the storage devices and/or logical volumes can learn about them and automatically modify their network topologies or connections to gain access to them.[0024]
Referring to FIG. 4, an example of how an embodiment of the invention operates will now be described. In this example, it is assumed that there is a local area network (LAN)[0025]200 and a storage area network (SAN)202. Ahost computer204 and aSAN domain controller206 are each communicatively linked to both theLAN200 and theSAN202.Storage devices240 and260 are also communicatively linked to theSAN202. Thestorage device240 has access to computer-readable medium242. A first logical volume ofdata244 and a second logical volume ofdata245 are stored on the computerreadable medium242. Thehost computer204 administers a name service on thestorage area network202 that maps friendly names of logical volumes to their physical paths. Thehost computer204 has afile system module208 for managing files, a SAN managementfilter driver module210 for enabling commands and data to be sent to and received from thestorage area network202, a client-sideSAN API module214 for allowing thehost computer204 to make function calls to its counterpart on thedomain controller206, and astorage stack module212 for enabling thehost computer204 to translate messages in accordance with a storage standard. Possible storage standards include Small Computer System Interface (SCSI), Internet SCSI (iSCSI), serial, Advanced Technology Attachment (ATA), and Fibre Channel. Thehost computer206 has access to a computer-readable medium246, which has stored thereon adata structure248.
The[0026]SAN domain controller206 executes several program modules, including asecurity module218 for authenticating hosts and controlling access to storage devices on thestorage area network202, adiscovery module220 for enabling storage devices on thestorage area network202 to be automatically recognized by theSAN domain controller206, aLUN management module222 for keeping track of the logical unit numbers of various logical volumes on thestorage area network202 and a namespace management module224 for keeping track of how friendly names are mapped to network paths for the various logical volumes on the network. TheSAN domain controller206 also executes a SANprovider API module230, which allows theSAN domain controller206 to communicate with various storage devices on thestorage area network202. The SANprovider API module230 abstracts the specifics of each storage device so that thedomain controller206 can communicate with each storage device using a single, common language. TheSAN domain controller206 executes a server-sideSAN API module216 for communicating with clients, such as host computers. Although theSAN domain controller206 is depicted as a single unit in FIG. 4, it may be implemented as multiple machines. For example, theSAN domain controller206 could be implemented as a cluster to give it fault tolerance for an internet-based storage system.
The[0027]SAN domain controller206 executes a firststorage provider module232 and a secondstorage provider module234 for communicating with the different storage providers made by different manufacturers. Examples of storage providers include switches, disk arrays, so-called JBODs (“just a bunch of disks”), tape libraries and juke boxes. For example, in FIG. 4, theSAN domain controller206 executes a diskarray provider module236 and atape provider module238 to allow thedomain controller206 to communicate with different disk arrays and tape devices manufactured by different vendors.
An example of how the[0028]SAN domain controller206 manages the logical volume244 (FIG. 4) according to an embodiment of the invention will now be described. Thestorage device240 is physically connected to theSAN202. TheSAN domain controller206 recognizes the presence of the storage device240 (through Universal Plug and Play, for example) and queries it for information about itself (Arrow A). Thestorage device240 then responds by sending a registration message to theSAN domain controller206 that includes information such as its manufacturer, its world-wide name (according to the Fibre Channel standard, for example), the fact that it has two logical volumes (the first and secondlogical volumes244 and245), the world-wide name of each of the two logical volumes, and information regarding the path of each logical volume on the computer-readable medium242 (Arrow B). The path information may include a SCSI channel number, port number, SCSI ID and logical unit number (LUN) of each logical volume. Thediscovery module220 receives the registration message and generates an acknowledgement message, which thedomain controller206 sends to the storage device240 (Arrow C). Thediscovery module220 then passes the information contained in the registration message to the namespace management module224. The namespace management module224 coordinates with theLUN management module222 to determine whether there is already an entry for thestorage device240 in thedata structure248. If there is not already an entry, the namespace management module224 generates a friendly name for each of the first and secondlogical volumes244 and245, or asks the system administrator (via a user interface) to create the names. The namespace management module224 and theLUN management module222 then define a new object for the first and secondlogical volumes244 and245 within in thedata structure248. The new object associates the friendly name generated for the first and secondlogical volumes244 and245 with the world-wide name of thestorage device240, and with the world-wide names and paths of the first and secondlogical volumes244 and245. Optionally, thesecurity module218 can screen thestorage device240 to determine whether it should be permitted to participate in the name service.
To write and read data to and from the first[0029]logical volume244, for example, thehost computer204 first registers with theSAN domain controller206, if it has not already done so in the past. It does this by sending a registration message to the SAN domain controller206 (Arrow D). The registration message includes a request to attach to the SAN, as well as the host computer's authorization credentials (if needed). Thesecurity module218 then executes a security procedure to determine whether thehost computer204 should be permitted to be registered. For example, thesecurity module218 may determine whether thehost computer204 has authorization to access theSAN202 and which pieces of hardware thehost computer204 is permitted to access. If theSAN domain controller206 accepts the registration request, it responds with an acknowledgment message to the host computer204 (Arrow E). TheSAN domain controller206 then creates a virtualization (a directory tree, for example) of the resources that thehost computer204 is permitted to access, and provides the virtualization to thehost computer204. Once thehost computer204 registers, it can then attempt to access the firstlogical volume244. To do so, thehost computer204 determines the friendly name of the firstlogical volume244. It may do this by searching a well-known directory located on theLAN200. Thehost computer204 then sends a look-up request to theSAN domain controller206. The look-up request includes the friendly name of the first logical volume244 (Arrow F). Thesecurity module218 of theSAN domain controller206 responds to the request by referencing thedata structure248 to determine whether thehost computer204 is authorized to have access to the firstlogical volume244. In making this determination, thesecurity module218 may analyze authentication data included in the look-up request. For example, thesecurity module218 may compare a certificate received with the look-up request to those of an access control list maintained in thedata structure248. If the request is approved, thesecurity module218 extracts the appropriate path information regarding the firstlogical volume244 from thedata structure248. TheSAN domain controller206 then sends the path information to the host computer204 (Arrow G). Thehost computer204 then uses the path information to access the firstlogical volume244 via the storage area network202 (Arrow H).
If the[0030]security module218 determines that thehost computer204 is not permitted to have access to the firstlogical volume244, then theSAN domain controller206 sends a denial message to thehost computer204. There may be a variety of reasons for denying access to thehost computer204. For example it may be desirable to prevent thehost computer204 from corrupting the data in the firstlogical volume244.
Referring again to FIG. 4, the[0031]SAN domain controller206 keeps track of the paths of the various logical volumes stored on theSAN202. For example, if the firstlogical volume244 is moved from thestorage device240 to thestorage device260, theSAN domain controller206 discovers the move, either automatically or via a manual update, and updates the corresponding path information in thedata structure248. It could then correctly correlate the name of the firstlogical volume244 to thestorage device260 and thereby have the ability to respond correctly to future look-up requests regarding the firstlogical volume244. Thus, the fact that the firstlogical volume244 had physically moved would be hidden from thehost computer204, as well as all of the other host computers of theLAN200.
It can thus be seen that a new a useful method and system for managing stored data on a computer network has been provided. In view of the many possible embodiments to which the principles of this invention may be applied, it should be recognized that the embodiments described herein with respect to the drawing figures is meant to be illustrative only and should not be taken as limiting the scope of invention. For example, those of skill in the art will recognize that the elements of the illustrated embodiments shown in software may be implemented in hardware and vice versa or that the illustrated embodiments can be modified in arrangement and detail without departing from the spirit of the invention. Therefore, the invention as described herein contemplates all such embodiments as may come within the scope of the following claims and equivalents thereof.[0032]