To manage storage multipathing, ESX/ESXi uses a special VMkernel layer, the Pluggable Storage Architecture (PSA). The PSA is an open, modular framework that coordinates the simultaneous operation of multiple multipathing plug-ins (MPPs).

The VMkernel multipathing plug-in that ESX/ESXi provides by default is the VMware Native Multipathing Plug-In (NMP). The NMP is an extensible module that manages sub plug-ins. There are two types of NMP sub plug-ins, Storage Array Type Plug-Ins (SATPs), and Path Selection Plug-Ins (PSPs). SATPs and PSPs can be built-in and provided by VMware, or can be provided by a third party.

If more multipathing functionality is required, a third party can also provide an MPP to run in addition to, or as a replacement for, the default NMP.

When coordinating the VMware NMP and any installed third-party MPPs, the PSA performs the following tasks:

Loads and unloads multipathing plug-ins.

Hides virtual machine specifics from a particular plug-in.

Routes I/O requests for a specific logical device to the MPP managing that device.

Handles I/O queuing to the logical devices.

Implements logical device bandwidth sharing between virtual machines.

Handles I/O queueing to the physical storage HBAs.

Handles physical path discovery and removal.

Provides logical device and physical path I/O statistics.

As Pluggable Storage Architecture illustrates, multiple third-party MPPs can run in parallel with the VMware NMP. When installed, the third-party MPPs replace the behavior of the NMP and take complete control of the path failover and the load-balancing operations for specified storage devices.

Pluggable Storage Architecture
The image shows third-party MPPs running in parallel with the VMware NMP.

The multipathing modules perform the following operations:

Manage physical path claiming and unclaiming.

Manage creation, registration, and deregistration of logical devices.

Associate physical paths with logical devices.

Support path failure detection and remediation.

Process I/O requests to logical devices:

Select an optimal physical path for the request.

Depending on a storage device, perform specific actions necessary to handle path failures and I/O command retries.

Support management tasks, such as abort or reset of logical devices.