Adjusting IOPS of a Block Storage for VPC volume
For IBM® Cloud Block Storage for Virtual Private Cloud volumes that are attached to a running virtual server instance, you can increase or decrease IOPS to meet your performance needs. Adjust IOPS by specifying a different profile from the tiered family or a different IOPS value within a custom IOPS band. You can use the UI, the CLI, the API, or Terraform to adjust IOPS. You can adjust the volume's IOPS multiple times up to its maximum limit or reduce IOPS to its minimum limit. The IOPS adjustment causes no outage or lack of access to the storage.
For example, you might find that an application scaled such that a lower-tier storage profile is now a performance bottleneck. Instead of ordering a new volume and migrating your data, you can change the performance characteristics of the existing volume by increasing IOPS in the next performance tier.
In another scenario, you might want to initially set your storage at a higher 10 IOPS/GB performance level to expedite a data upload. After the upload completes, you can reset storage to 5 IOPS/GB for normal operations. Alternatively, you might want to increase your volume's IOPS during peak times for your application and decrease IOPS during off-peak hours.
With this feature, you can:
- Adjust IOPS up or down by selecting a different IOPS tier.
- Adjust IOPS within a custom IOPS band.
- Adjust IOPS without having to detach the volume from the virtual server instance.
The degree to which IOPS can be increased is determined by the maximum that is allowed by the volume's profile.
-
Tiered profiles: you can adjust IOPS for an IOPS tier based on volume size or select the next profile that allows for increased performance.
-
Custom volume profile: you can increase IOPS by specifying the next IOPS custom band. For example, for a volume 10 - 39 GB, you can increase custom IOPS to 1,000 IOPS. The IOPS range within a custom band is based on the volume size. If you later increase the size of a volume, you can increase the IOPS again.
You can monitor the progress of your volume's IOPS change from the UI or CLI. You can also check the Activity tracking events to verify that the IOPS were adjusted.
Billing for an updated volume is automatically updated. The prorated difference of the new price is added to the current billing cycle. The new full amount is then billed in the next billing cycle.
Limitations
The following limitations apply to this release.
General limitations
- Primary boot volume IOPS cannot be adjusted.
- To adjust IOPS, the volume must be attached to a virtual server instance that is powered on and running.
- To adjust IOPS, the volume must be in an available state.
- When a volume is in transition, the volume remains in an updating state until you reattach it to a running instance. For example, if the volume is detached while IOPS adjustment is in progress, the IOPS expansion resumes and completes only after the volume is reattached.
- When you delete an instance, volumes that are marked for auto-deletion are not deleted while the IOPS adjustment is underway.
Limitations that are related to volume profiles
- For a volume that was created with a profile from the tiered family, select a different profile for the volume size to increase or decrease IOPS. If the volume size exceeds the maximum of the new tiered profile, you can't change the profile.
- A custom volume profile can expand to the highest value that is allowed by the custom band. You can't switch custom bands unless you increase the volume size and move to a higher band.
- Custom IOPS can be adjusted multiple times until the maximum or minimum limit is reached.
- The maximum IOPS for a volume with a profile within the tiered or custom volume profile families is 48,000 IOPS.
Adjust IOPS in the console
Follow these steps to adjust IOPS by selecting a new IOPS tier or custom IOPS band:
-
Go to the list of Block Storage for VPC volumes. In the IBM Cloud console, click the Navigation menu icon > Infrastructure > Storage > Block Storage volumes. By default, Block Storage for VPC volumes display for all resource groups in your region.
-
In the list of all Block Storage for VPC volumes, click the name of the volume to see the volume details. The volume that you select must be attached to a virtual server instance. In the list of volumes, its attachment type is data.
Alternatively, go to the virtual server instance's details page and select the data volume that you want to adjust from the list of attached volumes.
-
On the volume details page, locate Profile and click the Edit icon or use the Actions menu , and select Edit IOPS profile. Volumes must be attached to a virtual server instance for these actions.
-
In the side panel, adjust IOPS as follows:
- For an IOPS tier, select a different tier from the menu. For example, you might have a 3 IOPS/GB general-purpose profile you're increasing to a 5 IOPS/GB profile.
- For a Custom IOPS, the current IOPS value is shown and volume size. Enter a new IOPS value in the range specified for that custom band.
-
Review the estimated monthly order summary for your geography and new pricing.
-
If you're satisfied, click Save and continue.
Your new IOPS allocation is realized when you restart the instance.
Adjust IOPS from the CLI
Before you begin
Before you can use the CLI, you must install the IBM Cloud CLI and the VPC CLI plug-in. For more information, see the CLI prerequisites.
- Log in to the IBM Cloud.
This command returns a URL and prompts for a passcode. Go to that URL in your browser and log in. If successful, you get a one-time passcode. Copy this passcode and paste it as a response on the prompt. After successful authentication, you are prompted to choose your account. If you have access to multiple accounts, select the account that you want to log in as. Respond to any remaining prompts to finish logging in.ibmcloud login --sso -a cloud.ibm.com
Adjust IOPS for a custom profile
From the CLI, use the ibmcloud is volume-update
command with the --iops
option to indicate the new IOPS size for a custom profile. The IOPS that you choose must be within the range for the size of the volume. For
more information, see the custom volume profile.
ibmcloud is volume-update VOLUME_ID --iops IOPS
This example shows an increase of IOPS from 100 IOPS to 3,000 IOPS for a 100 GB volume based on a 100 - 499 custom profile. The IOPS range for this custom band is 100 - 6,000 IOPS.
$ ibmcloud is volume-update 933c8781-f7f5-4a8f-8a2d-3bfc711788ee --iops 3000
Updating volume 933c8781-f7f5-4a8f-8a2d-3bfc711788ee under account Test Account as user test.user@ibm.com...
ID 0738-933c8781-f7f5-4a8f-8a2d-3bfc711788ee
Name demo-volume-update
Capacity 100
IOPs 3000
Profile custom
Encryption Key -
Encryption provider managed
Status available
Created 2021-08-23 10:09:28
Resource Group Default(c16d1edde3fd4a71a0130aed371405a0)
Zone us-south-2
Resource Group Default(c16d1edde3fd4a71a0130aed371405a0)
Volume Attachment Instance Reference Vdisk Name Vdisk ID Vdisk Type Auto Delete
Vdisk-data1 0738-fd146b1f-e1bb-4eab-ba78-3109e6bc3a2d data true
Instance Name Instance ID
vsi-test1 0738-8b56da93-7990-4ccf-9dc5-5aee6a5f08f9
Adjust IOPS by specifying a different IOPS tier profile
From the CLI, use the volume-update
command with the --profile
parameter and indicate the name or href of the IOPS tier profile.
This example changes a 3 IOPS/GB profile to a 5 IOPS/GB profile. In this case, the volume can't exceed 9,600 GB to move to the higher profile.
ibmcloud is volume-update {volume-id} --profile 5iops-tier
$ ibmcloud is volume-update demo-volume-update --profile 5iops-tier
Updating volume demo-volume-update under account Test Account as user test.user@ibm.com...
ID r014-dee9736d-08ee-4992-ba8d-3b64a4f0baac
Name demo-volume-update
CRN crn:v1:bluemix:public:is:us-east-1:a/a1234567::volume:r014-dee9736d-08ee-4992-ba8d-3b64a4f0baac
Status available
Attachment state attached
Capacity 100
IOPS 3000
Bandwidth(Mbps) 393
Profile 5iops-tier
Encryption key -
Encryption provider_managed
Resource group defaults
Created 2023-06-29T16:14:59+00:00
Zone us-east-1
Health State ok
Volume Attachment Instance Reference Attachment type Instance ID Instance name Auto delete Attachment ID Attachment name
data 0757_11f5db7f-35a1-4678-bcbd-c85204e09507 kj-test-ro false 0757-4dfc4384-c4b5-497e-bab3-6415f9c4d44b otp
Active true
Busy false
Tags -
For more information about available command options, see ibmcloud is volume-update
.
Adjust IOPS with the API
You can adjust IOPS for existing data volumes by calling the Virtual Private Cloud (VPC) API.
Adjust IOPS for a volume with the Custom profile
Make a PATCH /volumes
request and specify the iops
parameter to adjust the IOPS within a custom volume profile band.
You can't update the name of the volume and adjust IOPS in the same PATCH /volumes
request. Make two PATCH /volumes
requests.
This example shows an increase of 100 IOPS to 3,000 IOPS for a 100 GB volume based on a 100 - 499 custom profile. The IOPS range for this custom band is 100 - 6,000 IOPS.
curl -X PATCH \
"$vpc_api_endpoint/v1/volumes/$volume_id?version=2022-01-11&generation=2" \
-H "Authorization: $iam_token" \
-d '{
"iops": 3000
}'
The volume status shows updating
while the IOPS is being adjusted. The current IOPS is shown until you restart the instance. In this example, IOPS is increased from 100 to 3000 for the 3 IOPS/GB profile.
{
"iops": 100,
"created_at": "2022-01-11T09:46:43.000Z",
"crn": "crn:v1:bluemix:public:is:us-south-1:a/<Acc id>::volume:<Volume ID>",
.
.
.
"status": "updating",
.
.
.
}
When the IOPS expansion completes, restart the instance. The new value displays, and the volume status is available
.
{
"capacity": 250,
"created_at": "2022-01-11T09:46:43.000Z",
"crn": "crn:[...]",
"encryption": "provider_managed",
"href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/2d1bb5a8-40a8-447a-acf7-0eadc8aeb054",
"id": "2d1bb5a8-40a8-447a-acf7-0eadc8aeb054",
"iops": 3000,
"name": "my-volume-1",
"profile": {
"href": "https://us-south.iaas.cloud.ibm.com/v1/volume/profiles/custom",
"name": "custom"
},
"resource_group": {
"href": "https://resource-manager.bluemix.net/v1/resource_groups/83daf012-5920-4ba9-9689-cc0d2d2281fb",
"id": "83daf012-5920-4ba9-9689-cc0d2d2281fb",
"name": "Default"
},
"status": "available",
"volume_attachments": [{
"delete_volume_on_instance_delete": true,
"device": {
"id": "4cbb38bc-57d5-4121-a796-d5b10cf0810a"
},
"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/8f06378c-ed0e-481e-b98c-9a6dfbee1ed5/volume_attachments/4cbb38bc-57d5-4121-a796-d5b10cf0810a",
"id": "<4cbb38bc-57d5-4121-a796-d5b10cf0810aAttachment ID>",
"instance": {
"crn": "crn:[...]",
"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/8f06378c-ed0e-481e-b98c-9a6dfbee1ed5",
"id": "8f06378c-ed0e-481e-b98c-9a6dfbee1ed5",
"name": "my-instance-1"
},
"name": "my-volume-attachment-1",
"type": "data"
}],
"zone": {
"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-2",
"name": "us-south-2"
}
}
Adjust IOPS by specifying a different IOPS tier profile
Make a PATCH /volumes
request and specify the profile
parameter and indicate the name or href of the IOPS tier profile.
This example changes a 3 IOPS/GB profile to a 5 IOPS/GB profile. In this case, the volume can't exceed 9,600 GB to move to the higher profile.
curl -X PATCH \
"$vpc_api_endpoint/v1/volumes/$volume_id?version=2022-01-11&generation=2" \
-H "Authorization: $iam_token" \
-d '{
"profile": "5iops-tier"
}'
Adjusting IOPS with Terraform
Adjust IOPS for a Custom profile
To modify the IOPS of a volume, use the ibm_is_volume
resource. When applied, the following example updates the volume IOPS to 24,000.
resource "ibm_is_volume" "storage" {
name = "demo-volume-update"
size = 8000
iops = 24000
zone = "us-south-2"
}
Adjust IOPS for a tiered profile
To modify the IOPS of a volume that was created by using a performance tier, use the ibm_is_volume
resource and specify a different tier. When applied, the following example updates the volume profile to 5iops-tier
.
resource "ibm_is_volume" "storage" {
name = "demo-volume-update"
size = 8000
profile = "5iops-tier"
zone = "us-south-2"
}
For more information about the arguments and attributes, see ibm_is_volume.
Next steps
Create more volumes or manage your existing Block Storage for VPC volumes: