In last article, we discussed about basics of Multipathing like:
- What is Multipathing & Why Multipathing?
- Advantages of Multipathing?
- How Multipathing works?
- Why do we need Multipathing driver?
In continuation of that, In this article we will be discussing about:
- How Multipathing implemented in VMkernel?
- What Architecture has been used by VMware to provide Failover and Load-Balancing functionalities to applications running in vSphere Storage Environment?
- What is Native Multipathing Plugin?
- What is PSP and SATP plugin?
The Following logical diagram shows a simple Multipathing Architecture:
WHAT IS PLUGABBLE STORAGE ARCHITECTURE
Pluggable storage architecture was one of the major enhancement done by VMware to provide two key functions of the storage component in vSphere world:
- Multipathing: If there are multiple paths, which paths should be used for given I/O
- Failover: When a path goes down, I/O should failover to alternative path automatically.
Apart from these, one of the key reason to introduce PSA was to allow third party vendor to insert code directly into the ESX storage I/O path to design their own load balancing techniques and failover mechanism for particular storage array.
That’s the reason PSA architecture was designed to modularize VMkernel storage stack which makes it easier for 3rd party storage vendors to develop & integrate their own proprietary components/algorithm into ESXi Kernel without having to provide internal information/intellectual property about their array to VMware.
- Native Multipathing Plugin (NMP): It is VMware Proprietary Multipathing plugin handles Multipathing and Failover. It manages two sub plugins: Storage Array Type Plugin (SATP) and PSP (Path Selection Plugin)
- Multipathing Plugin (MPP): It is also multipathing plugin but developed by 3rd party storage vendors to provide vendor specific failover and load-balancing algorithm for specific arrays.
These 3rd party vendors can have their own proprietary SATPs and PSP plugins. For eg. EMC Power path.
ESXCLI COMMAND to list multipathing modules.
[root@homelab:~] esxcli storage core plugin list
WHAT DOES NMP DO:
NMP manages sub-plugins for handling multipathing and load-balancing. NMP supports all storage arrays listed on the VMware Storage Hardware Compatibility List.
NMP performs following functions:
- Registers and De-registers logical devices with PSA framework
- Manages Physical Path Claiming and Unclaiming.
- Processes I/O request to Logical devices
- Selects an optimal physical path for the request to perform load-balancing.
- Performs a necessary action to handle failures and request retries.
- Handles task management operations – Abort/Resets
NMP has two sub-plugins. Both are developed by VMware. 3rd party can have their own sub-plugins.
STORAGE ARRAY TYPE PLUGIN (SATP):
SATP plugins are responsible for array-specific operations. SATP is mainly responsible for handling path fail-over for a given storage array.
SATP performs following functions:
- Monitors hardware state of the physical paths to the storage array
- Detect failures when a hardware component of physical path has failed
- Switch Physical Paths to array when a path has failed.
ESXCLI COMMAND TO LIST SATPs on ESXi Host
[root@homelab:~] esxcli storage nmp satp list
PATH SELECTION PLUGIN (PSP):
PSPs are mainly responsible for handling Path Selection Policies for given I/O request & performing load-balancing operations.
PSP performs following operations:
- Determining which physical path to be selected for given I/O request
- Determine which path to failover if current working path to storage has failed.
ESXCLI COMMAND TO LIST PSPs on ESXi Host
[root@homelab:~] esxcli storage nmp psp list
In next article, we will be discussing in detail about Multi-pathing policies eg. MRU, RR & Fixed Path.