Thin provisioning allows space to be allocated to an application without it being physically mapped on the storage system until it is actually used. Thin provisioning also decouples the logical provisioning of storage to an application from the physical addition of storage capacity to the storage system.
For example, given 30 TiB of physical storage, you can create an HDP pool with 80 TiB of DP-Vols and create an 80 TiB NAS storage pool on those DP-Vols. None of the available space is allocated until you create and expand file systems. Because only 30 TiB of real space is available, the NAS server will not create more than 30 TiB of file systems in the storage pool. If you later add more parity groups or pool volumes to the HDP pool, you can expand the file systems in the storage pool beyond 30 TiB without creating additional DP-Vols or expanding the NAS storage pool.
The ability to expand file systems instead of the storage pool is advantageous because it enhances performance by spreading the storage chunks used to expand a file system across all the SDs and physical disks in the DP pool. In contrast, a storage pool expansion limits performance by restricting the individual chunks to a small number of SDs and physical disks.
The NAS server reads the real space available in a DP pool. When you create or expand a file system, the NAS server checks for available space, then pre-allocates the space needed for that operation. If the DP pool has too little free space for the operation to complete successfully, the NAS server safely aborts the creation or expansion of the file system.
Every new storage pool should use a single stripeset that resides on a thinly provisioned HDP pool. This way, storage can be expanded in small increments without loss of performance, and all I/O will use all DP-Vols (and all their queue depth) and all physical storage media. For more about queue depth, see the sd-queue-depth man page. To use a single stripeset, follow the instructions below.
The process is as follows:
- When provisioning a new NAS server storage pool, use just enough real disk space to meet your immediate needs for performance and capacity.
- Place all your parity groups into a single HDP pool, then create DP-Vols whose total capacity roughly meets your expected needs for the next 18 to 24 months.
NoteIt does not matter if you over-estimate or under-estimate your capacity needs, because you can easily expand the storage pool beyond the total capacity of the original DP-Vols by adding another set of DP-Vols.
- Create a NAS server storage pool on these DP-Vols, placing all the DP-Vols into a single stripeset.
Use enough DP-Vols to provide adequate queue depth in the future, after you have added enough parity groups to match the total capacity of the DP-Vols. Four DP-Vols is the bare minimum, but eight DP-Vols will provide better performance than four, and sixteen DP-Vols will be faster than 8 DP-Vols. In practice, a storage pool usually contains an even number of DP-Vols, and the capacity of each DP-Vol is 8 TiB.NoteIf using the CLI span-create command, list all the SDs in the initial span-create command. Do not run a single span-create command, then a series of span-expand commands.NoteWhen using an application to create a storage pool, specify all the available SDs when creating the storage pool; do not create a single storage pool on a subset of the available SDs, then expand that storage pool onto the rest of the available SDs.
If there are more than 32 available DP-Vols, create the minimum possible number of NAS server stripesets consistent with making all stripesets identical, even if this means creating slightly more or slightly fewer DP-Vols than would otherwise have been created. For example, if you initially estimate that, in two years, you will need 50 8 TiB DP-Vols, you should now create 48 DP-Vols and make 2 stripesets of 24 DP-Vols each.
- To expand the NAS server storage pool beyond the total capacity of the original DP-Vols, simply add another, identical set of DP-Vols (refer to the span-expand man page for more information).