What is a pool
The pool is a logical unit that provisions capacity to datasets.
The pool maintains capacity properties that apply to all of the datasets (volumes, filesystems and their snapshots) that belong to the pool. A dataset cannot be created outside a pool.
Pools control the way the InfiniBox capacity is used by imposing quotas of physical capacity and virtual capacity, and a set of rules that determine what happens when the capacity is depleted. The storage admin creates pools with different capacity quotas and other properties and allocates them to the applications that InfiniBox serves. These applications are mapped to volumes or file systems, where any volume or filesystem in InfiniBox belongs only to one pool, thus, it conforms to a specific capacity allocation. The volume or filesystem can move between pools with their snapshots and optionally with their capacity (see further along this article).
Changes to the pool’s capacity properties consist of metadata transactions and do not entail copying data. Thus, there are instantaneus and do not affect the system’s performance.
The pool functionality
The pool manages a group of volumes and filesystems along their snapshots, offering the following key benefits:
- Improved capacity management – specific volumes and/or filesystems that serve a specific application or a group of applications can be grouped within a pool and have their capacity managed together
- Improved capacity regulation – the behavior in a case of capacity depletion takes place on the pool level, thus limiting the available capacity and determining whether and how the volumes keep serving read and write requestes, applies to all of the volumes and filesystems within the pool
The pool capacity
The pool has two capacity counters: physical and virtual. Physical capacity is allocated prior to the capacity consumption. Contrary to that, virtual capacity allocated capacity as-you-go, using physical capacity only if it is needed and when it is needed.
The ability to allocate virtual capacity only when it is needed allows the pool’s virtual capacity to be larger than the pool’s physical capacity. As the pool physical capacity and virtual capacity are defined independently, the virtual capacity can also be smaller than the physical capacity, or identical to the physical capacity.
InfiniBox specifies virtual capacity at the pool level. The pool datasets (volumes and filesystems) are attributed with a thin provisioning toggle. Thus, they can be either thinly provisioned, or not. If they are thinly provisioned, the virtual capacity that is available for them derives from the virtual capacity of the pool.
A pool's physical and virtual capacities can each be defined to be as large as the system capacity.
The system physical and virtual capacity
The system capacity is determined as follows:
- Physical capacity – the net physical capacity of the system is preconfigured per InfiniBox model
- Virtual capacity –
- Upon system inception – is defined to be identical to the system physical capacity
- Can be increased – by Infinidat personnel (contact Support for that)
- On InfiniBox software release 3.0 and up – the virtual capacity is 2.5 times the physical capacity
The maximum pool physical and virtual capacity is limited by the system-level capacity.
Provisioning capacity to pools uses the following definitions:
- Pool entities - Volumes, filesystems and their snapshots
- Pool physical capacity - The maximum usable net capacity that can be allocated to the pool entities.
- Pool virtual capacity - The limit on the size of all volume (thin and thick provisioned), excluding snapshots
- System physical capacity - The total physical capacity that can be allocated within a single system.
- System virtual capacity - The maximum system capacity that can be defined by pools. This capacity can be larger than the system physical capacity.
- System free virtual capacity - The system virtual capacity minus the sum of the pools virtual capacity.
- Pool allocated virtual space - The sum of all volumes (thick and thin, excluding snapshots). The allocated space cannot exceed the pool virtual capacity.
- The sum of the virtual size (thick and thin, excluding thin snapshots) - the allocated space cannot exceed the pool virtual capacity
- Pool allocated physical space - The sum of all thick volumes, plus the physical space consumed by all the thin volumes, and their snapshots. The used space cannot exceed the pool physical capacity.
- Pool free physical space - The defined pool physical capacity minus the allocated physical space.
- Pool free virtual space - The defined pool virtual capacity minus the allocated virtual space.
- Thick volume - Reserved-space volume. Virtual and Physical space allocation is done immediately as Thick Volume is created, at the amount of the volume size.
- Thin volume - Shared-space volume. Thin volumes consume physical space upon writes. The virtual space is allocated upon volume creation to the amount of the volume size. The initially allocated physical space is 0 (zero). In case of space depletion, no allocation is guaranteed for thin volumes.
- Reserved space - Automatically defined spare physical space for the pool, to support pool physical space depletion behavior.
- Emergency buffer - A policy for automatically extending of the pool physical capacity in the event of pool physical space depletion.
- Limited state - Upon further accepting writes, the pool enters a Limited state where no new volumes can be created, but the existing volumes can be written into.
- Locked state - If the pool can no longer expand, it enters a Locked state and its entities can no longer accept writes.
Pools and VMware Virtual Volumes
Storage administrators who want to use VMware Virtual Volumes (vVols) can use pools to define Storage Containers, which in turn can be mounted as vVols datastores on vSphere hosts. More information about vVols and storage containers can be found at InfiniBox and VMware Virtual Volumes.
A pool of type VVOLS is automatically designated as a vVols storage container, and will be available in vSphere for use as a vVols datastore.
Note: a vVols pool can contain only vVols.