When you’re creating a LUN for the very first time, you may not consider the future, but there’s an aspect to LUN sizing that can be very important further down the road. Getting this detail wrong means sometime in the distant (or not) future copying all your data from this LUN onto a new one. Think this one through.
When creating a LUN, there is an attribute of its configuration, its geometry, which is an indication of its sizing; the geometry is related to the mapping of physical disk objects, and is part of the SCSI protocol.
The important thing to consider is that the initial geometry creates a limitation on the maximum possible size to which the LUN may later be grown. This limit is 10x the original LUN size. If you start out with a 25GB LUN, this LUN cannot exceed 250GB when later being resized. The symptom you may observe is that no matter how large you make the containing volume, a LUN cannot be expanded in Snapdrive.
LUN geometry can be queried at any time via the NetApp CLI:
priv set diag lun geometry /vol/your_volume/your_lun (and when done, be sure to:) priv set
So in my case, we created a new LUN many years ago for a new product whose data was relatively tiny, and this fledgling application using this product was still quite young. Moving forward five years, this application now contains data from hundreds of clients, tens of thousands of users, and here I am hitting the 10x limit. In a real bind, I can’t increase my LUN size and the drive is filling up.
In the past, I’d gone through this growing pain with a SQL Logs volume; I spent 10 hours in the middle of the night xcopying data from the old, maxed out LUN, onto a new LUN whose initial size was pretty much the same (but of course it meant this new LUN could grow much larger, due to the larger initial LUN size, and therefore, differing geometry).
Some Googling revealed everyone having the same recommendation: “sorry, copy your data to a new LUN”. Snapmirror won’t work. ndmpcopy won’t work. The LUN’s geometry will be replicated along with the data itself, so forget it.
But, some expert Googling revealed this gem, a seemingly obscure NetApp KnowledgeBase article, that provided a hacky workaround for defeating the LUN geometry imposition.
The key command is one tucked away under the priveliged diag commands, and involves manually modifying the cylinder size, which forces a recalculation of the geometry for the LUN. I’m pleased to report that it works.
There was no application downtime required, there was no long filecopy process, and Snapdrive immediately saw the available headroom allowed for sizing up the LUN. Best of all, I got to eat dinner with my family that night.
One caveat, this will not work in Clustered DataONTAP, according to the article.