I/O virtualization

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

Input/output (I/O) virtualization is a methodology to simplify management, lower costs and improve performance of servers in enterprise environments. I/O virtualization environments are created by abstracting the upper layer protocols from the physical connections.[1]

The technology enables one physical adapter card to appear as multiple virtual network interface cards (vNICs) and virtual host bus adapters (vHBAs).[2] Virtual NICs and HBAs function as conventional NICs and HBAs, and are designed to be compatible with existing operating systems, hypervisors, and applications. To networking resources (LANs and SANs), they appear as normal cards.

In the physical view, virtual I/O replaces a server’s multiple I/O cables with a single cable that provides a shared transport for all network and storage connections. That cable (or commonly two cables for redundancy) connects to an external device, which then provides connections to the data center networks.[2]

Reasons for I/O virtualization

Server I/O is a critical component to successful and effective server deployments, particularly with virtualized servers. To accommodate multiple applications, virtualized servers demand more network bandwidth and connections to more networks and storage. According to a survey, 75% of virtualized servers require 7 or more I/O connections per device, and are likely to require more frequent I/O reconfigurations.[3]

In virtualized data centers, I/O performance problems are caused by running numerous virtual machines (VMs) on one server. In early server virtualization implementations, the number of virtual machines per server was typically limited to six or less. But it was found that it could safely run seven or more applications per server, often using 80 percent of total server capacity, an improvement over the average 5 to 15 percent utilized with non-virtualized servers .

However, increased utilization created by virtualization placed a significant strain on the server’s I/O capacity. Network traffic, storage traffic, and inter-server communications combine to impose increased loads that may overwhelm the server's channels, leading to backlogs and idle CPUs as they wait for data.[4]

Virtual I/O addresses performance bottlenecks by consolidating I/O to a single connection whose bandwidth ideally exceeds the I/O capacity of the server itself, thereby ensuring that the I/O link itself is not a bottleneck. That bandwidth is then dynamically allocated in real time across multiple virtual connections to both storage and network resources. In I/O intensive applications, this approach can help increase both VM performance and the potential number of VMs per server.[2]

Virtual I/O systems that include quality of service (QoS) controls can also regulate I/O bandwidth to specific virtual machines, thus ensuring predictable performance for critical applications. QoS thus increases the applicability of server virtualization for both production server and end-user applications.[4]

Benefits

  • Management agility: By abstracting upper layer protocols from physical connections, I/O virtualization provides greater flexibility, greater utilization and faster provisioning when compared to traditional NIC and HBA card architectures.[1] Virtual I/O technologies can be dynamically expanded and contracted (versus traditional physical I/O channels that are fixed and static), and usually replace multiple network and storage connections to each server with a single cable that carries multiple traffic types.[5] Because configuration changes are implemented in software rather than hardware, time periods to perform common data center tasks – such as adding servers, storage or network connectivity – can be reduced from days to minutes.[6]
  • Reduced cost: Virtual I/O lowers costs and enables simplified server management by using fewer cards, cables, and switch ports, while still achieving full network I/O performance.[7] It also simplifies data center network design by consolidating and better utilizing LAN and SAN network switches.[8]
  • Reduced cabling: In a virtualized I/O environment, only one cable is needed to connect servers to both storage and network traffic. This can reduce data center server-to-network, and server-to-storage cabling within a single server rack by more than 70 percent, which equates to reduced cost, complexity, and power requirements. Because the high-speed interconnect is dynamically shared among various requirements, it frequently results in increased performance as well.[8]
  • Increased density: I/O virtualization increases the practical density of I/O by allowing more connections to exist within a given space. This in turn enables greater utilization of dense 1U high servers and blade servers that would otherwise be I/O constrained.

Blade server chassis enhance density by packaging many servers (and hence many I/O connections) in a small physical space. Virtual I/O consolidates all storage and network connections to a single physical interconnect, which eliminates any physical restrictions on port counts. Virtual I/O also enables software-based configuration management, which simplifies control of the I/O devices. The combination allows more I/O ports to be deployed in a given space, and facilitates the practical management of the resulting environment.[9]

List of hardware with virtual I/O support

See also

References

  1. 1.0 1.1 Lua error in package.lua at line 80: module 'strict' not found.
  2. 2.0 2.1 2.2 Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found.
  4. 4.0 4.1 Lua error in package.lua at line 80: module 'strict' not found.
  5. Lua error in package.lua at line 80: module 'strict' not found.
  6. Lua error in package.lua at line 80: module 'strict' not found.
  7. Lua error in package.lua at line 80: module 'strict' not found.
  8. 8.0 8.1 Lua error in package.lua at line 80: module 'strict' not found.
  9. Lua error in package.lua at line 80: module 'strict' not found.