# Patent

## Title
Volume hierarchy download in a storage area network

## Abstract

In one embodiment, a solution is provided wherein a volume hierarchy may be received at a network device in a storage area network. Once the network device is ready to apply the volume hierarchy, a message so indicating may be sent. Later, a command to apply the volume hierarchy may be received and the volume hierarchy may be applied so that the network device processes IOs using the volume hierarchy.

## Background
RELATED APPLICATIONS
This application claims the benefit of U.S. patent application Ser. No. 11/603,508, filed on Nov. 21, 2006, and which is incorporated by reference herein.
TECHNICAL FIELD
The present disclosure relates to storage area networks.
DESCRIPTION OF THE RELATED ART
Storage Area Networks (SANs) are computer systems in which large mass storage devices such as Redundant Array of Independent Disks (RAID) devices are connected to a central processor or processors via high-speed network technology (as opposed to, for example, via a system bus). SANs are increasingly used to store vast amounts of information and their usage has grown exponentially with the rise of the Internet.
Virtualization of the storage area network allows for the organization of the physical devices to be hidden from users. For example, a company may create a volume hierarchy that allows the user to navigate though a virtual storage device. This hierarchy may include a series of folders and subfolders. In reality, however, the information in these folders and subfolders may be distributed among many different storage devices. The user may have no idea how the information is physically stored and may simply rely on the volume hierarchy.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates an example of a command executed in a Storage Area Network.
FIG. 2 illustrates an example software stack.
FIG. 3 illustrates an example storage area network.
FIG. 4 is an example of a method for downloading a volume hierarchy to network devices in a storage area network in accordance with an embodiment of the present invention.
FIG. 5 is an example of a method for applying a volume hierarchy at a network device in a storage area network in accordance with an embodiment of the present invention.
FIG. 6 is another example of a method for applying a volume hierarchy at a network device in a storage area network in accordance with an embodiment of the present invention.
FIG. 7 is an example of an apparatus for applying a volume hierarchy at a network device in a storage area network in accordance with an embodiment of the present invention.
FIG. 8 is another example of a method for applying a volume hierarchy at a network device in a storage area network in accordance with an embodiment of the present invention.
FIG. 9 is another example of an apparatus for applying a volume hierarchy at a network device in a storage area network in accordance with an embodiment of the present invention.
FIG. 10 is an example of a volume description in accordance with an embodiment of the present invention.



DESCRIPTION OF EXAMPLE EMBODIMENTS
Overview
In one embodiment, a solution is provided wherein a volume hierarchy may be received at a network device in a storage area network. Once the network device is ready to apply the volume hierarchy, a message so indicating may be sent. Later, a command to apply the volume hierarchy may be received and the volume hierarchy may be applied so that the network device processes IOs using the volume hierarchy.
Example Embodiments
In this application, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be obvious, however, to one skilled in the art, that the present invention may be practiced without some or all of these specific details. In other instances, well known process steps have not been described in detail in order to not obscure the present invention.
The input and output from and to hosts and storages in a SAN are known collectively as the SAN's exchange, or flow. The exchange is typically measured in Input/Outputs (IOs). Traditionally, each input or output was sent by a host and terminated at a storage, or vice-versa. This is because the application that would be transmitting or interpreting the IO was located at either a host or a storage. Since the present invention describes moving the application to the switch, in an embodiment of the present invention IOs may be terminated at the switch (or some other located in between the host and the storage). It should be noted that the term “storage” as used throughout this document shall refer to either a single storage device or a group of storage devices.
FIG. 1 illustrates an example of a command executed in a SAN. The command in this figure is a read request. Rather than communications occurring directly between initiator 100 and storage 102, the command 104 may first be terminated at the switch 106. The switch 106 then may perform one or more processes on the commands, and then may generate a resulting command 108 for communication to the storage 104. The same is true of data messages 110, 112, 114, which may then be terminated at the switch 106, where processes may be performed upon them prior to the data 116, 118, 120 being replayed to the initiator 100.
In one embodiment of the present invention, customized hardware may be utilized that is compatible with a standard switch. Such an embodiment avoids the necessity of modifying the switch itself. This hardware may be known as a storage services module (SSM), which may be a blade that plugs into the switch and comprises hardware and software. Alternative embodiments are possible where the switch itself is utilized, or where alternative hardware and/or software is utilized.
In an embodiment of the present invention, the software utilized may be split into three separate parts. FIG. 2 illustrates an example software stack. Partner Software (PS) layer 200 may include the underlying application to be run. A Control Path Processor (CPP) layer 202 may control the software and hardware. A Data Path Processor (DPP) layer 204 may be where the application processes themselves may be executed. Each DPP essentially represents a single processor or core in a multi-processor or multi-core environment.
One common protocol used to communicate within a SAN is the Small Computing System Interface (SCSI). Hosts can communicate at high speed via the SCSI protocol by utilizing Fibre Channel (FC) switching technology. Recent advancements have allowed such communications to occur at up to 10 Gb/s using 10 Gb/s FC or the 10 Gig Ethernet standards. It would be advantageous, therefore, for the complex virtualization functions performed by SAN switches to also be performed at 10 Gb/s, lest a bottleneck be created. Unfortunately, the single processor architecture that is common in most switches is not a viable solution for these levels of line speeds. For such speeds, multi-processor or multi-core processor technology may be utilized.
The volume hierarchy describing a virtual storage device may be stored on multiple switches throughout the storage area network. This is depicted in FIG. 3. An example volume hierarchy is described later in this document. A company may create the hierarchy using a partner device 300 and download it to each of switches 302a-302d. This may include, for example, loading the volume hierarchies into multiple SSMs in the network. This can create several challenges, however that also can be addressed by various embodiments of the present invention.
One of these challenges is that a new hierarchy download may contain significant changes in the layouts of volumes on which IOs are currently being executed. Certain embodiments of the present invention can seamlessly apply these new changes without causing data corruption.
Another of the challenges is that the volume hierarchy may be downloaded to many different SSMs throughout what may be a large network. This can be time consuming, and during the time when the hierarchy is being downloaded, there may be some SSMs that will continue to have the old volume hierarchy while others have the new hierarchy. Thus, the shared volume is rendered a highly inconsistent state throughout the network as different SSMs may potentially virtualized host IOs to the shared volume entirely differently. Certain embodiments of the present invention help ensure that IOs are processed consistently, or at least as consistently as an administrator or partner desires.
Another of the challenges is that some downloads may fail, due to several reasons, such as data corruption during the download or an SSM running out of memory. Leaving a partially downloaded or corrupted volume hierarchy on a network device may also render the shared volume a highly inconsistent state. Certain embodiments of the present invention help prevent or clean up such situations.
Another of the challenges is that volume hierarchies can be large and complicated. Therefore, any attempt to run expensive “sanity” checks on the downloaded hierarchies to ensure the proper functioning of the system may lead to unacceptably long “down time” outages if network devices are shut down during such checks. Certain embodiments of the present invention help to reduce such down times.
FIG. 4 is an example of a method for downloading a volume hierarchy to network devices in a storage area network in accordance with an embodiment of the present invention. It should be noted that this is merely one example of such a method, and many other embodiments are possible as many of the details described in the example are not fundamental to the invention. This process may be executed at a partner device. At 400, a virtual target may be created. At 402, a virtual disk may be created. This virtual disk may include the real target information. At 404, an extent, which may point to the virtual disk, may be created. At 406, a volume may be created, which points to the extent. At 408, an xmap may be created, which points to the volume. At 410, a virtual logic unit number (VLUN) may be created, which associates the virtual target and the xmap. At 412, a synchronization command may be sent to the network devices. This synchronization command may include the virtual target and the VLUN, and may indicate to the network devices that they should take the corresponding volume hierarchy and store it. At 414, a quiesce command may be sent to the network devices. The quiesce command indicates to the network devices that they should halt processing IOs. At 416, a commit command may be sent to the network devices. The commit command may include the virtual target and the VLUN, and may indicate to the network devices that they should take the stored hierarchy and make it active (i.e., begin using the newly downloaded volume hierarchy in lieu of any older ones that it may have been using). At 418, an unquiesce command may be sent to the network devices. The unquiesce command indicates to the network devices that they should restart processing IOs.
FIG. 5 is an example of a method for applying a volume hierarchy at a network device in a storage area network in accordance with an embodiment of the present invention. This process may be executed at a switch or other network device in the storage area network. At 500, a synchronization command may be received identifying a volume hierarchy to be utilized at the network device. At 502, it may be determined if the hierarchy is well formed. This may include, for example, ensuring that there are no loops as well as checking to see if the number of objects in the hierarchy exceeds the maximum supported number of objects for the network device. At 504, each of the object parameters in the volume hierarchy may be checked to determine if they are compatible with the functions that are supposed to utilize them. This may include checking the object parameters for specific RAID functionality, for example. At 506, the device may check whether there are any deleted or unreferenced objects in the volume hierarchy that need to be deleted.
At 508, the system device may check to make sure that it has enough resources (e.g., memory) to utilize the volume hierarchy. If any of the tests from 502-508 fail, then at 510 a failure message may be sent.
At 512, upfront memory allocations may be performed to utilize the volume hierarchy. At 514, a success message may be sent.
In some embodiments, 500-506 above may be performed by a CPP while 508 and 512 may be performed by one or more DPPs corresponding to the CPP. In such embodiments, there may be an additional process that takes place between 506 and 508 where the necessary instructions and information are transferred from the CPP to the DPP(s).
At 516, a quiesce command may be received. In response to this, at 518, the network device may halt processing IOs. In embodiments where the network device comprises a CPP and one or more DPPs, this may include the CPP passing this command to the individual DPPs to halt processing IOs.
At 520, a commit command may be received. In response to this, at 522, the network device may attempt to log into the target. At 524, the network device may begin utilizing the newly downloaded volume hierarchy. This may include, for example, transferring the volume hierarchy from a temporary or shadow memory into an active memory, as well as, for example, deleting the old volume hierarchy. At 528, various objects may be cleaned up. This may include, for example, clearing the state information of the network device).
At 530, an unquiesce command may be received. At 532, processing of IOs by the network device may be restarted.
In some embodiments of the present invention, one or more of the executed steps described above may also include a return signal indicating whether the step executed successfully. The device receiving this return signal may then elect to abort the process (or part of the process) and try again prior to moving to the next step. For example, when a partner device sends a synchronization command to network devices in the storage area network, it may then wait until it receives “success” return signals from each of those devices prior to proceeding to the next step (such as quiesce or commit). If an error message is returned, the device may attempt to remedy the problem and try again. It should be noted that such actions may be fully configurable. For example in some embodiments an error message from a CPP in response to a synchronization command may result in resending the synchronization command to that CPP immediately, in other embodiments it may result in an attempt to address an underlying problem with the CPP (such as clearing up resources), while in even other embodiments it may result in simply ignoring the error message.
By maintaining the downloaded hierarchies in temporary or shadow memories (or otherwise holding them without making them active) until it is determined that all of them are ready to make the hierarchies active, embodiments of the present invention are able to address the challenges described earlier. The threat of data corruption may be minimized and consistency may be maintained throughout all the network devices in the SAN.
The use of the quiesce and unquiesce commands as described above minimizes the amount of down time in the network as IO processing is only stopped long enough to apply the new volume hierarchy, and is not delayed by the time it takes to download or test the volume hierarchy, for example.
FIG. 6 is another example of a method for applying a volume hierarchy at a network device in a storage area network in accordance with an embodiment of the present invention. The network device may be, for example, a switch. At 600, a volume hierarchy may be received. This receiving may occur simultaneously with or subsequent to receiving a synchronization command. For example, the volume hierarchy may be included as part of the synchronization command itself, or the volume hierarchy may follow in a subsequent message, or the synchronization command may simply indicate from where the network device should download the volume hierarchy and the network device follows up by downloading it later. At 602, the volume hierarchy may be stored in a shadow memory. At 604, it may be determined if the network device is ready to apply the volume hierarchy. This may include, for example, ensuring that each network device has completely received the volume hierarchy as well as ensuring that sanity checks have been successfully performed on the downloaded volume hierarchy. These sanity checks may include, for example, determining if the volume hierarchy is well-formed by checking for any loops in the hierarchy or if the hierarchy has more objects than a maximum allowable number of objects, checking each of the object parameters in the volume hierarchy to determine if they are compatible with the functions that are supposed to utilize them, and checking whether there are any deleted or unreferenced objects in the volume hierarchy that need to be deleted. When the network device is ready to apply the volume hierarchy, then at 606, it may send a message indicating that the network device is ready to apply the volume hierarchy. Later, at 608, a command to apply the volume hierarchy may be received. Presumably this command will be sent by a partner device when it is determined that all (or at least a majority of the) necessary network devices have sent messages indicating that they are ready to apply the volume hierarchy. At 610, the processing of IOs by the network device may be halted. At 612, the volume hierarchy may be applied so that the network device processes IOs using the downloaded volume hierarchy. This may include, for example, transferring the volume hierarchy from the shadow memory to an active memory. At 614, the processing of IOs by the network device may be restarted.
FIG. 7 is an example of an apparatus for applying a volume hierarchy at a network device in a storage area network in accordance with an embodiment of the present invention. The network device may be, for example, a switch. A volume hierarchy receiver 700 may receive a volume hierarchy. This receiving may occur simultaneously with or subsequent to receiving a synchronization command. For example, the volume hierarchy may be included as part of the synchronization command itself, or the volume hierarchy may follow in a subsequent message, or the synchronization command may simply indicate from where the network device should download the volume hierarchy, and the network device follows up by downloading it later. A volume hierarchy shadow memory storer 702 coupled to the volume hierarchy receiver 700 may store the volume hierarchy in a shadow memory. A network device volume hierarchy application readiness checker 704 coupled to the volume hierarchy receiver 700 may determine if the network device is ready to apply the volume hierarchy. This may include, for example, ensuring that each network device has completely received the volume hierarchy as well as ensuring that sanity checks have been successfully performed on the downloaded volume hierarchy. These sanity checks may include, for example, determining if the volume hierarchy is well-formed by checking for any loops in the hierarchy or if the hierarchy has more objects than a maximum allowable number of objects, checking each of the object parameters in the volume hierarchy to determine if they are compatible with the functions that are supposed to utilize them, and checking whether there are any deleted or unreferenced objects in the volume hierarchy that need to be deleted. When the network device is ready to apply the volume hierarchy, then a network device volume hierarchy application readiness message communicator 706 coupled to the network device volume hierarchy application readiness checker 704 may send a message indicating that the network device is ready to apply the volume hierarchy. Later, a volume hierarchy application command receiver 708 may receive a command to apply the volume hierarchy. Presumably this command will be sent by a partner device when it is determined that all (or at least a majority of the) necessary network devices have sent messages indicating that they are ready to apply the volume hierarchy. An IO processing halter 710 coupled to the volume hierarchy application command receiver 708 may halt the processing of IOs by the network device. A volume hierarchy applier 712 coupled to the IO processing halter may apply the volume hierarchy so that the network device processes IOs using the downloaded volume hierarchy. This may include, for example, transferring the volume hierarchy from the shadow memory to an active memory. An IO processing restarter 714 coupled to the volume hierarchy applier 712 may restart the processing of IOs by the network device.
As described above, embodiments of the present invention split the downloading of volume hierarchies to network devices in a SAN into two (or more) phases. In one phase, the volume hierarchies may be forwarded and stored in each of the network devices, but activation of the volume hierarchies may wait until a later phase, when it may have been determined that each of the network devices is ready to apply the new hierarchy. Also described above are embodiments wherein the network device applying the new volume hierarchy comprises a CPP and one or more DPPs. In some embodiments, the distribution of the volume hierarchies from the CPP to the DPPs may also occur via the two (or more) phases described above. For example, a partner device may utilize synchronization and commit transactions to help ensure that network devices do not apply new volume hierarchies until all the network devices are ready to do so. Likewise, within a network device, the CPP may utilize the equivalent of synchronization and commit transactions to help ensure that the DPPs do not apply new volume hierarchies until all the DPPs corresponding to the CPP are ready to do so. This may be called multi-level multi-phase volume hierarchy commits.
There may be many different permutations regarding the ordering of these multi-level phases. For example, in one embodiment, a synchronization command is received by the CPP and the CPP then sends a synchronization command to each of the corresponding DPPs, waits for messages from the DPPs indicating success, then sends a success message responding to the synchronization command. Subsequently, a commit command may be received by the CPP, and the CPP then sends a commit command to each of the DPPs. Alternatively, the CPPs may receive a synchronization command, determine whether it thinks the volume hierarchy can be applied, and send a success message responding to the synchronization command. Subsequently when a commit command is received, the CPP may then send a synchronization command to each of the corresponding DPPs, wait for messages from the DPPs indicating success, then send commit commands to each of the DPPs. In other words, it is possible that all the synchronization phases for all the levels are performed prior to any commit phases being performed, but it is also possible that each level undertakes its own set of synchronization and commit phases upon receipt of a commit command, as well as any combination of the above.
FIG. 8 is another example of a method for applying a volume hierarchy at a network device in a storage area network in accordance with an embodiment of the present invention. The network device may be, for example, a switch having multiple cores. The method may be executed at, for example, a CPP within the switch. At 800, a synchronization command may be received. At 802, a volume hierarchy may be received. This receiving may occur simultaneously with or subsequent to receiving a synchronization command. For example, the volume hierarchy may be included as part of the synchronization command itself, or the volume hierarchy may follow in a subsequent message, or the synchronization command may simply indicate from where the network device should download the volume hierarchy and the network device follows up by downloading it later. At 804, a synchronization command may be issued to each of the multiple cores. This may include issuing a synchronization command to each of multiple data path processors (DPPs) corresponding to the network device. At 806, it may be determined if the network device is ready to apply the volume hierarchy. This may include, for example, ensuring that each network device has completely received the volume hierarchy as well as ensuring that sanity checks have been successfully performed on the downloaded volume hierarchy. These sanity checks may include, for example, determining if the volume hierarchy is well-formed by checking for any loops in the hierarchy or if the hierarchy has more objects than a maximum allowable number of objects, checking each of the object parameters in the volume hierarchy to determine if they are compatible with the functions that are supposed to utilize them, and checking whether there are any deleted or unreferenced objects in the volume hierarchy that need to be deleted. It also may include waiting until success messages are received from each of the cores in response to the synchronization commands. When the network device is ready to apply the volume hierarchy, then at 808, it may send a message indicating that the network device is ready to apply the volume hierarchy. Later, at 810, a command to apply the volume hierarchy may be received. Presumably this command will be sent by a partner device when it is determined that all (or at least a majority of the) necessary network devices have sent messages indicating that they are ready to apply the volume hierarchy. At 812, each of the multiple cores may be instructed to apply the volume hierarchy.
FIG. 9 is another example of an apparatus for applying a volume hierarchy at a network device in a storage area network in accordance with an embodiment of the present invention. The network device may be, for example, a switch having multiple cores. The apparatus may be, for example, a CPP within the switch. A synchronization command receiver 900 may receive a synchronization command. A volume hierarchy receiver 902 coupled to the synchronization command receiver 900 may receive a volume hierarchy. This receiving may occur simultaneously with or subsequent to receiving a synchronization command. For example, the volume hierarchy may be included as part of the synchronization command itself, or the volume hierarchy may follow in a subsequent message, or the synchronization command may simply indicate from where the network device should download the volume hierarchy and the network device follows up by downloading it later. A multiple core synchronization command issuer 904 coupled to the synchronization command receiver 900 may issue a synchronization command to each of the multiple cores. This may include issuing a synchronization command to each of multiple data path processors (DPPs) corresponding to the network device. A network device volume hierarchy application readiness checker 906 coupled to the volume hierarchy receiver 902 may determine if the network device is ready to apply the volume hierarchy. This may include, for example, ensuring that each network device has completely received the volume hierarchy as well as ensuring that sanity checks have been successfully performed on the downloaded volume hierarchy. These sanity checks may include, for example, determining if the volume hierarchy is well-formed by checking for any loops in the hierarchy or if the hierarchy has more objects than a maximum allowable number of objects, checking each of the object parameters in the volume hierarchy to determine if they are compatible with the functions that are supposed to utilize them, and checking whether there are any deleted or unreferenced objects in the volume hierarchy that need to be deleted. It also may include waiting until success messages are received from each of the cores in response to the synchronization commands. When the network device is ready to apply the volume hierarchy, then a network device volume hierarchy application readiness message communicator 908 coupled to the network device volume hierarchy application readiness checker 906 may send a message indicating that the network device is ready to apply the volume hierarchy. Later, a volume hierarchy application command receiver 910 may receive a command to apply the volume hierarchy. Presumably this command will be sent by a partner device when it is determined that all (or at least a majority of the) necessary network devices have sent messages indicating that they are ready to apply the volume hierarchy. A multiple core volume hierarchy application instructor 912 coupled to the volume hierarchy application command receiver 910 may instruct each of the multiple cores to apply the volume hierarchy.
It should also be noted that the terminology of the commands described above should be viewed broadly. In other words, terms like synchronization and commit should be interpreted to broadly refer to commands that perform the functions of downloading and activating, respectively, and should not be limited to any particular commands in any particular programming language or protocol. Likewise, the terms quiesce and acquiesce should be interpreted to broadly refer to commands that perform the function of halting IO processing and restarting IO processing, respectively.
The volume hierarchy may be any data that describes the organization of a volume. As an example, the following volume definition may be used:












<Volume> ::= <RAID>[<Volume>]+ | <RAID> [<Extent>]+


| concat [<Volume>]+ | concat [<Extent>]+


<RAID> ::= raid0 | raid1


<Extent> ::= vlba, len, plba, <VDisk>


<XMap> ::= [<XMEntry>]+


<XMEntry> ::= start-lba, length, <ReadParm>, <WriteParm>


<ReadParm> ::= lbaOffsetInVol <AccessAttr> <Volume>


<WriteParm> ::= lbaOffsetInVol <AccessAttr> <Volume>


<AccessAttr> ::= ALLOW | FAULT | HOLD | CONTROL | REJECT


<VDisk> ::= <PathAttr>[ pathWeight <Path>]+


<PathAttr> ::= [ PATH_RR | PATH_STICKY ]


<Path> ::= [portWWN, Lun ]+









    
    
        Volume may be a set of volumes connected by a RAID function, or a concatenation of volumes, or a concatenation of extents.
        Extent may be defined as a contiguous set of blocks on a VDisk.
        Concatenation may be an aggregation of extents or an aggregation of volumes.
        An Xmap may be a set of xmap-entries. A xmap-entry is a variable size LBA range (a region) with a set of attributes. These attributes allow the control path to control the fastpath, such as instructing the fast path to process IO requests that fall within that region, to notify the control path when it gets an IO within that region and wait for a handshake indication from the control path prior to processing.
        A VDisk may be a LUN on a multi-ported SCSI target device. Included in the description may be all paths to the LUN on the multi-ported target device.
    
    


In order to export a volume for external access (via a SAN), a volume may mapped into the SCSI/FCP model as follows:












<VT> ::= nWWN, pWWN, [<VLUN>]+, [<LunMap>]*


<VLUN> ::= vlunId, <XMap>


<LunMap> ::= [initiatorWWN]+ , [vluNum, mappedVluNum]+









Virtual Objects may include:

    
    
        VDisk
        Extent
        Volume
        XMap
        Virtual Target (VT)
    
    


Each object may contain an identifier and a set of fields specific to the object. In addition to the virtualization object are associations between the virtualization objects. One such association is referred to as a VLUN. A VLUN associates a volume an Xmap object with a VT along with an assigned VLUN number. Because an Xmap object points to a volume, a volume is effectively associated with the VT. Host based LUN Maps are another kind of association. Here, depending on the host, a VLUN number in the default VLUN list may be reassigned a different VLUN number.
Each object may be identified by a 64 bit identifier. The format of the identifier may be defined by the partner software. The identifier can have local scope i.e. is unique within a linecard on an MDS switch, or global, i.e., is unique across linecards and switches. The partner software may be responsible for defining the scope of an identifier.
A VDisk object description may include:

    
    
        an Object Identifier
        pWWN of the target port of a multi-ported SCSI target device.
        LUN number on that target port for Logical Disk Unit on the multi-ported SCSI target device.
    
    


The control path (partner software) can discover the fact that a Logical Disk Unit on a SCSI Target Device may be exported via multiple target ports on that SCSI Target Device. The list of (target-port, LUN) tuples for a Logical Disk Unit may be contained in the VDisk. The list of tuples may translate to multiple paths between the fast path virtual initiator and the target-port. The multipath information may include Active-Active paths; Active-Passive paths that failover implicitly; and Active-Passive paths that need explicit failover mechanisms.
When a volume's V2P table is downloaded to the fast path, because a volume contains extents, and because extents in turn point to vdisks, the V2P table may include vdisk path information.
An extent object description may include:

    
    
        a object identifier.
        object identifier of the VDisk on which the backing storage for this extent was allocated.
        starting LBA and number of LBAs on the VDisk.
        block size.
        position of the extent (LBA offset) in the parent volume.
    
    


Extent objects are synonymous with the backing storage needed for a volume. One or more extent objects may be concatenated to cover the entire logical block address space exported by a volume. Extent objects may not also be used in conjunction with RAID0 or RAID1 layout functions.
A volume object description may contain:

    
    
        an object identifier.
        geometry of the volume; which includes size of the volume, grouping function (type of RAID or concatenation), number of grouping elements and object identifiers of the group elements. Each grouping may have its own sub-block that contains further details such as stripe unit size for RAID0.
        pWWN of the volume
        position of volume (LBA offset) in parent volume; if volume is a “concatenation element” of another top level volume.
        Other symbolic strings such as user-defined name, comments etc.
    
    


A volume object may be synonymous with a LUN exported by a virtual target to an initiator. A volume may be a concatenation/RAID function of extents or it may be made up of other volumes. When a volume is made up of other volumes, it may have a RAID type associated with it or it may be a concatenation of volumes.
In one embodiment, a volume is described a layer at a time. ISAPI combines them together into a collapsed structure for use by the fast path. For example, the volume description of V1 in FIG. 10 may be built by:

    
    
        (1) Describing each extent that is used
        (2) Describing each volume in terms of its components and the function (RAID or concatenation) applied to these components.
    
    


More specifically, V2 may be described as a RAID0 volume composed of two volumes V5 and V6; the RAID0 properties such as stripe size may also be specified. However, when describing V2, V5 and V6, the volumes may only be referenced by their object IDs and are not themselves described.
The XMap object may keeps track of regions of a VLU. The object description may include:

    
    
        an object identifier.
        a set of regions. A region is described via a start LBA, number of LBAs, attributes for READ IOs, a volume layout for READ IOs, attributes for WRITE IOs and a volume layout for WRITE IOs.
    
    


VT object description may contain:

    
    
        port WWN and node WWN of the VT.
        VLUN list
        LUN maps, if any
        Symbolic strings such as user-defined name, comments etc.
    
    


A virtual target may be analogous to a target port of a multi-ported SCSI target device in the physical world. A virtual target may have port WWN and a node WWN associated with it. Every virtual target may have a unique port WWN associated with it. Multiple virtual targets can have the same node WWN. When multiple virtual targets have the same node WWN, this set of VTs is analogous to the enclosure object in the physical world. Additionally, associated with a VT may be one or more VLUNs. A volume may be “made visible” to an initiator by zoning the initiator and VT with VLUNs together. VLUNs may be created by associating an XMAP object with a VLUN identifier on a VT. Because the XMAP object points to the volume, the volume is effectively exposed as a VLUN.
In addition to the above description of the relationship of the VT object with other virtualization object, it should also be noted that in the context of a switch based virtualization implementations, a VT may also have some Fibre Channel notions tagged to it. One such notion is that of an N_PORT. Just like a physical target has an N_PORT registered in the Fibre Channel Name Server database, a VT may have an N_PORT registered in the Fibre Channel Name Server database. Because of the virtual element, it may be referred to as an NV_PORT. Additionally, from an implementation perspective IOs sent to a VT are processed in a DPP. Consequently, the NVPORT (synonymous with VT) may be associated with a DPP.
Although illustrative embodiments and applications of this invention are shown and described herein, many variations and modifications are possible which remain within the concept, scope, and spirit of the invention, and these variations would become clear to those of ordinary skill in the art after perusal of this application. Accordingly, the embodiments described are to be considered as illustrative and not restrictive, and the invention is not to be limited to the details given herein, but may be modified within the scope and equivalents of the appended claims.

## Claims

1. A method comprising:
determining, by a first network device, that the first network device is ready to apply a volume hierarchy, wherein determining that the first network device is ready includes performing one or more sanity checks on the volume hierarchy;
sending, by the first network device, a notification message to at least one other network device, wherein the notification message indicates that the first network device is ready to apply the volume hierarchy;
receiving a command at the first network device to apply the volume hierarchy, wherein the command indicates that one or more other network devices are also ready to apply the volume hierarchy, wherein the command is received from a second network device in response to receiving the notification message from the first network device; and
applying the volume hierarchy at the first network device so that the first network device processes input/outputs (IOs) using the volume hierarchy.

2. The method of claim 1, further comprising receiving a volume hierarchy at the first network device in a storage area network.

3. The method of claim 2, wherein receiving the volume hierarchy occurs simultaneously with or subsequent to receiving a synchronization command.

4. The method of claim 1, further comprising storing the volume hierarchy by the first network device in a shadow memory, wherein applying the volume hierarchy includes transferring the volume hierarchy from the shadow memory to an active memory.

5. The method of claim 1, further comprising halting the processing of IOs prior to the applying the volume hierarchy, and restarting the processing of IOs after the applying the volume hierarchy.

6. The method of claim 1, further comprising executing one or more tests on the volume hierarchy.

7. The method of claim 6, wherein one of the tests includes checking one or more of the object parameters in the volume hierarchy to determine compatibility with functions that utilize the one or more object parameters.

8. The method of claim 6, wherein one of the tests includes checking whether there are any deleted or unreferenced objects in the volume hierarchy for deletion.

9. The method of claim 6, wherein one of the tests includes determining if the volume hierarchy is well-formed.

10. The method of claim 9, wherein determining if the volume hierarchy is well-formed includes determining if there are any loops in the volume hierarchy.

11. The method of claim 1, wherein the command received at the first network device to apply the volume hierarchy indicates that the first network device is to begin using the volume hierarchy in lieu of another volume hierarchy that the first network device had been using.

12. The method of claim 1, wherein the command received at the first network device to apply the volume hierarchy indicates that at least a majority of network devices that have received the volume hierarchy have sent messages indicating that they are ready to apply the volume hierarchy.

13. The method of claim 1, wherein the command indicates that a second network device has received messages from the one or more other network devices, the messages indicating that the other network devices are ready to apply the volume hierarchy.

14. The method of claim 1, wherein the command indicates that at least a majority of the other network devices that have received the volume hierarchy have sent messages indicating that they are ready to apply the volume hierarchy.

15. An apparatus comprising:
a processor; and
a memory, wherein at least one of the processor or the memory is adapted for:
determining, by a first network device, that the first network device is ready to apply a volume hierarchy, wherein determining that the first network device is ready includes performing one or more sanity checks on the volume hierarchy;
sending, by the first network device, a notification message to at least one other network device, wherein the notification message indicates that the first network device is ready to apply the volume hierarchy;
receiving a command at the first network device to apply the volume hierarchy, wherein the command indicates that one or more other network devices are also ready to apply the volume hierarchy, wherein the command is received from a second network device in response to receiving the notification message from the first network device; and
applying the volume hierarchy at the first network device so that the first network device processes input/outputs (IOs) using the volume hierarchy.

16. The apparatus of claim 15, wherein at least one of the processor or the memory is further adapted for storing the volume hierarchy by the first network device in a shadow memory, wherein applying the volume hierarchy includes transferring the volume hierarchy from the shadow memory to an active memory.