Storage provisioning is the means of presenting storage from a storage array to a server. While presenting storage, sometimes it so happens that we present storage in bulk to a server, but the server wouldn't make use of the storage effectively. This leads to the wastage of storage space that remains unused by the server. This is what happens typically in a thickly provisioned storage.
To prevent this fallback, whenever a certain amount of storage space is requested by a server, so much space is presented to the server, but all this space is not allocated to the server at once. Only 12 tracks are allocated initially and the remainder gets allocated gradually as and when the server starts generating data. And this entire storage is in a pool and all the servers that are seeing the thin devices which are "bound" to a particular pool would share this entire pool of storage and allocation happens on a first come first serve basis.
While thin provisioning is handy with regard to efficient capacity management, it has a disadvantage in it that, if the pool runs out of capacity because multiple servers start generating high number of writes at the same time, then there can be a risk of some servers not getting sufficient space for committing their writes, unless the storage administrator efficiently monitors and manages the thin pools and has spare non-pooled data devices to add to the pool in a capacity crunch situation.
To prevent this problem, if there is a critical server which should not ever face space crunch, there is a concept called pre-allocation of storage, wherein, if the server looks for a storage space of 1TB, even if we are provisioning "THIN", we would still be presenting the entire 1 TB in a non-shared model, so the critical server gets its share of 1TB dedicated.
Hope this amount of information helps to start with, feel free to keep this thread going, if there are any further queries.