You probably know what LVM is: is Linux's Logical Volume Manager. Its role is to give you a flexible partition scheme for your ever-increasing disk space: while standard partition (MBR or GTP style) are semi-static entries (they can be quite tricky to resize), expanding a LVM based partition is a much nicer experience.
However, while LVM's dynamic nature is a much appreciated feature, in complex situations you can find normal LVM volumes not flexible enough.
Some prime examples:
– you have many (tens?) volumes with not-so-precise storage requirements. In this case, you will probably end with too large volumes, wasting useful space
– your storage requirement for a volume decreases drastically and your filesystem does not support shrinking (anyone said XFS?). If that happens, you had the choice between leaving the volume/filesystem as-is, or going the always-painful route of a complete backup/restore (on a smaller volume). Also note that even with filesystem with shrinking support (eg: EXT4), such operation can be time-consuming and somewhat risky;
– you want to over-provide your storage, pretending to have a disk space you simply don't have. If you think this is a silly scenario, please think twice: CPU and memory resources are already over-committed, and disk over-commit is the next natural stop. Also think to the myriads of cloud-based virtual machines and storage services: do you really think that OneDrive reserve for you, and only for you, 15 GB of space for free? Of curse not: they have a large storage pool where space is dynamically allocated, and if you only use 1 MB of your 15 GB cap, they only reserve you this single MB.
You can object that these very problems can be solved at filesystem level, and you have a very compelling point: newer filesystems integrate many advanced functions (pool management, snapshots, CoW, etc), with ZFS and BTRFS being prime examples. However, there are cases when you need a fully supported and trusted Linux filesystem (read: ext4 or xfs) and, at the same time, you need to cope successfully with the scenarios explained above. Or you need to export raw volumes for specific uses (eg: virtual machines).
How can you adapt your beloved-and-trusted system to the ever-increasing and dynamic workloads you throw at it? Let me introduce you LVM Thin Volumes.