---
name: vpc-vsi_is_manage_image_from_volume
title: Managing images from a volume
description: Custom images that are created from a volume are independent from the original volume. You can update the image and delete it as needed. You can delete the original volume and the custom image persists. You can schedule the deprecation and making the image obsolete in the console, from the CLI, or the API.
last-updated: 2026-08-27
---

> ## Documentation Index
> The table of contents for this documentation set is at https://cloud.ibm.com/docs/vpc?format=markdown
> The index for all IBM Cloud docs is at: https://cloud.ibm.com/docs/llms.txt
> Use these files to discover more information as needed.

# Managing images from a volume
{: #image-from-volume-vpc-manage}

Custom images that are created from a volume are independent from the original volume. You can update the image and delete it as needed. You can delete the original volume and the custom image persists. You can schedule the deprecation and making the image obsolete in the console, from the CLI, or the API.
{: shortdesc}

Allowed-use expressions: You can use an allowed-use expression with your custom image to define the capabilities and restrictions of an image and help you find compatible image and profile combinations during server creation. The allowed-use expressions default value for any custom images that are created from a volume is the allowed-use expressions from the original source volume. However, you can edit these allowed-use expressions on the custom image. For more information, see [Adding allowed-use expressions to custom images](https://cloud.ibm.com/docs/vpc?topic=vpc-custom-image-allowed-use-expressions&interface=ui&format=markdown).
{: note}

## Scheduling a lifecycle status change for a custom image by using the UI
{: #ifv-schedule-ilm-status-change-ui}
{: ui}

You can schedule either a single image lifecycle status change or schedule the status changes for the entire lifecycle of the image.

Use the following steps to schedule a single status change:




You can schedule a single status change for an image.

1. In [IBM Cloud console](https://cloud.ibm.com/login){: external}, go to **Navigation menu** icon![menu icon](../icons/icon_hamburger.svg) **> Infrastructure** ![VPC icon](../../icons/vpc.svg) **> Compute > Images**.
1. On the **Custom images** tab,  click the Actions icon ![More Actions icon](../icons/action-menu-icon.svg) for a specific image and select from the available options.
1. Select **Schedule lifecycle**.
1. In **Image status**, select the status change for the image.
1. In **Deprecation details**, select whether to change status **Immediately** or to **Schedule future date**.
1. If you selected **Schedule future date**, you need to fill out the following fields:
   - Select either **By calendar date** or **By number of days**.
      - If you selected **By calendar date**, enter the date and time information. This is the date and time when the status change will occur.
      - If you selected **By number of days**, put in the number of days that will pass before the status is changed.
1. Click **Save**.


Use the following steps to schedule the entire lifecycle of the image:



You can schedule the complete lifecycle for the image. The image is first deprecated and then changes to obsolete according to the schedule that you define. Use the following steps to schedule a lifecycle change.

1. In [IBM Cloud console](https://cloud.ibm.com/login){: external}, go to **Navigation menu** icon![menu icon](../icons/icon_hamburger.svg) **> Infrastructure** ![VPC icon](../../icons/vpc.svg) **> Compute > Images**.
1. On the **Custom images** tab, click the Actions icon ![More Actions icon](../icons/action-menu-icon.svg) for a specific image and select from the available options.
1. Select **Schedule lifecycle**.
1. Select **Schedule complete lifecycle**.
   - If you selected **By calendar date**, enter the date and time for when you want the status change occur.
   - If you selected **By number of days**, put in the number of days that you want to pass before the status is changed.

   The date for obsolescence must be after the deprecation date.
   {: note}

1. Click **Schedule**.


## Changing a lifecycle status of a custom image by using the CLI
{: #ifv-schedule-ilm-status-change-cli}
{: cli}

You can change the lifecycle status of an IBM Cloud VPC image that was created from a volume from the command-line interface (CLI). You can make an immediate status change by using the `ibmcloud is image-deprecate` or `ibmcloud is image-obsolete` commands. You can also schedule these status changes for a future date and time by using the `ibmcloud is image-update` command. Specify the name or ID of the custom image with the `IMAGE` variable.


To make an immediate status change, use one of the following examples.

You can make an immediate status change only if a future status change is not scheduled. To remove a scheduled status change, see [Remove a scheduled custom image lifecycle status change by using the CLI](https://cloud.ibm.com/docs/vpc?topic=vpc-managing-custom-images&interface=cli&format=markdown#schedule-reset-ilm-status-change-cli). After you remove the scheduled status change, you can make an immediate status change.
{: note}

- Change the image lifecycle status to `deprecate`.

    ```sh
    ibmcloud is image-deprecate IMAGE
    ```
    {: pre}

- Change the image lifecycle status to `obsolete`.

    ```sh
    ibmcloud is image-obsolete IMAGE
    ```
    {: pre}

To schedule a status change, use the following example.

For the `deprecate-at` or `obsolete-at` option, specify a date in the ISO 8601 (`YYYY-MM-DDThh:mm:ss+hh:mm`) date and time format.

* `YYYY` is the four digit year
* `MM` is the two digit month
* `DD` is the two digit day
* `T` separates the date and time information
* `hh` is the two digit hours
* `mm` is the two digit minutes
* `+hh:mm` or `-hh:mm` is the UTC time zone

Thus, the date of 30 September 2023 at 8:00 PM in the North American Central Standard Time Zone (CST) would be `2023-09-30T20:00:00-06:00`

When scheduling the date and time, you can't use your current date and time. For example, if it is 8:00 AM on June 12, then the scheduled date and time must be after 8:00 AM on June 12. If you define both the `deprecate-at` and `obsolete-at` dates, the `obsolete-at` date must be after the `deprecate-at` date.

```sh
ibmcloud is image-update IMAGE [--deprecate-at YYYY-MM-DDThh:mm:ss+hh:mm] [--obsolete-at YYYY-MM-DDThh:mm:ss+hh:mm]
```
{: pre}

If you want to change the `deprecate-at` and `obsolete-at` date and time entries, you can run these commands again. The previous dates and times are then replaced with the new dates and times.


## Removing previously scheduled lifecycle status change by using the CLI
{: #ifv-reset-ilm-status-change-cli}
{: cli}



You can remove a scheduled status change by using the `--reset-deprecate-at` or `--reset-obsolete-at` options. If you use either of these options with the **ibmcloud is image-update** command, the date and time are removed from the image. The image is no longer scheduled for that status change.

```sh
ibmcloud is image-update IMAGE [--reset-deprecate-at] [--reset-obsolete-at]
```
{: pre}

If you use both the `--reset-deprecate-at` and `--reset-obsolete-at` options, the image status returns to `available`.


## Changing the lifecycle status of a custom image by using the API
{: #ifv-schedule-ilm-status-change-api}
{: api}

You can change the lifecycle status of an IBM Cloud VPC image that was created from volume with the application programming interface (API). You can make an immediate status change or schedule a status change to happen later.




To make an immediate status change, use one of the following examples. For the`$image_id` variable, specify the ID of the custom image for the status change.

You can make an immediate status change only if a future status change is not scheduled. To remove a scheduled status change, see [Remove a scheduled custom image lifecycle status change by using the API](https://cloud.ibm.com/docs/vpc?topic=vpc-managing-custom-images&interface=api&format=markdown#schedule-ilm-reset-status-change-API). After you remove the scheduled status change, you can make an immediate status change.
{: note}

- Change image lifecycle status to `deprecated`.

   ```sh
   curl -X POST "$vpc_api_endpoint/v1/images/$image_id/deprecate?version=2023-02-21&generation=2" -H “Authorization: Bearer $iam_token”
   ```
   {: pre}

- Change the image lifecycle status to `obsolete`.

   ```sh
   curl -X POST "$vpc_api_endpoint/v1/images/$image_id/obsolete?version=2023-12-21&generation=2" -H “Authorization: Bearer $iam_token”
   ```
   {: pre}

To schedule a status change, use one of the following examples.

For the `deprecation_at` or `obsolescence_at` properties, specify a date in the ISO 8601 (`YYYY-MM-DDThh:mm:ss+hh:mm`) date and time format.

* `YYYY` is the four digit year
* `MM` is the two digit month
* `DD` is the two digit day
* `T` separates the date and time information
* `hh` is the two digit hours
* `mm` is the two digit minutes
* `+hh:mm` or `-hh:mm` is the UTC time zone

Thus, the date of 30 September 2023 at 8:00 PM in the North American Central Standard Time Zone (CST) would be `2023-09-30T20:00:00-06:00`

When scheduling the date and time, you can't use your current date and time. For example, if it is 8:00 AM on June 12, then the scheduled date and time must be after 8:00 AM on June 12. If you define both the `deprecation_at` and `obsolescence_at` dates and times, the `obsolescence_at` date must be after the `deprecation_at` date and time.

- Schedule a status change to `deprecated`.

   ```sh
   curl -X PATCH "$vpc_api_endpoint/v1/images/$image_id?version=2022-11-21&generation=2" -H "Authorization: Bearer $iam_token" -d '{
    "deprecation_at": "2023-03-01T06:11:28+05:30" }'
   ```
   {: pre}

- Schedule a status change to `obsolete`.

   ```sh
   curl -X PATCH "$vpc_api_endpoint/v1/images/$image_id?version=2022-11-21&generation=2" -H "Authorization: Bearer $iam_token" -d '{
    “obsolescence_at": "2023-12-31T06:11:28+05:30" }'
   ```
   {: pre}

   If you want to change the `deprecation_at` and `obsolescence_at` date and time entries, you can run these commands again. The previous dates and times are replaced with the new dates and times.


## Removing previously scheduled lifecycle status change by using the API
{: #ifv-reset-ilm-status-change-api}
{: api}



Make a `PATCH /images` request to remove any scheduled status change by updating `deprecation_at` or `obsolescence_at` to `null`. This property change removes the date and time from the image and the image is no longer scheduled for that status change. 

* To change an image from `deprecated` to `available`, change the `deprecation_at` property to `null`.

   ```sh
   curl -X PATCH "$vpc_api_endpoint/v1/images/$image_id?version=2022-11-21&generation=2" -H "Authorization: Bearer $iam_token" -d '{ "deprecation_at": null }'
   ```
   {: pre}

* To change an image from `obsolete` to its previous state, change `obsolescence_at` to `null`. If the image previously contained a value other than `null` for `deprecation_at`, then this property change removes the `obsolete` state and changes it back to `deprecated`. If the previous state was `available`, meaning the image was moved from `available` directly to `obsolete`, then this property change moves from `obsolete` back to `available`.

   ```sh
   curl -X PATCH "$vpc_api_endpoint/v1/images/$image_id?version=2022-11-21&generation=2" -H "Authorization: Bearer $iam_token" -d '{ “obsolescence_at": null }'
   ```
   {: pre}

* To change an image that has both the `deprecation_at` or `obsolescence_at` properties set back to `available`, you must update both the `deprecation_at` or `obsolescence_at` properties.

   ```sh
   curl -X PATCH "$vpc_api_endpoint/v1/images/$image_id?version=2022-11-21&generation=2" -H "Authorization: Bearer $iam_token" -d '{ "deprecation_at": null, “obsolescence_at": null }'
   ```
   {: pre}


## Performance considerations
{: #ifv-performance}

Several factors can impact how quickly your image from volume is queued and created, such as the size of the image and number of jobs in the queue. If an image is taking longer than you want to wait, you can cancel the job.

### Performance during image creation
{: #ifv-image-created}

When you create the image, the API `status_reasons` parameter indicates `image_request_queued`, with a message _"The image request is accepted and waiting for system resources to become available"_. When you see this message, it might take a while for the job to start. The following table provides some guidelines that are based on image size. Check for an `in_progress` status to see whether the image is being created. Again, depending on the size of the image, it might take a while before the image is available.

| Image size | Estimated time until image is available |
|------------|-----------------------------------------|
| 5 GB |  5 min |
| 10 GB | 10 min |
| 25 GB |  25 min |
| 50 GB |  50 min |
| 75 GB | 1 hr 15 min |
| 100 GB | 1 hr 40 min |
{: caption="Estimated wait time for image creation" caption-side="bottom"}

The time for the job to start is about 30 seconds. This time does not reflect traffic in the queue, which can increase the estimate. Most jobs start within 5 - 10 minutes. If it takes longer, [cancel the image creation](#ifv-delete-queued).
{: note}

### Cancelling an image that is queued for creation
{: #ifv-delete-queued}

You can cancel the image creation by deleting the image if the underlying job didn't start yet. For images in a _pending_ state, the `GET /images` API call returns an `image_request_queued` reason code. You can delete the pending image with a `DELETE /image{image_id}` request. Alternatively, you can use the [UI](https://cloud.ibm.com/docs/vpc?topic=vpc-image-from-volume-vpc-manage&interface=ui&format=markdown#ifv-delete-ui) or [CLI](https://cloud.ibm.com/docs/vpc?topic=vpc-image-from-volume-vpc-manage&interface=cli&format=markdown#ifv-delete-cli) to delete the image that is in a pending state.

## Deleting a custom image by using the UI
{: #ifv-delete-ui}
{: ui}

You can delete an image that was created from a volume from the list of custom images. You can delete images that are in pending state (while they are being created) and in available state.

1. Go to the list of custom images. In the [IBM Cloud console](https://cloud.ibm.com/login){: external}, go to the **Navigation menu ![menu icon](../../icons/icon_hamburger.svg) > VPC Infrastructure ![VPC icon](../../icons/vpc.svg) > Compute > Images**.
2. On the **Custom images** tab, locate the image that you want to delete. From the **Actions** menu ![Actions icon](../icons/action-menu-icon.svg "Actions"), select **Delete**.

## Deleting an image from volume by using the CLI
{: #ifv-delete-cli}
{: cli}

1. Locate the image from volume in the list of images.

   ```sh
   ibmcloud is images
   ```
   {: pre}

2. Delete the image by ID.

   ```sh
   ibmcloud is image-delete IMAGE_ID
   ```
   {: pre}

## Deleting an image from volume by using the API
{: #ifv-delete-api}
{: api}

Make a `DELETE /images` request, and specify the ID of the image that was created from a boot volume.

1. Locate the ID of the image from volume:

   ```sh
   curl -X GET "$vpc_api_endpoint/v1/images?version=2024-06-12&generation=2" -H "Authorization: Bearer $iam_token"
   ```
   {: pre}

2. Delete the image by ID:

   ```sh
   curl -X DELETE "$vpc_api_endpoint/v1/images/$image_id?version=2024-06-12&generation=2" -H "Authorization: Bearer $iam_token"
   ```
   {: pre}


## Next steps
{: #ifv-manage-next-steps}

Preview the end-to-end process for creating an image from volume, then you can use the image when you create a new virtual server instance. For more information, see the [Image from volume tutorial](https://cloud.ibm.com/docs/vpc?topic=vpc-creating-and-using-an-image-from-volume&format=markdown).