Patent ID: 8024497

Claim:
A computer system for distributing a virtual I/O server across a plurality of logical partitions on a shared computer resource, the computer system comprising: one or more processors, one or more computer-readable memories and one or more computer-readable tangible storage devices; program instructions, stored on at least one of the one or more computer-readable tangible storage devices for execution by at least one of the one or more processors via at least one of the one or more computer-readable memories to receive an I/O request for an application running on a logical partition of the plurality of logical partitions; program instructions, stored on at least one of the one or more computer-readable tangible storage devices for execution by at least one of the one or more processors via at least one of the one or more computer-readable memories, responsive to receiving the I/O request, to identify performance metrics of available I/O devices among I/O devices of one or more computers; program instructions, stored on at least one of the one or more computer-readable tangible storage devices for execution by at least one of the one or more processors via at least one of the one or more computer readable memories, responsive to identifying the performance metrics of the available I/O devices, to choose, from the available I/O devices among the I/O devices of the one or more computers, an I/O device of a type needed by the I/O request; program instructions, stored on at least one of the one or more computer-readable tangible storage devices for execution by at least one of the one or more processors via at least one of the one or more computer-readable memories, responsive to choosing an I/O device of the type needed by the I/O request, to assign the I/O request to the I/O device; program instructions, stored on at least one of the one or more computer-readable tangible storage devices for execution by at least one of the one or more processors via at least one of the one or more computer-readable memories, responsive to assigning the I/O request to the I/O device, to save an assignment of the I/O request to the I/O device in an I/O device mapping list so that a client may encapsulate the assignment in subsequent requests in a client/server session; and program instructions, stored on at least one of the one or more computer-readable tangible storage devices for execution by at least one of the one or more processors via at least one of the one or more computer-readable memories, to send the I/O request to the I/O device.