Setting IOPS and bandwidth limits

You can specify IOPS and bandwidth limits relative to the size of the block device. These limits can be set for templates, volumes, and snapshots using the iops, bw, and limitType parameters on the command line.

About

The main use case is the ability to provide limited services on a single storage pool. For example, for providing faster and slower storage tiers on a flash-only underlying storage without the need for actual hard drives in a cluster.

Having such limits is a common feature of cloud deployments, which provides better-matched resources to customers. Having the limits implemented in StorPool reduces the complexity of the implementations of this feature in the different orchestration systems.

When a new volume is created or when its size changes, the storage system takes the limits into account and (re)configures the overall limits of the volume to match the values set per GiB .

The limits are implemented as multipliers to the size of the volume in GiB.

Examples

For example, a new template called tier3 could be configured with a fractional limit for IOPS and bandwidth:

# storpool template tier3 placeAll hdd placeTail ssd replication 3 iops 1.5 bw 0.12M limitType perGiB
OK
# storpool template list
-----------------------------------------------------------------------------------------------------
| template |   size  | rdnd. | placeHead | placeAll | placeTail | iops  |     bw   | parent | flags |
-----------------------------------------------------------------------------------------------------
| hybrid   | 128 GiB |     3 | hdd       | hdd      | ssd       |     - |        - |        |       |
| tier3    |       - |     3 | hdd       | hdd      | ssd       |   1.5 |  123 KiB |        |  G    |
-----------------------------------------------------------------------------------------------------

Flags:
R - allow placing two disks within a replication chain onto the same server
G - limits are per GiB, actual limits will be visualized for each volume/snapshot depending on its size

A 1TiB volume will end up with an IOPS and bandwidth limits like this:

# storpool volume data size 1T template tier3
OK

# storpool volume list
---------------------------------------------------------------------------------------------------------------------
| volume |    size  | rdnd. | placeHead | placeAll | placeTail | iops  |    bw   | parent | template | flags | tags |
---------------------------------------------------------------------------------------------------------------------
| data   |  1.0 TiB |     3 | hdd       | hdd      | ssd       |  1536 | 123 MiB |        | tier3    |   G   |      |
---------------------------------------------------------------------------------------------------------------------

Flags:
R - allow placing two disks within a replication chain onto the same server
t - volume move target. Waiting for the move to finish
G - IOPS and bandwidth limits are per GiB and depend on volume/snapshot size

More information

For details about the iops, bw, and limitType parameters used for setting limits on the command line, see 12.10.  Volumes, 12.11.  Snapshots, and 12.14.  Templates.

This functionality is available starting with the 19.4 revision 19.01.2686.1f4cf6e1d release.