IBM Cloud Docs
Block Storage for VPC profiles

Block Storage for VPC profiles

When you provision Block Storage for VPC volumes by using the IBM Cloud console, CLI, API, or Terraform you specify an IOPS profile that best meets your storage requirements. Profiles are generally available as three predefined IOPS levels or with custom IOPS. IOPS tiers provide reliable IOPS/GB performance for volumes up to 16,000 GB capacity. You can also specify a custom IOPS profile and define volume capacity and IOPS within a range.

Block Storage profiles overview

When you create a Block Storage volume, you can select between custom and tiered-IOPS profiles. All these profiles are backed by solid-state drives (SSDs). The following table shows the available storage profiles.

Table 1. Block Storage profiles and performance levels.
Profile family Profile name IOPS1 IOPS per volume Max throughput2 Volume size
tiered general-purpose 3 IOPS/GB 3,000 - 48,000 670 MB/s 10 GB - 16,000 GB
tiered 5iops-tier 5 IOPS/GB 3,000 - 48,000 768 MB/s 10 GB - 9,600 GB
tiered 10iops-tier 10 IOPS/GB 3,000 - 48,000 1024 MB/s 10 GB - 4,800 GB
custom custom 1 - 100 IOPS/GB 100 - 48,000 1024 MB/s 10 GB - 16,000 GB

1 IOPS values are based on 16k IO size.

2 Baseline throughput is determined by the number of IOPS multiplied by the throughput multiplier. The throughput multiplier is 16 KB for 3 IOPS/GB or 5 IOPS/GB tiers, or 256 KB for 10 IOPS/GB or custom IOPS tiers. The higher the IOPS that you specify, the higher the throughput. Maximum throughput is 1024 MBps.

The application I/O size directly impacts storage performance. If the application I/O size is smaller than the throughput multiplier that is used by the profile to calculate the volume’s bandwidth limit, the IOPS limit is reached before the throughput limit. Conversely, if the application I/O size is larger, the throughput limit is reached before the IOPS limit.

For more information, see How block size affects performance.

In this documentation, we refer to storage capacity by using the unit GB (Gigabytes) to align with the industry standard terminology. However, the actual provisioning and billing of storage are based on GiB (Gibibytes).

The difference between GB and GiB lies in their numerical representation:

  • GB (Gigabyte) is a decimal unit, where 1 GB equals 1,000,000,000 bytes
  • GiB (Gibibyte), is a binary unit, where 1 GiB equals 1,073,741,824 bytes

To ensure transparency, please note that your provisioned storage and associated charges are calculated based on GiB. Rest assured that you receive the exact amount of storage you expect and are billed accurately for the GiB you use. For more information, see the FAQs.

Moving volumes across volume-profiles that belong to different families is not allowed.

IOPS tiers

When you create your storage volume, you can select from three predefined IOPS tiers. Choose the profile that provides optimal performance for your Compute workloads. Table 2 describes the IOPS performance that you can expect for each tier.

Table 2. IOPS tier profiles and performance levels for each tier
Name Purpose IOPS rate Capacity range (GB) Min IOPS Max IOPS IO Size
general-purpose Workloads that host small databases for web applications or store virtual machine disk images for a hypervisor. 3 IOPS/GB 10 - 16,000 3,000 - 48,000 16 KB
5iops-tier High I/O intensity workloads - Workloads characterized by a large percentage of active data, such as transactional and other performance-sensitive databases. 5 IOPS/GB 10 - 9,600 3,000 - 48,000 16 KB
10iops-tier Demanding storage workloads - Data intensive workloads created by NoSQL databases, data processing for video, machine learning, and analytics. Bandwidth limits are calculated by using a 256 KB block size. 10 IOPS/GB 10 - 4,800 3,000 - 48,000 256 KB

Max IOPS for all tiered profiles starts at 3,000 IOPS. Max IOPS then increases, based on the storage tier and volume size, up to the Max IOPS in Table 2.

Custom IOPS profiles

Custom IOPS is a good option when you have well-defined performance requirements that do not fall within a predefined IOPS tier. You can customize the IOPS by specifying the total IOPS for the volume within the range for its volume size. You can provision volumes with IOPS performance from 100 IOPS to 48,000 IOPS, based on volume size.

The following table shows the available IOPS ranges based on volume capacity for the custom profile.

Table 3. Available IOPS based on volume size
Volume size (GB) IOPS range
10 -39 100 - 1,000
40 - 79 100 - 2,000
80 - 99 100 - 4,000
100 - 499 100 - 6,000
500 - 999 100 - 10,000
1,000 - 1,999 100 - 20,000
2,000 - 3,999 200 - 40,000
4,000 - 7,999 300 - 40,000
8,000 - 9,999 500 - 48,000
10,000 - 16,000 1,000- 48,000

Profiles and boot volumes

By default, boot volumes are created based on the general-purpose IOPS profile with 100 GB capacity during instance provisioning. Boot volume capacity can be increased by modifying the boot volume, up to 250 GB.

How virtual server profiles relate to storage profiles

Virtual server profiles are a combination of vCPU and RAM that can be instantiated quickly to start a virtual server instance. Select from three families of profiles based on your workload requirements. These requirements can range from common workloads to CPU-intensive or memory-intensive workloads.

Similarly, storage profiles (IOPS tiers or custom) provide a range of capacity and performance for secondary volumes. By default, a 100 GB primary boot volume is created when you create a virtual server instance. You can also create and attach secondary volumes. When you create a secondary data volume as part of instance creation, you select a storage profile that best meets your storage requirements for your Compute workloads. In general, as your Compute requirements increase, you need higher IOPS performance. Table 3 shows this relationship.

Table 4. Relationship of Block Storage profiles to virtual server profiles
IOPS tier storage profile Virtual server profile
3 IOPS/GB Balanced for common workloads.
5 IOPS/GB Compute for intensive CPU demands.
10 IOPS/GB Memory for memory-intensive workloads.

Viewing available IOPS profiles

You can view available IOPS profiles the IBM Cloud UI, CLI, API, or Terraform.

In the UI

When you create a Block Storage volume from the IBM Cloud console, select Tiers.

Alternately, select Custom and then select an IOPS value within the range for that volume size. Click the storage size link to see a table of size and IOPS ranges.

From the CLI

To view the list of available profiles by using the CLI, run the following command:

ibmcloud is volume-profiles
$ ibmcloud is volume-profiles
Listing volume profiles in region us-east under account TEST as user test.user@ibm.com...
Name              Family   
general-purpose   tiered   
5iops-tier        tiered   
10iops-tier       tiered   
custom            custom 

To view details of the profile, run the ibmcloud is volume-profile command with the name of the profile that you are interested in seeing.

The following example shows the details of the 10iops-tier.

$ ibmcloud is volume-profile 10iops-tier
Getting volume profile 10iops-tier under account Test Account as user test.user@ibm.com...
                                          
Name                                   10iops-tier   
Family                                 tiered   
Adjustable IOPS                        false   
Boot capacity                          Max   Min      
                                       250   10      
                                          
Capacity                               Max    Min   Default   Step      
                                       4800   10    10        1      
                                          
IOPS                                   Max    Min   Default   Step      
                                       48000  10    10        1      
                                          
Unattached capacity update supported   false   
Unattached iops update supported       false  

For more information about available command options, see ibmcloud is volume-profile.

With the API

To see the available profiles, make a GET /volume/profiles call.

curl -X GET \
$vpc_api_endpoint/v1/volume/profiles?$api_version&generation=2 \
-H "Authorization: $iam_token"

To see details of a specific profile, make a GET /volume/profile request and specify the name of the profile.

curl -X GET "https://us-south.iaas.cloud.ibm.com/v1/volume/profiles/custom?version=2023-07-24&generation=2"\
 -H "Authorization: $iam_token"

With Terraform

  1. To use Terraform, download the Terraform CLI and configure the IBM Cloud® Provider plug-in. For more information, see Getting started with Terraform.

  2. VPC infrastructure services use a region-specific endpoint, which targets to us-south by default. If your VPC is created in another region, make sure to target the appropriate region in the provider block in the provider.tf file. See the following example of targeting a region other than the default us-south.

    provider "ibm" {
       region = "eu-de"
    }
    
  3. Import the list of available volume profiles as a read-only data source.

    data "ibm_is_volume_profiles" "example" {
    }
    

    For more information, see ibm_is_volume_profile.

Next Steps

To expand volume capacity, see expanding Block Storage volume capacity.

To change the IOPS tier or Custom IOPS for an existing volume that is attached to a virtual server instance.

For more information about Balanced, Compute, and Memory profiles for Virtual Servers for VPC, see Profiles.