If you're a Windows administrator who has dealt with storage for a while, you've probably lamented how poorly Windows handles multiple paths to storage resources. You might have spent a lot of time and money (e.g., investing in RAID, clustering, and third-party solutions) trying to ensure that your storage is highly available only to find that you still had a point of failure: the paths from the server to the storage device. Because the path to a storage device can encompass many components (e.g., buses, cabling, switches, controllers, connectors, host bus adapters--HBAs), ensuring that each link in that chain is strong can be difficult at best. If you've employed a specific vendor's multipathing technology to ensure that your systems can use multiple I/O paths to storage devices, you might also have been frustrated by the fact that the solution provided neither redundancy nor load balancing particularly well.
The problem with early versions of Windows was that the Windows storage I/O subsystem didn't natively support multipath failover or I/O load balancing. Windows was simply ignorant of more than one path to a storage device. Storage vendors eager to differentiate their platform from competitors' products in the Windows space quickly (and inadequately) filled this functionality gap. However, every vendor did so uniquely and with varying degrees of success. For example, EMC's and HP's multipathing solutions worked differently and wouldn't interoperate.
From Microsoft's viewpoint, such third-party solutions generated endless support calls when they didn't work. In addition, keeping all the solutions in sync with Windows releases became a nightmare--and one that IT shops ultimately paid the price for.
Enter Microsoft Multipath I/O (MPIO). With MPIO, Microsoft provides native OS drivers and support for multipathing. Each storage vendor must then develop what Microsoft calls a device-specific module (DSM) to integrate MPIO with the specifics of the vendor's hardware solution. Microsoft requires the products to meet standards (i.e., through the Windows Logo program) that ensure compatibility and functionality.
MPIO starts with the base OS and relies on the Windows Plug and Play (PnP) facilities to dynamically detect and configure storage devices. By seamlessly working with the PnP architecture, the MPIO driver can detect and configure storage devices and the I/O paths to those devices.
Another key to the MPIO solution is the successful enumeration of storage devices as they are detected. For enumeration to work, each device must have a unique identifier. Rather than using disk signatures (the traditional means of unique identification), MPIO uses hardware information available from the vendor, such as a device serial number. Each device must be identified by vendor and type--is the device unique, or is it one that PnP has already identified and accounted for through another path? Because not all vendors enumerate and uniquely identify devices the same way, the MPIO drive and the vendor DSM work together to identify devices in a way that's compatible with the MPIO architecture.
MPIO also supports load balancing of the I/O paths to storage transparently and without administrator intervention. MPIO does this by maintaining an understanding of which paths are active and available based on policies and information that the vendor's DSM provides. If, after receiving an I/O request, MPIO determines that a path is inactive, MPIO can automatically initiate a transparent failover and ensure that paths to storage devices are available.
Microsoft put a lot of effort into MPIO to address a myriad of past concerns and frustrations. MPIO is really a two-part solution, consisting of MPIO drivers provided by Microsoft and DSMs provided by vendors. The result is a common framework for multipath I/O that's independent of the storage vendor. The MPIO approach should make the storage vendor's work easier and substantially reduce Microsoft's support burden for multipath solutions. Ultimately, IT customers will reap the benefits of being able to deploy storage infrastructures with robust support for multipath redundancy and scalability.