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 a volume profile that best meets your storage requirements. Profiles are generally available as three predefined IOPS levels or with custom IOPS. The volume profiles from the tiered family provide reliable IOPS/GB performance for volumes up to 16,000 GB capacity. With a custom volume profile, you can specify your own IOPS value in a range that is appropriate for your selected volume capacity.
Customers with special access can provision storage with the new sdp
profile. The sdp
profile is available in the Dallas, Frankfurt, London, Madrid, Osaka, Sao Paulo, Sydney, Tokyo, Toronto, and Washington, DC regions
during the select availability release. For more information about this release, such as billing, supported features, and limitations, see About Block Storage for VPC.
Block Storage profile families
When you create a Block Storage volume, you can select from various profiles.
- Select a profile from the tiered profile family when you want to pick a profile where performance scales with capacity of the volume.
- Select the profile from the custom profile family if your performance requirements don't fall within any of the predefined IOPS tiers. When you select the custom profile, you can define your IOPS within a range that depends on the capacity that you specified.
- Select Availability The defined performance family profile provides even more flexibility when it comes to specifying capacity and IOPS. Volume profiles in the defined performance family can scale volume performance independent of capacity. By using the sdp profile, you can create a volume with up to 32 TB capacity and an IOPS value in a range of 100 - 64,000.
The custom and tiered profiles are available in every region for every customer. The sdp profile is available in the Dallas, Frankfurt, London, Madrid, Osaka, Sao Paulo, Sydney, Tokyo, Toronto, and Washington, DC regions during the select availability release for allow-listed customers.
The following table shows the available storage profiles with their different properties.
Family name | Profile name | Capacity range (GB) |
IOPS rate (IOPS/GB) |
IOPS range [1] (IOPS) |
Max throughput[2] |
---|---|---|---|---|---|
tiered | general-purpose |
10 - 16,000 | 3 | 3,000 - 48,000 | 670 MBps (5360 Mbps) |
tiered | 5iops-tier |
10 - 9,600 | 5 | 3,000 - 48,000 | 768 MBps (6144 Mbps) |
tiered | 10iops-tier |
10 - 4,800 | 10 | 3,000 - 48,000 | 1024 MBps (8192 Mbps) |
custom | custom |
10 - 16,000 | 10 - 100 | 100 - 48,000[3] | 1024 MBps (8192 Mbps) |
defined performance | sdp |
1 - 32,000 | 100 - 64K | 100 - 64,000[4] | 1024 MBps (8192 Mbps) |
Nominal IOPS values are based on 16k I/O size. The maximum throughput value 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 the volume can handle.
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 I/O size affects performance.
Moving volumes across volume-profiles that belong to different families is not allowed.
Tiered volume profiles
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.
Intended workload | Capacity range (GB) | IOPS rate (IOPS/GB) | IOPS range | Throughput multiplier (KB) |
---|---|---|---|---|
general-purpose - Workloads that host small databases for web applications or store virtual machine disk images for a hypervisor. |
10 - 16,000 | 3 IOPS/GB | 3,000 - 48,000 | 16 |
5iops-tier - High I/O intensity workloads - Workloads characterized by a large percentage of active data, such as transactional and other performance-sensitive databases. |
10 - 9,600 | 5 IOPS/GB | 3,000 - 48,000 | 16 |
10iops-tier - Demanding storage workloads - Data intensive workloads created by NoSQL databases, data processing for video, machine learning, and analytics. |
10 - 4,800 | 10 IOPS/GB | 3,000 - 48,000 | 256 |
Max IOPS for all volume profiles from the tiered family 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. While you can't customize the IOPS value of a volume with a tiered profile, you can change the volume to another tiered profile and adjust the IOPS that way.
Custom volume profile
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.
Intended workload | Capacity range (GB) | IOPS range | Throughput multiplier (KB) |
---|---|---|---|
Custom | 10 - 39 | 100 - 1,000 | 256 |
40 - 79 | 100 - 2,000 | 256 | |
80 - 99 | 100 - 4,000 | 256 | |
100 - 499 | 100 - 6,000 | 256 | |
500 - 999 | 100 - 10,000 | 256 | |
1,000 - 1,999 | 100 - 20,000 | 256 | |
2,000 - 3,999 | 200 - 40,000 | 256 | |
4,000 - 7,999 | 300 - 40,000 | 256 | |
8,000 - 9,999 | 500 - 48,000 | 256 | |
10,000 - 16,000 | 1,000 - 48,000 | 256 |
If your application needs more IOPS and throughput, you can increase the volume size and specify a new IOPS value in a higher range. Capacity and IOPS can be modified only when the volume is attached to a running instance.
SSD defined performance profile
The SSD defined performance (sdp
) profile is a second-generation volume profile that offers more flexibility than the previous custom profile when it comes to specifying capacity and performance. By using the sdp
profile, you can specify the capacity, and the maximum throughput limit. Volume size can range from 1 - 32,000 GB. You can specify volume performance in the range of 3000 - 64,000 IOPS. In addition, you can also specify the maximum throughput
value of your volume. The available throughput range is 125-1024 MBps (1000-8192 Mbps). The following table shows the minimum and maximum values of IOPS and Throughput in relation to the volume capacity.
Capacity range (GB) | Min IOPS | Max IOPS | Min Throughput (mbps) | Max Throughput (mbps) |
---|---|---|---|---|
1 - 20 | 3000 | 3000 | 1000 | 1000 |
21 - 50 | 3000 | 5000 | 1000 | 4096 |
51 - 80 | 3000 | 20000 | 1000 | 6144 |
81 - 100 | 3000 | 30000 | 1000 | 8192 |
101 - 130 | 3000 | 45000 | 1000 | 8192 |
131 - 150 | 3000 | 60000 | 1000 | 8192 |
151 - 32000 | 3000 | 64000 | 1000 | 8192 |
To achieve more than 48,000 IOPS, the volume must be attached to a virtual server instance with a 3rd generation instance profile. The new generation features virtual server profile families that are hosted exclusively on Intel 4th Generation Xeon Scalable processors to provide the most powerful and performant profiles available.
Certain volume operations such as increasing capacity, adjusting IOPS, and adjusting throughput can be done on an sdp
volume even if the volume is not attached to a running instance. For more information about the allow-listed
select availability release, such as billing, supported features, and limitations, see About Block Storage for VPC.
Profiles for boot volumes
By default, boot volumes are created with the general-purpose
volume profile with 100 GB capacity during instance provisioning. Boot volume capacity can be increased by modifying
the boot volume, up to 250 GB. Boot volume IOPS and bandwidth are never reduced to be less than 3000 IOPS or 393 Mbps.
You can use the console, the CLI, or the API to create boot volumes with the sdp
profile up to 250-GB capacity, and specify 3000 or more IOPS for better performance. It's also possible to increase the size of the sdp
profile-based boot volume to 32 TB after it is provisioned. However, when the boot volume capacity is increased over 250 GB, you can no longer create a custom image from that volume.
How virtual server profiles relate to volume 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 instance profiles based on your workload requirements. These requirements can range from common workloads to CPU-intensive or memory-intensive workloads.
Similarly, volume profiles 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 data volume as part of instance creation, you can select a volume profile that best meets your storage requirements for your Compute workloads. In general, as your Compute requirements increase, you need higher IOPS performance. Table 4 shows this relationship.
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. |
Storage capacity
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.
Viewing available volume profiles
You can view available volume profiles by using the IBM Cloud UI, CLI, API, or Terraform.
In the console
Customers with special access can create Block Storage volumes with the sdp
profile.
As an allow-listed customer, you can see a list of all the available profiles, such as the three tiered
, the custom
, and the new sdp
profile. When you select one of the tiered profiles, you need to specify
the capacity. When you select the custom profile, you need to specify the capacity and an IOPS value that's in the applicable range for your capacity (Table 3). When you select the sdp
profile, you can
specify the capacity and IOPS without any capacity-based range restriction. You can also specify the maximum throughput limit for your volume.
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 Bandwidth(Mbps) default value Storage Generation
general-purpose tiered - 1
5iops-tier tiered - 1
10iops-tier tiered - 1
sdp defined_performance 1000 2
custom custom - 1
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
Storage Generation 1
The following example shows the details of the sdp
profile when you use the export IBMCLOUD_IS_FEATURE_VOLUME_ADJUSTABLE_CAPACITY_IOPS_STATES=true
command. When this feature flag is set to true
, the properties
Adjustable Capacity State
and Adjustable IOPS State
are displayed in the CLI response.
$ ibmcloud is volume-profile sdp
Getting volume profile sdp under account Test Account as user test.user@ibm.com...
Name sdp
Family defined_performance
Adjustable IOPS true
Boot capacity Max Min
32000 1
Capacity Max Min Default Step
32000 1 - 1
IOPS Max Min Default Step
64000 3000 3000 1
Bandwidth(Mbps) Max Min Default Step Value
8192 1000 1000 1 -
Storage Generation 2
Adjustable Bandwidth Supported true
Adjustable Capacity States attached, unattached
Adjustable IOPS State attached, unattached
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
request.
curl -X GET \
$vpc_api_endpoint/v1/volume/profiles?$api_version&generation=2 \
-H "Authorization: $iam_token"
For most accounts, the API responds with the fields name
, href
, family
. For accounts with special access to preview the defined performance profile, the response is enhanced to include the following fields:
boot_capacity
denotes the capacity values that are permissible for boot volumes for each profile. The returned value is a range with minimum and maximum values that are specified for each profile.- For
custom
andtiered
profiles, the range is 10 GB - 250 GB. - For the
sdp
profile, the range is 10 GB - 250 GB.
- For
capacity
denotes the capacity values that are permissible for data volumes for each profile. The returned value is a range with minimum and maximum values that are specified for each profile.- For
custom
andtiered
profiles, the range is 10 GB - 16 TB. - For the
sdp
profile, the range is 1 GB - 32 TB.
- For
iops
, this field denotes the achievable IOPS under each profile.- For the
tiered
profiles, this value is fixed: 3 IOPS/GB, 5 IOPS/GB, and 10 IOPS/GB. - For the
custom
profile, this value can range between 1 - 48,000. - For the
sdp
profile, this value can range between 1 - 64,000.
- For the
family
enum now has an extra value,defined_performance
, along with thetiered
andcustom
values that exist today.adjustable_capacity_states
indicates whether the capacity for the volume can be changed when the volume is not attached to a running virtual server instance. This field is informational. It describes the characteristics of the volume profile and cannot be changed.- For
custom
andtiered
profiles, this value isattached
. - For the
sdp
profile, this value isattached, unattached
.
- For
adjustable_iops_states
indicates whether the IOPS for the volume can be changed when the volume is not attached to a running virtual server instance. This field is informational. It describes the characteristics of the volume profile and cannot be changed.- For the
custom
profiles, this value isattached
. - For the
tiered
profiles, this value is empty because changes to IOPS are not supported in any state. If you want to change the IOPS value of a volume, you can change to anothertiered
profile. - For the
sdp
profile, this value isattached, unattached
.
- For the
adjustable_bandwidth_supported
indicates whether the provisioned bandwidth limit can be adjusted.- For the
custom
andtiered
profiles, this value isfalse
. - For the
sdp
profile, this value istrue
.
- For the
storage_generation
indicates which generation the profile family belongs to.- For the
custom
andtiered
profiles, this value is1
. - For the
sdp
profile, this value is2
.
- For the
The new profile is listed as sdp
. To see details of this profile, make a GET /volume/profiles/sdp
request.
curl -X GET "https://us-south.iaas.cloud.ibm.com/v1/volume/profiles/sdp?version=2024-09-24&generation=2"\
-H "Authorization: $iam_token"
A successful response looks like the following example.
{
"boot_capacity": {
"max": 32000,
"min": 1,
"type": "dependent_range"
},
"capacity": {
"default": 1,
"max": 32000,
"min": 1,
"step": 1,
"type": "range"
},
"family": "defined_performance",
"href": "https://us-south.iaas.cloud.ibm.com/v1/volume/profiles/sdp",
"iops": {
"default": 100,
"max": 64000,
"min": 100,
"step": 1,
"type": "range"
},
"name": "sdp",
"adjustable_capacity_states": {
"type": "fixed",
"value": "attached, unattached"
},
"adjustable_iops_states": {
"type": "fixed",
"value": "attached, unattached"
},
"adjustable_bandwidth_supported": true,
"max_throughput": 8192,
"max_bandwidth_mbps": 8192,
"min_bandwidth_mbps": 1000,
"default_bandwidth_mbps": 1000,
"storage_generation": 2
}
For more information about this method, see the API reference for listing all volume profiles and retrieving a volume profile.
With Terraform
-
To use Terraform, download the Terraform CLI and configure the IBM Cloud® Provider plug-in. For more information, see Getting started with Terraform.
-
VPC infrastructure services use a specific regional 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 theprovider.tf
file. See the following example of targeting a region other than the defaultus-south
.provider "ibm" { region = "eu-de" }
-
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
For more information about the pricing of the volume profiles, see the FAQs.
For more information about how to expand volume capacity, see expanding Block Storage volume capacity.
For more information about how to change the IOPS tier or Custom IOPS for an existing volume, see Adjusting IOPS of a Block Storage for VPC volume.
For more information about Balanced, Compute, and Memory profiles for Virtual Servers for VPC, see x86-64 instance profiles.
-
The provisioned IOPS values are based on a preset 16k I/O size. ↩︎
-
Max throughput is determined by the number of IOPS multiplied by the preset throughput multiplier. The throughput multiplier is 16 KB for 3 IOPS/GB or 5 IOPS/GB tiers. The throughput multiplier for the 10 IOPS/GB tier and the custom profile is 256 KB. The higher the IOPS that you specify, the higher the throughput limit becomes. ↩︎
-
The available IOPS range is dependent on the volume capacity. For more information, see Table 3. ↩︎
-
The IOPS value is independent of the volume capacity. ↩︎