I have storage that allows me to thin provision my volumes presented to the clients. Is this safe? What are the best practices?
We're looking for long answers that provide some explanation and context. Don't just give a one-line answer; explain why your answer is right, ideally with citations. Answers that don't include explanations may be removed.
Generically, whether you're talking about SCSI LUNs (SAN) or network file systems (NAS), thin provisioned storage is when you tell the storage client that it has more space than you've actually allocated to it. This has no risks on its own, but if you don't have enough actual storage to allow every single container to grow to the full promised size, that's called overprovisioning and it entails risk.
The advantages of overprovisioning and thin provisioning are compelling. Many consumers of storage (servers, file share users, etc.) will request far more storage than they initially need, and continue to ensure they have a safe margin for growth as they grow. A centrally provisioned safe margin for growth is far more efficient than hundreds of small ones. The utilization of the underlying storage without thin/overprovisioning can be very low, and this allows a higher rate of utilization.
All the risks of this scenario are linked with overprovisioning. The more you overprovision, the higher your risk. The danger is the potential for the utilization of storage resources to completely fill the available storage, which will generally cause all the storage containers to fail in one way or another. Filesystems will go read only or offline and LUNs will go offline.
In order to get the benefits of higher utilization that come with overprovisioning while mitigating the risk, you need to constantly monitor the storage and be able to take action when required.
The point and purpose of thin provisioning is similar to the reason to use a consolidated storage in the first place - by consolidating, you get a better peak capacity, with a lower average needed.
But be under no illusions - thin provisioning is pretending to allocate something, without actually doing so. There are many reasons this is useful. Two key ones being:
You have two gotchas arising from this though:
Things I would suggest as a best practices for thin provisioning:
I can't overstate that last point enough. You may well have customers who ask for storage and never use it. That's money you didn't spend and represents a saving. However, that's not the same as the customers who take a while to use it (e.g. more than a financial year) - you save money by buying bigger/cheaper disks next year. But you DON'T get away with 'selling' the space up front and just hoping that no one ever uses it. You may well end up filling up the whole lot over time, and you need to be ready to back fill.