Willie Meyer – 28 November 2013
What is the correct LUN size that will suit my application best? In the field we come across this question more often than you would think. There is no “right” or “wrong” answer. You need to do what is the best fit for your solution. I have some best practice guidelines that can assist you in determining the size that is “right” for your solution.
- Read the manual – a tremendous amount of hours are spent by people wearing lab coats and thick glasses to write the Best Practice Guidelines for your Enterprise Application.
- Ask, ask, ask….someone out there in the World Wide Web already asked the same questions and already spent hours to figure it out.
- What is the impact to my business if I were to lose one data LUN ? Losing a 500GB LUN hosting 3 virtualized hosts has a much smaller impact than losing a 4TB LUN hosting 20 VM hosts.
- Even more important: How long will it take me to recover my business if I were to lose one data LUN ? Simple answer…it takes much longer to restore 16TB than 1TB, doesn’t matter whether you are restoring from tape, disk or from your backups hosted in the Cloud.
- What is easier to manage ? Would you prefer to manage 100’s of LUNS or a handful of LUNS per host ?
You need to find the balance between risk, performance and ease of management.
Queue Depth and Performance
When you go to your bank, would you prefer to have 1 queue or 8 queues that can service customers all at the same time ? Let’s do the numbers.It takes 5 minutes to service a customer. I have 8 customers to provide a service to. With only 1 queue, it will take me 8 customers x 5 minutes = 40 minutes to service all the customer requests. To do the same amount of work with 8 queues, it will take me 5 minutes. a.k.a parallelism. The same logic can be applied to SAN Storage Arrays, Host Bus Adapters and to be more specific a tunable referred to as Queue Depth.
Queue Depth describes the number of I/O’s that can be queued per Host Bus Adapter to the Storage Controller per LUN. The number of LUNS assigned to the host, determines the number of queues available. On traditional storage systems we typically keep the Queue Depth numerical value between 8-32. A Queue Depth value of 8 implies that you will be able to queue 8 x I/O’s from the Host Bus Adapter to the Storage Controller Front End Port per LUN. Provided that your application can drive all the I/O in parallel, a high performance systems will deliver better performance with 8 x 500GB LUNS instead of 1 x big 4TB LUN. If we can drive enough I/O to keep all 8 LUNS busy, we can theoretically queue 64 IO’s to the storage contoller, instead of 8.
With all flash based arrays, we can now provide sub-millisecond response times. When using an all flash based array, you will typically see a Queue Depth setting of 256, because flash can respond so much faster to I/O requests than traditional mechanical disk subsystems.
One large LUN is not always a good idea and 100’s of small LUNS adds unnecessary complexity to manage. You need to find the balance in the middle of these opposite ends of the spectrum that meet your business needs in terms of risk, performance and ease of management.