fig1 is a block diagram of a clustering system 100 in accordance with at least one embodiment of the present invention . here , clustering system 100 is comprised of equipment found in at least two geographically distinct locations 102 and 104 . for example , location 102 may be a metropolitan area such as san diego , calif ., and location 104 may be a different metropolitan area such as san francisco , calif . at location 102 , a management server 106 is responsible for monitoring , configuring , and otherwise managing servers 108 and 110 , network equipment 112 , and storage equipment 113 , 114 , and 115 . management server 106 , servers 108 and 110 , network equipment 112 , and storage equipment 113 , 114 , and 114 communicate through a local network 116 , forming a local san . as shown , management server 106 includes a san manager 118 that includes a configuration engine 120 and a topology repository 122 . san manager 118 also maintains a discovery list 124 , a configuration table 126 , a topology table 128 , and a mapping table 130 , which are discussed in further detail below . san manager 118 maintains this information by communicating with various management agents located in servers 108 and 110 , network equipment 112 , and storage equipment 113 , 114 , and 115 . san manager 118 and the various management agents may be implemented in software . server 108 may include one or more application programs . these application programs may be server level applications such as web server applications , network file sharing applications , and others . as fig1 illustrates , server 108 may also include clustering software for maintaining a clustering system , a management agent , and a number of host ports . server 110 is similarly arranged and may also include one or more application programs , clustering software , a management agent , and a number of host ports . network equipment 112 is illustrated in fig1 as a switch having a number of switch ports . network equipment 112 also includes a management agent . network equipment 112 facilitates communication through local network 116 . as shown , network equipment 112 provides communication between servers 108 and 110 and storage equipment 115 . storage equipment 115 may include a number of disk ports , a number of logical volumes 132 , 134 , and 136 , and a management agent . here , each of the logical volumes 132 , 134 , and 136 may be implemented in different ways , such as by use of various types of redundant array of independent disks ( raid ). each of logical volumes 132 , 134 , 136 may be implemented on a single physical disk ( not shown ), across multiple physical disks ( not shown ) within a disk group ( not shown ), across disks in multiple disk groups , or in some other arrangement . here , server 108 , network equipment 112 , and storage equipment 115 may represent a primary node in a clustering system . for example , server 108 may be executing a database application , using storage equipment 115 to store the associated databases and communicating data to and from storage equipment 115 through network equipment 112 . fault - tolerance for this database service may be realized by creating a secondary node corresponding to the primary node . use of equipment located at a geographically distinct location , such as location 104 , would provide effective fault - tolerance because if a catastrophic local event damages equipment at location 102 , redundant equipment at location 104 would be able to provide effective recovery . at location 104 , a management server 138 is responsible for monitoring , configuring , and otherwise managing a server 140 , network equipment 142 , and storage equipment 144 . management server 138 , server 140 , network equipment 142 , and storage equipment 144 communicated through a local network 146 , forming a local san . local sans at locations 102 and 104 , and perhaps other local sans , may together form a wide area san by communicating over one or more wide area networks 148 . as shown , management server 138 includes a san manager 150 that includes a configuration engine 152 and a topology repository 154 . san manager 150 also maintains a discovery list 156 , a configuration table 158 , a topology table 160 , and a mapping table 162 , which are discussed in further detail below . san manager 150 maintains this information by communicating with various management agents located in server 140 , network equipment 142 , and storage equipment 144 . san manager 150 and the various management agents may be implemented in software . server 140 may include one or more application programs , clustering software for maintaining a clustering system , a management agent , and a number of host ports . network equipment 142 is illustrated in fig1 as a switch having a number of switch ports . network equipment 142 also includes a management agent . network equipment 142 facilitates communication through local network 146 . as shown , network equipment 142 provides communication between server 140 and storage equipment 144 . storage equipment 144 may include a number of disk ports , a pool 164 of logical volumes , from which logical volumes 166 , 168 , and 170 may be selected , and a management agent . here , each of the logical volumes in logical volume pool 164 , including logical volumes 166 , 168 , and 170 , may be implemented in different ways , such as by use of various types of redundant array of independent disks ( raid ). thus , each of the logical volumes may be implemented on a single physical disk ( not shown ), across multiple physical disks ( not shown ) within a disk group ( not shown ), across disks in multiple disk groups , or in some other arrangement . here , server 140 , network equipment 142 , and storage equipment 144 may be used to form a secondary node associated with the previously discussed primary node in the clustering system . for example , if the clustering system is designed to provide a secondary node having similar processing , storage , and other capabilities as those of the primary node , it would be desirable to identify a secondary node having similar equipment as the primary node . server 140 , network equipment 142 , and storage equipment 144 may fit such requirements . the present invention allows equipment such as server 140 , network equipment 142 , and storage equipment 144 to be identified as resources that may be used to form the secondary node . servers 108 , 110 , and 140 are examples of processor devices , storage equipment 115 and 144 are examples of storage devices , and network equipment 112 and 142 are examples of network interface devices . fig2 is an illustration of mapping table 130 maintained in management server 106 of fig1 . mapping table 130 is illustrated here as an example . other mapping tables , such as mapping table 162 maintained in management server 138 , may have similar formats . as shown in fig2 , mapping table 130 provides a mapping between application programs being executed and the location ( s ) of data storage being utilized by such application programs . for instance , an application program executing in server 108 may utilize logical volumes 132 , 134 , and 136 in storage equipment 115 , and mapping table 130 would register such utilization in detail . different methods may be used to identify the various application programs executing in a particular server . one such method involves using the common information model ( cim ) standard , which allows application programs executing in a server may communicate with one another . for example , the management agent in server 108 may use the cim standard to communicate with , and thereby identify , the various application programs executing in server 108 . another method involves using repository information maintained by the operating system of the server . for example , the management agent in server 108 may retrieve data from the repository information of the operating system of server 108 to identify various application program executing in server 108 . mapping table 130 is shown to include the following categories of information : id 202 , server 204 , application 206 , related mount point 208 , related volume id 210 , disk group ( dg ) id 212 , block device 214 , logical unit ( lu ) binding id 216 , small computer system interface ( scsi ) id 218 , and scsi logical unit number ( lun ) 220 . here , table 130 indicates that a database ( db ) application is executing in server a ( server 108 ). table 130 further indicates that this db application is utilizing logical volumes vol 1 , vol 2 , and vol 3 ( logical volumes 132 , 134 , and 136 ). for each of these three logical volumes , table 130 provides additional information . taking vol 1 just as an example , table 130 indicates the mount point (/ u 01 ) at which vol 1 is associated with , or “ mounted ” to , the system executing the db application . table 130 also indicates the physical disk group ( 0 ) and block device ( c 2 t 2 d 1 ) in which vol 1 is implemented . in this example , logical volumes are also associated with scsi ids , as well as luns within particular scsi ids . here , vol 1 is shown to be associate with a particular scsi id ( 2 ) and a particular scsi lun ( 1 ). fig3 is an illustration of a lun binding table 300 maintained in server 108 of fig1 . lun binding table 300 is illustrated here as an example . other lun binding tables maintained in other servers , such as servers 110 and 140 , may have similar formats . lun binding table 300 indicates the scsi id assignment and lun assignment associated with location ( s ) of data storage being utilized by application programs executing in server 108 . lun binding table 300 is shown to include the following categories of information : binding id 302 , scsi id 304 , lun 306 , and inquiry information 308 . each binding id 302 indicates a particular location of storage and is associated with a particular scsi id 304 and a particular lun 306 . also , each binding id 302 further indicates inquiry information 308 , which can provide additional data such as vendor , storage type , and logical volume information . binding table 300 may be maintained as a part of the operation of the management agent in server 108 . thus , individual binding tables maintained at various servers , such as servers 108 and 110 , may be used to form the mapping table 130 shown in fig2 . fig4 a is an illustration of discovery list 124 maintained in management server 106 of fig1 . discovery list 124 is illustrated here as an example . other discovery lists , such as discovery list 156 maintained in management server 138 , may have similar formats . as shown in fig4 , discovery list 124 provides a listing of devices available at various locations , such as locations 102 and 104 . discovery list 124 shows the following categories of information for each device : local san id 402 , discovery id 404 , device type 406 , device information 408 , ip address 410 , and area / global position 412 . local san id 402 identifies the local san to which the device belongs . discovery id 404 identifies a numerical order for the device within its local san . device information 408 may indicate various information relating to the device , such as vendor and device type . ip address 410 indicates the ip address assigned to the device . area / global position 412 provides information relating to the location of the device , such as name of metropolitan area , longitude , and latitude . thus , discovery list 124 allows management server 106 to identify available devices at various locations , including distant locations , that may be potential resources suitable to serve as part of a secondary node corresponding a primary node in a clustering system . fig4 b is an illustration of a functional discovery list 440 that may be maintained in management server 106 of fig1 , in addition to or in place of discovery list 124 . functional discovery list 440 is illustrated here as an example . other discovery lists maintained in other management servers may have similar formats . as shown in fig4 b , functional discovery list 440 provides a listing of devices available at various locations , such as locations 102 and 104 . functional discovery list 440 shows the following categories of information for each device : local san id 442 , discovery id 444 , function type 446 , and device information 448 . local san id 442 identifies the local san to which the device belongs . discovery id 444 identifies a numerical order for the device within its local san . function type 446 provides information on the possible function of the device , such as use in host - based remote mirroring or storage - based remote mirroring . device information 448 may indicate various information relating to the device , such as vendor , device type , and device class . functional discovery list 440 allows management server 106 to identify available devices at various locations , including distant locations , that may be potential resources suitable to serve as part of a secondary node corresponding a primary node in a clustering system . fig5 is an illustration of topology table 128 maintained in management server 106 of fig1 . topology table 128 is illustrated here as an example . other topology tables , such as topology table 160 maintained in management server 138 , may have similar formats . as shown in fig5 , topology table 128 provides a summary of interconnections over which data may be sent in system 100 . topology table 128 shows the following categories of information : server information 502 , first local network information 504 , interconnect information 506 , second local network information 508 , and storage information 510 . topology table 128 depicts the manner by which various networking and storage equipment are linked , including local and wide area network connections . here , topology table 128 is shown to be focused on storage network topology for purposes of illustration . other types of topology information may be included as well . fig6 a - 6g show various configuration tables that may be implemented , individually or in combination , as the contents of configuration table 126 maintained in management server 106 of fig1 . contents of configuration table 126 is illustrated here as examples . other configuration tables , such as configuration table 158 maintained in management server 138 , may have similar formats . fig6 a illustrates a fibre channel switch ( fc - sw ) zoning configuration table 600 . this table contains categories of information including zone id 602 and switch port id list 604 . zone id 602 identifies different zones , or groupings of devices , such that devices within a common zone may readily communicate with one another . switch port id list 604 identifies the different network ports which belong to the identified zone . fig6 b illustrates a different fc - sw zoning configuration table 606 , similar in structure to table 600 . zoning configuration tables 600 and 606 allow convenient separation of groups of devices . here , tables 600 and 606 are described as fibre channel switch zoning configuration tables for purposes of illustration , other types of equipment may also be organized in similar zoning tables . fig6 c illustrates a storage - based replication configuration table 608 . this table identifies the configuration of storage - based data replication from a set of primary storage locations to a corresponding set of secondary storage locations . here , the storage system is responsible of maintaining the proper replication of data . table 608 shows the following categories of information : id 610 , group id 612 , group name 614 , primary storage information 616 , secondary storage information 618 , and cluster config id 620 . id 610 is an entry identifier . group id 612 and group name 614 relate to the identification number and name for each group of storage resources , such as a group of volumes , representing a storage location . the primary and secondary storage information 616 and 618 each identifies the host and volume information associated with the relevant storage location . cluster config id 620 identifies a label for the cluster corresponding to the primary and secondary storage locations . fig6 d illustrates a host - based replication configuration table 622 . this table identifies the configuration of host - based data replication from a set of primary storage locations to a corresponding set of secondary storage locations . here , the host system is responsible of maintaining the proper replication of data . table 622 shows the following categories of information : id 624 , valid 626 , group id 628 , group name 630 , primary storage location information 632 , secondary storage location information 634 , and cluster config id 636 . valid 626 relates to whether the particular replication configuration is available . also , primary and secondary storage location information 632 and 634 are each shown to also include information for identifying the corresponding disk group and block device . other information in table 622 is similar to information shown in table 608 of fig6 c . fig6 e illustrates a cluster configuration table 638 . this table identifies the arrangement of various clusters in the system , which may include the configuration of physical devices being controlled by cluster software . table 638 shows the following categories of information : id 640 , valid 642 , cluster id / name 644 , cluster type / vender 646 , member node list 648 , heartbeat list 650 , heartbeat configuration id list 652 , replication type list 654 , and replication configuration id list 656 . id 640 identifies a numeric label for each entry , valid 642 relates to whether the particular cluster is available . cluster id / name 644 provides a number identifier and a name identifier for each cluster presented . cluster type / vendor 646 identifies the classification of the cluster and vendor of the associated equipment . member node list 648 identifies the nodes that are members of the particular cluster . heartbeat list 650 and heartbeat configuration 652 relate to arrangement of the heartbeat , which provides a signal that may be used to indicate whether a node , or particular resource at a node , is active . replication type list 654 and replication configuration id list 656 relate to the type of replication available and the associated configuration label . fig6 f illustrates a cluster resource group configuration table 658 . this table identifies the various resources available at different clusters , which may include the configuration of the logical resource group for each node in each cluster . such resources may be processing , communication , storage , or other types of resources . table 658 shows the following categories of information : id 660 , valid 662 , cluster type id 664 , resource group id 666 , resource group name 668 , member node list 670 , resource list 672 , replication type 674 , and replication configuration id 676 . id 660 provides an numerical label for each entry , valid 662 relates to whether the particular cluster is available . cluster type id 664 provides an identifier for the cluster and indicates the type and vendor of equipment associated with the cluster . resource group id 666 and resource group name 668 provide a number identifier and a name identifier for each collection of resources associated with the cluster . resource list 672 identifies the particular resources available within the identified resource group . replication type 674 and replication config id 676 relate to the type of replication available and the associated configuration label . fig6 g illustrates a heartbeat configuration table 678 . this table identifies provides further detail on the arrangement of the heartbeat for each cluster . table 678 shows the following categories of information : id 680 , valid 682 , cluster type id 684 , heartbeat type id 686 , heartbeat name 688 , member node list 690 , nic list 692 , and storage list 694 . id 680 provides a numerical label for each entry . valid 682 relates to whether the cluster is available . cluster type id 684 provides an identifier for the cluster and indicates the type and vendor of equipment associated with the cluster . heartbeat type id 686 and heartbeat name 688 identify the classification and name of the heartbeat utilized . for example , the heartbeat may be host - based or storage - based . member node list 690 identifies the nodes that are members of the particular cluster . nic list 692 identifies nics which correspond the to a particular host - base heartbeat . storage list identifies storage systems which correspond to a particular storage - based heartbeat . the information maintained at each management server may be communicated to other management servers . for example , although management servers 106 and 108 are situated at geologically distinct locations 102 and 104 , respectively , they may exchange some or all of the information that is contained in various tables such as those discussed above . fig7 is a flow chart summarizing the general steps involved in automatic configuration and semi - automatic configuration of a clustering system in accordance with at least one embodiment of the present invention . the steps shown may be implemented as an integrated routine that allows the selection of either automatic configuration or semi - automatic configuration . alternatively , the steps shown may be implemented as two separate routines . that is , a system may employ only automatic configuration , or only semi - automatic configuration . for purposes of illustration , fig7 shows the establishment of a clustering system through the formation of a secondary node corresponding to a primary node . different steps shown in fig7 may be accomplished with use of a user interface , such as an interactive graphical user interface ( gui ). also , the gui can be situated at any location , as long as the relevant information can be passed to the system . for example , the information submitted through the gui by the user may be sent to the management server 106 , or to the management server 138 . under automatic configuration , establishment of a clustering system begins with step 702 , in which the primary node of the planned clustering system is identified . this may involve identification , by the user , of the name of one or more target applications and the name of the target server corresponding to the primary node . alternatively , a more automated process may be employed . for example , the main application executing in a target server may be selected . next , in step 704 , policies for creating the clustering system , including remote mirroring features , may be specified . this step may involve specification by the user of general policies to follow in establishing the clustering system and importance assigned to such policies . for example , the user may be presented with three potential policies : ( 1 ) performance , ( 2 ) reliability , and ( 3 ) cost . performance may relate to the effectiveness of the data transfer between the data storage of the primary node and the data storage of the secondary node , which may involve measures of bandwidth , distance , and network usage in a wide area san covering metropolitan areas of san francisco ( sf ) and san diego ( sd ) are provided in the table below : illustrative measures of bandwidth , distance , and network usage in the same wide area san , but from the perspective of the san diego ( sd ) metropolitan area , are provided in the table below : thus , if a user places emphasis on performance , the secondary node may be chosen to have equal performance as the primary node , in terms of processing capability ( server type ), storage capability ( throughput , cache size , raid level , etc . ), and network interface capability ( number and performance of host bus adaptors ). also if there are two or more option for interconnects between the primary device and secondary device , the interconnect that has more available throughput capacity may be chosen . for example , assume there are two interconnects : interconnect a , which has 48 gbps total throughput capacity and 10 % average usage rate ( 43 . 2 gbps available throughput capacity ), and interconnect b , which has 128 gbps total throughput capacity and 80 % average usage rate ( 25 . 6 gbps available throughput capacity ). here , interconnect a has more available throughput capacity than interconnect b , so interconnect a may be chosen . reliability may relate to the level of confidence with which the data storage of the secondary node replicates data in the data storage of the primary node . if a user places emphasis on reliability the secondary node may be chosen to have redundant host bus adaptors and highly reliable , enterprise level storage , such as raid level 1 . cost may relate to the cost of using equipment , such as maintenance costs . cost may also relate to the cost of acquiring currently unavailable equipment . if a user places emphasis on cost , the secondary node may be chosen to have much lower performance than the primary node , in terms of processing capability ( server type ), storage capability ( throughput , cache size , raid level , etc . ), and network interface capability ( number and performance of host bus adaptors ). for example , storage equipment of raid level 5 may be chosen . thus , by specifying general policies such as ( 1 ) performance , ( 2 ) reliability , and ( 3 ) cost , to follow in establishing the clustering system , the user is able control the design of the clustering system , without being required to decipher the detailed considerations relating to technical specifications of related equipment and software . the user may be presented with various general policies from which to choose . the user may specify policies by simply identifying particular policies as important . the user may also specify policies by assigning importance , or weight , to particular policies . this may be done in different ways , such as by user input of ratings , ratios , percentages , or other measures for different policies . the next step under automatic configuration is step 706 , in which information on the current system is gathered . such information may include the contents of mapping tables , discovery tables , topology tables , and configuration tables . this information provides a detailed picture of the various aspects of the current system , including the mapping from applications to resources they utilize , available resource and their configurations , and so on . in step 708 , the information on the current system gathered in step 706 is analyzed to select the most appropriate resources and / or arrangements to be used for creating the secondary node . this is done in view of the various policies , and possibly weights assigned to those policies , as defined by the user in step 704 . in step 710 , the selected resources and / or arrangements are presented to the user , and the user is given to opportunity to confirm the selection of resources and / or arrangements . if the user confirms the selection , the process continues with step 712 , discussed below . if the user does not confirm the selection , the process loops back to step 704 . in step 712 , the selected resources and / or arrangements are used to create the secondary node . if the selected resources need additional software installation or configuration in order to function properly as the secondary node , such installation or configuration may be performed . alternatively , the automatic configuration routine or semi - automatic configuration routine may re - select from resources that do not require additional software installation or configuration . also , default resources that do not require additional software installation or configuration may also be selected in order to avoid such installation or configuration of software . finally , in step 714 , the configuration table ( s ) are updated to include information on the secondary node just created . under semi - automatic configuration , establishment of a clustering system also begins with step 702 , which has been discussed previously . next , in step 716 , information on the current system is gathered . this step is similar to step 706 discussed above . in step 718 , one or more potential selections of appropriate equipment and / or arrangements to be used for creating the secondary node is presented to the user . the user is given the opportunity to select the various equipment and / or arrangements to be used in creating the secondary node . in step 720 , the user &# 39 ; s selection is received and presented back to the user for confirmation . here , a visual topology diagram such as the one shown in fig8 may be presented to the user . fig8 may also represent a simplified version of block diagram shown in fig1 if the user confirms the selection , the process continues with step 712 , which is has been described previously . if the user does not confirm the selection , the process loops back to step 618 . in addition , semi - automatic configuration may also take into account user - defined policies , as is done in the case of automatic configuration . here , such policies may allow potential selections of equipment and / or arrangements presented to be narrowed , so that the user may be presented with a more focused set of potential equipment and / or arrangements from which to make a selection . other features discussed above in relation to automatic configuration may be adopted for use with semi - automatic configuration , and vise versa . for example , the visual confirmation diagram discussed in relation to semi - automatic configuration may also be used with automatic configuration , in order to present the automatically selected equipment and or arrangement to the user for confirmation . further , variations on the different steps shown in fig7 may also be adopted . fig1 is a block diagram of a clustering system 100 in accordance with at least one embodiment of the present invention . such a diagram would allow the user to visually inspect a proposed configuration for a clustering system . this provides an efficient way to present a proposed configuration to the user for confirmation . although the present invention has been described in terms of specific embodiments , it should be apparent to those skilled in the art that the scope of the present invention is not limited to the described specific embodiments . the specification and drawings are , accordingly , to be regarded in an illustrative rather than a restrictive sense . it will , however , be evident that additions , subtractions , substitutions , and other modifications may be made without departing from the broader spirit and scope of the invention as set forth in the claims .