In this article, we are going to discuss about ALUA related Frequently Asked Questions:
- WHAT IS ALUA?
- WHY ALUA?
- HOW ALUA is different from Active/Passive Array
- How ALUA is different from symmetric Active/Active Array
ALUA = ASYMMETRIC + LOGICAL UNIT ACCESS
Fig.1 – IO coming to Controller A (Non-Owning Controller) for LUN is being forwarded to Controller A (Owning Controller) via backend channel
WHAT IS LOGICAL UNIT ACCESS
LUN refers to logical unit derived from Physical Device/Drives & being accessed by SCSI protocol or SAN protocols like FC/iSCSI in Storage Environment. Asymmetric accessibility of this Logic Unit is called ALUA
LUN is well understood but “Asymmetrical” at the beginning makes it sound little complicated.
So let’s understand the meaning of Asymmetric first before digging into ALUA.
WHAT IS ASYMMETRIC
As per Wikipedia “Asymmetric means two sides which don’t match”. In Storage environment, it means “All the Paths available to LUNs from Host doesn’t necessarily need to have equal access or equal characteristics”. One port of Storage Array might have different characteristics than other port of same Storage Array.
So next question comes in mind what are these Storage Characteristics?
WHAT IS THE STORAGE CHARACTERISTICS?
In Storage world, it’s not necessary that each paths will have equal access to LUN, equal Bandwidth or same Latency. They might differ from each other depending on the environment.
For ex. One Host having access to LUN via controller owning that LUN will respond faster to IO request than Host having access to same LUN via controller which doesn’t own that LUN…. So in such scenario, path characteristics is different for both the hosts for same LUN.
Another example, each path can have different Bandwidth and latency characteristics. Path having more bandwidth and less latency will perform better than low bandwidth and high latency path.
Now Let’s get back to ALUA and understand why do we need it?
Like Multiport Initiator, Storage Array also have multiple ports in single Controller. Pure Active/Active Storage Array expose all these multiple ports to Host which means, Host can have access to LUN through any of the Storage port available on Active/Active Array.
But Active/Active Storage doesn’t inform Host Which Ports Are Optimized Port (Direct Access to LUN) and which ports are Non-Optimized Port (Path which doesn’t have direct access to LUN). As a result, Host Forward IOs to any of the port available without understanding Path Optimization which might affect Host Performance or Storage IO Performance.
If host would be aware about Path Optimality, then more precise decision could be taken to improve host performance.
That’s the reason, this problem leads to development of ALUA also known as Asymmetric Logical Unit Access.
WHAT IS ALUA
ALUA is type of storage device that is capable of servicing IO to given LUN on two different Storage Processors but in an uneven manner.
ALUA is also known as Asymmetric Active/Active Arrays.
Active/Active -> Both the Controller ports receives IO Commands to LUN
Asymmetric –> Only one controller which is owning the LUN can issues IO to that LUN.
In ALUA, IO to a given LUN can be sent to all available ports of Storage Controllers but IO can only be processed by Controller owning that LUN. That controller also known as Preferred Controller (Managed Controller).
All the Paths to LUN via ports of the owning controller known as Active Optimized Path.
All the Paths to LUN via ports of the Non-Preferred Controller known as Non-Active Optimized Path.
HOW ALUA ENABLED ARRAY IS DIFFERENT FROM ACTIVE PASSIVE ARRAY:
In Active/Passive Array, IO can be only being sent to Controller owning that LUN. If the IO request is received on Non-Owning controller port, then a SCSI ERROR like “ILLEGAL REQUEST “is returned to initiator which means in simple words “No Entry” or “No, you can’t do that”.
But in ALUA enabled Array, even though IO received at Non-Owning Controller, it doesn’t throw any SCSI error and re-direct IO request to Owning Controller via backend channel. This IO redirection improvised Host IO or overall system performance.
HOW ALUA ENABLED Asymmetric Active/Active ARRAY IS DIFFERENT FROM Symmetric ACTIVE/ACTIVE ARRAY:
In Symmetric Active/Active Array, IO can be received and processed by both the controllers but these kind of array doesn’t inform Host about Path characteristics like Bandwidth, Latency, paths claimed by Owner controller, Paths claimed by non-owner controller etc. As a result, Host consider each path equally during load balancing and Failure scenarios.
In Asymmetric Active/Active Array, IO can be received by both the controllers but IO can only be issues by Owning Controller. So Its very important for Host to know which paths are belonging to Owning and Non-Owning Controller. Based on that information it can take precise and more intelligent decision during load balancing and path failures to improvise Host performance. This Path information like Active Optimized/Active NonOptimized information is provided by ALUA capability of that Array.
I hope you have found this article useful and informative.
Please do share your feedback and feel free to post your queries.