Discovery and configuration of device configurations

A computer program product for processing communications between a host processor and a plurality of devices includes a tangible storage medium for performing a method comprising: receiving, by the host processor, physical configuration information including identification of a location of each physical endpoint connected to the host processor and a plurality of communication paths associated with each physical endpoint; sending at least one message to each physical endpoint on each of the plurality of communication paths, the at least one message requesting identification of a logical entity at the endpoint, and receiving logical configuration information identifying the logical entity; and generating a data collection accessible by the host processor, the data collection including the physical configuration information and the logical configuration information for each logical entity, and identification of a location of each physical endpoint connected to the host processor and a plurality of communication paths to each logical entity.

BACKGROUND

The present invention relates to computer memory and, more specifically, to discovery of the configuration of devices located at endpoints of storage area networks and endpoints directly attached to controllers.

Managing the configuration of devices and control units in a clustered environment is a daunting task and is typically performed by highly skilled personnel with vast experience. Whenever changes to the environment are required, care must be taken to ensure that new devices and control units are connected and configured properly. Even the skilled and experienced personnel can easily make mistakes due to the complexity of the environment. These mistakes include selecting paths that may not reach the proper device, selecting paths in such a way that could lead to loss of connectivity if one common component of the set of paths chosen fails, or selecting paths that over commit the available bandwidth for the workload that will run on those paths across all storage subsystems.

SUMMARY

An embodiment is a computer program product for processing communications between a host processor and a plurality of devices connected to the host processor by an input/output processing system, comprising a tangible storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for performing a method comprising: receiving, by the host processor, physical configuration information including identification of a location of each physical endpoint connected to the host processor and a plurality of communication paths associated with each physical endpoint; sending at least one message to each physical endpoint on each of the plurality of communication paths, the second message requesting identification of a logical entity at the endpoint, and receiving logical configuration information identifying the logical entity; and generating a data collection accessible by the host processor, the data collection including the physical configuration information and the logical configuration information for each logical entity, and identification of a location of each physical endpoint connected to the host processor and a plurality of communication paths to each logical entity.

Another embodiment is a method of processing communications between a host computer and a plurality of devices connected to the host computer by an input/output processing system, the method comprising: receiving, by the host processor, physical configuration information including identification of a location and a plurality of communication paths associated with each physical endpoint; sending at least one message to each physical endpoint on each of the plurality of communication paths, the at least one message requesting identification of a logical entity at the endpoint, and receiving logical configuration information identifying the logical entity; and generating a data collection accessible by the host processor, the data collection including the physical configuration information and the logical configuration information for each logical entity, and identification of the plurality of communication paths to each logical entity.

A further embodiment includes a computer program product for processing communications between a host processor and a plurality of devices connected to the host processor by a network, comprising a tangible storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for performing a method comprising: generating an exploration device by configuring at least one of hardware and software in the host processor, the exploration device configured to be used to communicate with one of a plurality of physical endpoints in the network; responsive to a connection between the host processor and the plurality of devices being a network connection, sending a first Fibre Channel message from a channel subsystem in the host computer to a network processor requesting a configuration of the plurality of physical endpoints; receiving physical configuration information from the network processor in response to the first message, the physical configuration information including identification of a location and a plurality of channel paths associated with each I/O device; sending a second Fibre Channel message to one or more I/O devices on each of the plurality of channel paths, the second Fibre Channel message requesting identification of a logical image connected to the plurality of channel paths, and receiving logical image information identifying the logical control unit; and generating a data collection accessible by the host computer, the data collection including the physical configuration information and the logical information for each channel path, and identification of the plurality of channel paths to each logical control unit.

DETAILED DESCRIPTION

The systems and methods described herein include an automatic process for making incremental updates to a running operating system or cluster of operating systems. These incremental updates are for the dynamic discovery of physical and logical I/O device entities, such as newly connected or changed storage subsystems, control units and I/O devices connected to one or more host computers in a cluster, and connected to the devices via point-to-point and/or network fabric connections. These resources that are dynamically discovered are placed into an I/O configuration definition having optimal high availability characteristics (to allow single points of failure to be avoided) and allowing for a client based policy for controlling performance goals (e.g. number of managed channels). The I/O resources are discovered and assigned using messages such as existing, well-known I/O commands and new I/O commands (e.g. Test Initialization Capability (TINC) commands). The fabric is explored through each attached channel or other communication path on each node in the cluster to determine all of the device entities, such as physical or logical control units and I/O devices, to which a logical path can be established. Each device entity is discovered by interrogating and exploring the network nodes to discover all physical endpoints, such as destination ports, followed by utilizing commands configured to interrogate each endpoint via each available channel or path to receive configuration data for each logical device entity. In one embodiment, the hardware and/or software of the host computer is dynamically configured to generate an exploration device used to deliver interrogation I/O messages to each endpoint and generate configuration data for logical control units (control unit images) and other logical device entities. The configuration data may be used to update existing device configurations and/or may be used to manage I/O operations by selecting paths based on availability and performance considerations.

FIG. 1illustrates an exemplary embodiment of a computing, processing and/or data management system100such as a storage area network or fabric. The system100includes one or more host processors102connected to a plurality of device entities represented as nodes104. The host processor102may be any computer or processing and/or storage device, such as a server, storage unit, data center and device management unit. The host processor102may be a large scale computing system, such as a mainframe or server. The nodes104may be connected in communication with the host processors102via suitable connectors106such as wires, cables and optical fibers, as part of, for example, a Fibre Channel (FC) or Internet Protocol (IP) network. Each node104may include one or more I/O devices such as disk controllers, tape controllers, card readers and punches, magnetic tape units, direct access storage devices, displays, keyboards, printers, pointing devices, teleprocessing devices, communication controllers and sensor based equipment, to name a few.

Each host processor102includes an I/O processing system108configured to facilitate communication between the host processors102and the nodes104. In one embodiment, the system100includes one or more network processors such as name servers, network switches and/or Fibre Channel switches110. Each switch110is coupled to an I/O processing system108and one or more nodes104and provides the capability of physically interconnecting any two links that are attached to the switch110. The network processor may include a database or other structure storing network configuration information for each physical endpoint of the network, such as identifiers, fabric addresses and zoning procedures.

In one embodiment, the host processor(s)102are configured as a system complex or “sysplex” that includes multiple processors such as servers or mainframes connected as a single logical system. In one example, the host processor102is a parallel or other sysplex that act as a single system image with an operating system. The sysplex may include dedicated hardware and/or virtual images executing under the control of a hypervisor or a PR/SM (Processor Resource/System Manager). For example, one or more of the host processors102include operating systems124that may be partitioned into one or more images or logical partitions (LPARs), and multiple physical and/or logical (e.g., LPARs) host computers may be connected in the cluster or sysplex.

DETAILED DESCRIPTION

FIG. 2illustrates an example of an I/O processing system108included in a host processor102. In this embodiment, the I/O processing system108includes a channel subsystem112, and each node104includes an I/O device114, one or more optional physical control units115, and can include one or more logical entities117such as logical control units116which may be associated with one or more logical devices or device images119. The logical entities117may be any non-physical device incorporated in or associated with the device114, destination port or node104, including any storage or memory area, logical volume, or image.

The host processor102includes, for example, a main memory118, one or more processors such as central processing units (CPUs)120, a storage control element122, and the channel subsystem112. The I/O processing system108is connected via the network with one or more storage subsystems such as control units116associated with one or more control unit images116and logical I/O devices114. The control units and control unit images may be connected to the I/O processing system108via direct, point-to-point connections or fabric connections. The control units may be configured as physical control units115connected to or otherwise incorporated into the devices114. The control units may also be logical control units116or virtual images associated with one or more devices114and/or logical devices119.

Main memory118stores data and programs, which can be input from I/O devices114. For example, the main memory118may include one or more operating systems (OSs)124(which may be configured as one or more logical partitions (LPAR)) that are executed by one or more of the CPUs120. For example, one CPU120can execute a Linux™ operating system124and a z/OS™ operating system124as different virtual machine instances. The main memory118is directly addressable and provides for high-speed processing of data by the CPUs120and the channel subsystem112.

One or more of the above components of the network100are further described in “IBM® z/Architecture Principles of Operation,” Publication No. SA22-7832-05, 6th Edition, April 2007; and U.S. Pat. No. 5,526,484 entitled “Method And System For Pipelining The Processing Of Channel Command Words,” Casper et al., issued Jun. 11, 1996, each of which is hereby incorporated herein by reference in its entirety. IBM is a registered trademark of International Business Machines Corporation, Armonk, N.Y., USA. Other names used herein may be registered trademarks, trademarks or product names of International Business Machines Corporation or other companies.

CPU120(or one or more LPARs) is the controlling center of the I/O processing system108. It contains sequencing and processing facilities for instruction execution, interruption action, timing functions, initial program loading, and other machine-related functions. Storage control element122is coupled to the main memory118, the CPUs120and the channel subsystem112, and controls, for example, queuing and execution of requests made by the CPU120and channel subsystem112.

The channel subsystem112provides a communication interface between host system102, switches110and endpoints such as physical and/or logical control units. The channel subsystem112is coupled to the storage control element122, as described above, and to each of the control units116via a connection126, such as a serial link. The connection126may be implemented as an optical link, employing single-mode or multi-mode waveguides in a Fibre Channel fabric. The channel subsystem112directs the flow of information between I/O devices114and main memory118. It relieves the CPUs120of the task of communicating directly with the I/O devices114and permits data processing to proceed concurrently with I/O processing.

Each node104, endpoint or device114may be associated with one or more logical entities or virtual images such as one or more logical control units116. Each logical control unit116provides logic to operate and control one or more I/O devices114and adapts, through the use of common facilities, the characteristics of each I/O device114to the link interface provided by the channel127. The common facilities provide for the execution of I/O operations, indications concerning the status of the I/O device114and control unit116, control of the timing of data transfers over the channel paths127and certain levels of I/O device114control.

In one embodiment, the logical control units116control the operation of one or more input/output devices114. In another embodiment, the logical control units116control access to logical devices119or memory ranges in a storage device114. The logical control units116may be located within or outside of the physical device114or physical control unit.

The channel subsystem112uses one or more communication paths, such as channel paths127(or I/O channels) as the communication links in managing the flow of information to or from the I/O devices114and/or the control units116. The channel paths127(i.e., channels) may include any combination of communication devices (such as connections126or connectors106and/or switches110) that form a logical path through which data is transferred between network components, such as between the channel subsystem112and a node, device or logical control unit116). Channels127may be connected by optical fiber, wireless and/or cable subsystem that connect components as well as switching devices. Subchannels128(hardware representations of the device114) may be associated with each control unit115,116and/or device114and serve to represent the device114. For example, a control unit115is associated with a set of up to 8 channels127and may have up to 256 subchannels associated with logical control units116.

As a part of the I/O processing, the channel subsystem112also performs the path-management functions of testing for channel path availability, selecting an available channel path (channel127or subchannel128) associated with an I/O device and initiating execution of the operation with the I/O device114for the existing I/O configuration definition.

In one embodiment, one or more subchannels128are provided for each endpoint or node104accessible to a program through the channel subsystem112. Each subchannel128may provide (via, for example, a data structure, such as a table) the logical appearance of a device (or a logical control unit116) to the host processor102. Each subchannel128provides information concerning the associated I/O device and its attachment to the channel subsystem108. The subchannel128also provides information concerning the state of I/O operations and other functions involving the associated I/O device114. The subchannel is the means by which channel subsystem112provides information about associated I/O devices114to CPUs120, which obtains this information by executing I/O instructions received from, for example, the O/S124. Each subchannel128is associated with a logical control unit116that is associated with one or more paths or channels127.

FIG. 3illustrates a method300of discovering devices in a network and/or generating a network device entity configuration. The method300includes one or more stages301-306. Although the method300is described in conjunction with the host computer system or processor102and the channel subsystem112, the method300can be utilized in conjunction with any processing and/or storage devices capable of I/O operations with remote devices, as well as with any network device or system. The method can be performed by one or more host processors102, such as one or more host processors102or other processing or control entities in a cluster.

In the first stage301, for a system or network100that includes multiple host entities or processors102, such as host processing systems or computers in a cluster or sysplex, a target list of host processors102within the cluster is selected. For example, one or more host processors102, LPARs, clusters or network segments are selected to be used for exploration. The selection may include determining which entities will be used, whether the entities102are capable of exploration, and also what channels127will be explored for each target host. The selection may also include determining what entities are capable of making dynamic I/O configuration changes to facilitate exploration.

In the second stage302, one or more exploration devices are dynamically created and configured for use to deliver I/O commands and/or other messages to various nodes and logical devices in the cluster. The exploration device is created and associated with a selected network path (such as a channel127) and an endpoint address. The exploration device(s) are dynamically configured on each target host or host processor102. In one embodiment, the exploration device is assigned an address based on the network's pre-existing naming protocol. The exploration device may be generated or reconfigured for each channel127or other communication path for each endpoint. This is performed for each target host or system identified in stage301.

An exploration device includes any O/S and/or hardware configuration that is added to hardware or software and used to establish a connection with an endpoint via a selected channel127or other communication path, and which can represent an endpoint to the host computer system102. In one embodiment, the exploration device is any configuration added to software, the O/S and/or hardware. The configuration can be dynamically changed to create an exploration device for each channel127as needed.

An example of a exploration device is a memory structure such as a control block. An example of a control block is a unit control block (UCB) configured in the host computer that can describe any single device or endpoint to the O/S. The UCB may include various data describing an endpoint, such as an address, an identifier (e.g., device number) and one or more communication path identifiers (e.g., channel number). The UCB may be used by, for example, the O/S124to send messages to a selected endpoint.

In the third stage303, a physical configuration of various endpoints connected to the host processor102(or cluster) is determined. The physical configuration may include a configuration of point-to-point devices and/or fabric devices, such as physical controllers115and/or I/O devices114at each endpoint. For example, in point-to-point configurations, one channel may be connected to one endpoint, and in fabric connections, one channel may be connected to a switch or network processor that is connected to a plurality of endpoints. In this stage, the host processor102receives physical configuration information including identification of a location and at least one communication path or channel127associated with each physical endpoint.

In one embodiment, if the host processor102and the endpoints are connected via a network or fabric, a first message is sent to each network processor110over each I/O channel127that is connected to the fabric to determine all of the destination ports or other physical endpoints such as physical controllers115that are available through each I/O channel127. A message may be any type of signal or data transfer for communication between two components. Examples of messages include a data stream, frame, packet, signal, and one or more frames associated with one or more selected operations. In one embodiment, sending the first message includes iteratively sending a message over each channel127to the fabric. In one embodiment, sending each message includes connecting an exploration device (e.g., a UCB) assigned to a channel127and sending a message over the channel127to identify the I/O resources available to that channel as a destination port and/or physical I/O device. Each message is sent using an existing protocol, such as Fibre Channel (FC) commands defined in the standard by the INCITS Fibre Channel (T11) Technical Committee. In one example, a single subchannel128may be used to reach all endpoints to a which a channel127can establish a logical path to.

In one embodiment, for each channel127having an exploration device connected thereto, a response message is received from the network processor110at selected network endpoints. The response message may include various physical configuration information that identifies the physical endpoints and may also provide other characteristic and/or topology information for the physical endpoints.

In one example, for each channel127, host computer hardware and/or software is updated or configured by adding a control block to the O/S hardware (e.g., via microcoding) and software. The control block is assigned an unused control unit number, device number and a channel path identifier based on a selected or pre-existing naming protocol. The control block is dynamically connected to the channel127and a fibre channel (or other protocol) endpoint identification command or message is sent to the channel127to identify physical entities at the associated endpoint. An example of such a command is a Fibre Channel Generic Services (FC-GS) get port identifiers command (e.g., GID_FT), which may be sent as an information unit (IU) or frame via the channel127to a name server or other network processor110. In one embodiment, if a GID_FT message is sent but is not successful, other commands such as a GA_NXT command (Get All Next) may be used. A command response may be returned by the network processor110(e.g., name server), providing port identification information, which can be used to update the exploration device.

For example, the channel subsystem112acts as an FCP Initiator N_Port and issues a Fibre Channel Generic Services (FC-GS) GID_FT to the discovery device, which then causes a command message (such as a channel command words (CCW)) to a name server (located for example in a switch110) to get a list of N_Port Identifiers.

The list of port identifiers is returned by the name server via a response message (e.g., Accept CT_IU). The host processor102can limit selection to just those ports of a certain type, e.g. FICON.

In one example, the first message is a Fibre Channel Link Services (FC-LS) Request Node Identification (RNID) command. A RNID command may be used by the host processor102to request identification and/or configuration information from the control unit116or other logical device or entity at an endpoint of a given channel127. The RNID is sent, in one example, by the OS124. The host processor102may receive a response to the message, such as a RNID response, that provides the requested configuration information to the channel subsystem112. The RNID data received via the RNID response includes, for example, a world wide unique physical identifier and includes information describing the endpoint (e.g., whether the endpoint is an I/O device such as a tape or disk, a destination port or a channel). In this stage, both switch-attached and direct attached nodes104are identified and physical configuration information is received.

In the fourth stage304, the host processor102or channel subsystem112determines what (if any) logical entities, including logical control units116, are connected to the selected channel127. In one embodiment, this stage is performed to identify logical control units116or other logical entities such as logical devices119associated with each path and with the physical entities discovered in stage303. In one embodiment, the host processor102or channel subsystem112may perform this stage for each channel127, physical device and/or endpoint discovered in stage303, or may only perform this stage for selected channels or devices. For example, the physical device and/or destination port information received in stage303may be outputted to a user to allow the user to select devices and/or channels for discovery of logical devices. Although this stage is described as performed to discover logical entities, it may also be performed to discover physical entities including hardware such as physical devices and/or control units.

One or more second messages are sent to each I/O channel127, requesting identification of a logical device entity at the endpoint. In one embodiment, sending the second message includes iteratively sending a message to each channel127to reach all endpoints reachable from each channel127. In one embodiment, using the exploration device (e.g., UCB) assigned to the channel127, a device identification message is sent to the channel127to identify the connected logical device (e.g., logical control units116and logical devices119and request configuration information. Each message is sent using an existing protocol, such as Fibre Channel FC protocol. The logical device identification message is sent for each channel127, including channels connected to a fabric and any channels127with direct attached nodes104.

In one embodiment, the connected device is a logical control unit116associated with a physical controller115, and the message requests logical configuration information to be sent from the logical controller, such as the type of device, device capacity, device status, a world wide unique device identifier and address information. An example of logical device identification messages is the Read Configuration Data (RCD) command, described in “ESA/390 Common I/O-Device Commands and Self Description”, publication number SA22-7204-02, which is hereby incorporated herein by reference in its entirety. Logical device identification messages may include any device and/or protocol specific query commands (such as sense identification (sense ID) commands) for logical configuration information about logical control units and associated logical devices. In one embodiment, the logical identification messages include Fibre Channel (FC) commands that are issued to the exploration device, and I/O messages such as channel command words (CCWs) are issued to the endpoints. Examples of FC commands include FC-SB-4 (Fibre Channel-Single-Byte Command Code Sets-4), FC-GS (FC Generic Services) and FC-LS (FC Link services) commands.

An example of the second message is a Test Initialization Capability (TINC) command, which is a FC-SB-4 Link Control command. The TINC command may be used to gather information such as a control unit number identifying a logical control unit116. For example, the TINC command may be used to receive a list of logical image information (logical control units)116in the node104associated with the endpoint. The TINC command is further described, for example, in U.S. application Ser. No. 12/821,250, filed on Jun. 23, 2010, which is hereby incorporated by reference in its entirety.

In one embodiment, the TINC command is used in combination with additional query commands to gather logical control unit information. For example, the TINC command is used to gather control unit numbers. If the TINC command is successful, additional device-specific query commands can be used to gather additional logical characteristics of the I/O device114.

For example, the TINC includes an indication of the LPAR or host processor102requesting the logical image information. A TINC response may include identification of logical image information indicating each logical control unit116associated with the channel127, such as a vector having a width equal to the number of possible logical control units116that may be formed in the physical device receiving the request. In one embodiment, the first vector has a width of 256 bits. The first vector represents the logical control units116at the endpoint that the LPAR has access to and that have been configured and addressable. The vector includes a bit for each logical control unit116, which is filled with a one or zero depending on whether the logical control unit116corresponding to that bit is configured and addressable by the requesting image (e.g. LPAR). In some cases, not every logical control unit116is accessible by every requesting image. Stages302-304are repeated for each channel127or other communication path in the network or cluster and for each endpoint available to each channel127, and an exploration device may be dynamically created for each channel127. After all of the endpoints have been explored, the exploration device may then be disconnected from the channels127.

The message protocols are not limited to those described herein, and may include any protocols sufficient to allow for interrogation of nodes and/or physical and logical devices in a network. Examples of message protocols include various Fibre Channel protocols such as FICON (Fibre Connectivity) protocols, as well as protocols supporting channel command words (CCW) channel programs and protocols supporting transport control word (TCW) channel programs, as described, for example, in U.S. Patent Publication No. US 2009/0210581 A1 entitled “Bi-directional Data Transfer Within a Single I/O Operation,” which is hereby incorporated herein by reference in its entirety.

In the fifth stage305, the physical and logical configuration information is stored as a data collection or list accessible by the host computer102, which includes configuration information as well as channel path information for each physical device and/or logical device. In one embodiment, the physical configuration information is included in a list of all physical controllers114, and may be consolidated into a master table for all nodes104for the systems or processors102in the cluster that participated in the method300.

In one embodiment, the control unit116and device114configuration information is hardened such that the hardware components (e.g., processors, channel subsystems) know about them (e.g., through the creation of input/output configuration data set (IOCDS) definitions) and the software components (e.g., operating systems) know about them (e.g., via input/output configuration programs (IOCPs) for hardware, input/output definition files (IODFs) for software, and/or UCB creation).

In one embodiment, the data collection includes first a list, table or other collection for each endpoint and physical device (such as physical control units115and I/O devices114). In addition, the data collection includes a second list, table or other collection of all logical control units116and logical device images119associated with the logical control units, as well as each path (e.g., channel127) to the logical control units116and devices119. In this way, multiple paths to each control unit and/or device image may be configured and available for use.

For example, the data collection includes a first master table of all nodes104discovered, including a representation of all establishable paths that can reach each node104from each host102. The data collection also includes a second master table of all host processors102and their associated channels127, including a list of each reachable endpoint.

In the sixth stage306, the data collection, such as list of discovered logical control units116and devices114, is compared against a pre-existing collection or list of previously configured control units116and devices114for the cluster of nodes. The pre-existing list may be a data collection produced from a prior method similar to method300or compiled by any other process. For example, for a z/OS, the pre-existing list may include a description of those devices and control units described in the IODF. In this way, all new (not previously configured) logical and physical entities may be identified, and may also be used to update the pre-existing list if desired.

FIG. 4illustrates a method400of discovering logical control units and logical devices in a network and/or generating a network device entity configuration. The method400includes one or more stages401-406. Although the method400is described in conjunction with the host computer system102and the channel subsystem112, the method400can be utilized in conjunction with any processing and/or storage devices capable of I/O operations with remote devices, as well as with any network device or system.

This method400is provided to determine if new logical control units or other devices exist, or if new devices on previously configured control units exist. For new control units and/or devices, this method may perform automatic device and control unit numbering and path selection.

In the first stage401, a number of host processors102, clusters and/or other entities are selected to be used for controller discovery, and paths such as channels127are selected to reach each selected node104. For example, one or more host processors102, LPARs, clusters, network segments or other target hosts are selected to be used for exploration. This stage is performed similarly to stage301.

In the second stage402, messages are sent from the target hosts to each potential logical control unit on the destination hardware, and/or exploration devices are dynamically configured on at least one target host and connected (and subsequently disconnected), to receive physical configuration information. Existing devices can be used to send messages if they exist, or if none exist for a selected node or endpoint, an exploration device can be configured. In one embodiment, exploration devices are configured on one of the target hosts selected in401, selecting one complete path (e.g., channel127and endpoint) discovered in the method300to reach the node104. This process is repeated for each possible logical control unit.

In the third stage403, I/O commands such as CCW commands or other messages are sent to each channel127using the target hosts to gather configuration information regarding each logical device, and the configuration information is consolidated and compared to a list of previously configured devices in the network or cluster, revealing a list of new control units and new devices that were not previously configured or connected to the network. This stage is performed similarly to stages304-306of the method300.

In the fourth stage404, a representation of the discovered devices for each logical control unit is created in, for example, a control block that represents every new logical CU and device image. Stages402through404are repeated for each logical control unit to be explored on each node104.

In the fifth stage405, appropriate paths are selected for the set of new logical control units that have been discovered. In one embodiment, channels127or other communication paths are selected from the list of possible paths (discovered in stages403-404and stored in the data collection in stage305) that could be used to reach a new control unit116. In one embodiment, the host system102or channel subsystem112is configured to utilize the configuration information to identify multiple separate communication paths between any given host computer and device entity, so that if one path to a device or control unit is lost, another path can be selected to effect communication. When an I/O operation is to be performed for a selected device114, the computer system102and/or channel subsystem112may determine the best channel127or other communication path to use for executing the operation. During path selection, analysis is performed so that the set of paths chosen are selected to provide high availability. As a part of this analysis, consideration is given to ensure that, if possible, not all paths share the same switches or other network devices. This stage is performed for each target device114or control unit116in the cluster. In one embodiment, path selection may be automatically performed based on selected or pre-configured considerations for availability. In one embodiment, the path selection is performed for each host processor102, and paths (e.g., static and/or dynamic or managed paths) are created for each host processor102so that the newly discovered logical control units and devices are accessible to each host processor102. In one embodiment, the host processors102are part of a cluster that is managed by a Dynamic Channel Path Management (DCM) system that includes both static channels, and managed channels that can be re-assigned between selected I/O clusters. In this embodiment, identification data includes a Channel Path ID (CHPID) for each logical control unit.

In the sixth stage406, identification data is generated for each logical control unit and device discovered. For example, addresses are created, such as device and control unit numbers, for devices and control units that have been discovered. The numbers may be selected based on a pre-existing configuration naming system.

In one embodiment, for DCM systems, stage406includes creating or using a policy that establishes a desired level of connectivity between host processors102and logical control units level of connectivity (i.e., the number of CHPIDS, static and managed). A number of static and/or managed channels to each logical control unit may be selected via the DCM system to create the level of connectivity desired. An example of a DCM system is described in U.S. Pat. No. 6,598,069, issued Jul. 22, 2003, which is hereby incorporated herein by reference in its entirety.

The systems and methods described herein provide numerous advantages over prior art dataflow systems. Technical effects and benefits include allowing for dynamic and automated discovery of physical and logical devices, such as control units, in a network or cluster. Using the exploration methods described herein allows for dynamic discovery of hardware in a clustered environment. Once discovery is complete, a consistent configuration can be used by the cluster, and can be utilized to automatically create and update network configurations and optimize system operation. The systems and methods allows for paths not currently used to be adopted, where prior approaches required manual effort and human knowledge to add new paths to control units. Other advantages include ensuring that communication paths chosen for various I/O operations are to the correct control units, and allowing paths to be chosen with availability considerations and minimal human interaction. In addition, each node in the network or cluster may use this automatic path selection, minimizing the manual effort in selecting communication paths to I/O devices.