# Troubleshoot storage

Fix common volume and snapshot problems, from volumes in ERROR and failed resizes to refused deletes, failed imports, and refused requests.

Each section below describes one symptom, its cause, and how to resolve it. For the error codes the API returns, see [Error codes](/docs/platform/reference/errors).

## Find your symptom [#find-your-symptom]

<Symptoms>
  <Symptom href="#volume-reports-error-after-create-or-import" title="Volume reports ERROR after create or import" />
  <Symptom href="#volume-reports-error-after-delete" title="Volume reports ERROR after delete" />
  <Symptom href="#resize-reports-failed" title="Resize reports FAILED" />
  <Symptom href="#resize-is-refused" title="Resize is refused" />
  <Symptom href="#volume-delete-is-refused-because-its-attached" title="Volume delete is refused because it’s attached" />
  <Symptom href="#volume-delete-is-refused-because-of-snapshots" title="Volume delete is refused because of snapshots" />
  <Symptom href="#volume-still-exists-after-its-instance-was-terminated" title="Volume still exists after its instance was terminated" />
  <Symptom href="#snapshot-cant-be-used-as-a-clone-source" title="Snapshot can’t be used as a clone source" />
  <Symptom href="#snapshot-delete-is-refused" title="Snapshot delete is refused" />
  <Symptom href="#import-fails-with-err_import-or-err_import_image_too_large" title="Import fails with ERR_IMPORT or ERR_IMPORT_IMAGE_TOO_LARGE" />
  <Symptom href="#request-refused-with-product_unavailable" title="Request refused with PRODUCT_UNAVAILABLE" code="PRODUCT_UNAVAILABLE" />
  <Symptom href="#request-refused-with-payment_method_required" title="Request refused with PAYMENT_METHOD_REQUIRED" code="PAYMENT_METHOD_REQUIRED" />
  <Symptom href="#request-refused-because-a-quota-is-exceeded" title="Request refused because a quota is exceeded" />
  <Symptom href="#request-refused-because-the-organization-isnt-active" title="Request refused because the organization isn’t active" />
</Symptoms>

## Volume reports ERROR after create or import [#volume-reports-error-after-create-or-import]

<YouSee>

A new volume reports `status: ERROR` instead of `AVAILABLE`, with a `statusReason` of the form `the operation failed (<code>)`.

</YouSee>

<Why>

The platform couldn’t provision the volume. There’s no usable disk behind it.

</Why>

<Fix>

- Delete the volume. Deleting an `ERROR` volume is allowed. See [Delete a volume](/docs/storage/volumes/delete).
- Create or import the volume again.

For import failures, see [Import fails with `ERR_IMPORT` or `ERR_IMPORT_IMAGE_TOO_LARGE`](#import-fails-with-err_import-or-err_import_image_too_large).

</Fix>

## Volume reports ERROR after delete [#volume-reports-error-after-delete]

<YouSee>

A deleted volume stays in your volume list with `status: ERROR` instead of disappearing.

</YouSee>

<Why>

The platform couldn’t remove the volume’s disk. The disk may still exist, so the volume still counts against your quota.

</Why>

<Fix>

- Delete the volume again.
- If it returns to `ERROR` again, contact support with the volume’s URN and its `statusReason`.

</Fix>

## Resize reports FAILED [#resize-reports-failed]

<YouSee>

After a resize, the volume reports `modificationStatus: FAILED` with a `modificationStatusReason`, and `sizeInGib` still shows the old size.

</YouSee>

<Why>

The platform accepted the resize but couldn’t apply it. The volume’s data is intact and it’s still usable at its old size.

</Why>

<Fix>

- Request the resize again. See [Resize a volume](/docs/storage/volumes/resize).

</Fix>

## Resize is refused [#resize-is-refused]

<YouSee>

`resize-volume` fails immediately with an error such as `volumes can only grow, the volume is already <n> GiB`, or `a volume in state <state> cannot be resized`.

</YouSee>

<Why>

The requested size isn’t larger than the current size, or the volume isn’t `AVAILABLE` or `INUSE`, or another resize is still in progress. Nothing about the volume changed.

</Why>

<Fix>

- Ask for a size larger than the current `sizeInGib`. Volumes can’t shrink.
- Wait for a `CREATING` volume to become `AVAILABLE`, or for `modificationStatus` to leave `RESIZING`, then retry.

</Fix>

## Volume delete is refused because it’s attached [#volume-delete-is-refused-because-its-attached]

<YouSee>

`delete-volume` fails with `the volume cannot be deleted while an instance attachment still claims it: <attachment-id>`.

</YouSee>

<Why>

The volume is attached to an instance and reports `INUSE`.

</Why>

<Fix>

- Find the instance. See [Find the instance a volume is attached to](/docs/storage/volumes/find-instance).
- Detach the volume. See [Attach and detach volumes](/docs/compute/instance-storage/attach-detach).
- Delete the volume again.

</Fix>

## Volume delete is refused because of snapshots [#volume-delete-is-refused-because-of-snapshots]

<YouSee>

`delete-volume` fails with `the volume cannot be deleted while a snapshot of it still exists: <snapshot-id>`, or the same message naming several snapshots.

</YouSee>

<Why>

A snapshot depends on its volume’s data. Every snapshot that isn’t `DELETED` blocks the delete, including one in `ERROR`.

</Why>

<Fix>

- Delete each named snapshot, unprotecting it first if needed. See [Delete a snapshot](/docs/storage/snapshots/delete).
- Wait until each reports `DELETED`.
- Delete the volume again.

<Callout type="warning">

The delete may also be accepted without an error and do nothing (seen on 12 October 2026). If a volume stays `AVAILABLE` after `delete-volume`, find its snapshots with `origin storage list-snapshots --project-urn <project-urn> | jq --arg v "<volume-urn>" '.. | objects | select(.volumeUrn? == $v)'` and delete them first.

</Callout>

</Fix>

## Volume still exists after its instance was terminated [#volume-still-exists-after-its-instance-was-terminated]

<YouSee>

After you terminate an instance, one of its volumes is still `AVAILABLE` and billed, and `retentionNote` is set.

</YouSee>

<Why>

The volume couldn’t be deleted with the instance, most often because a snapshot of it exists. The platform keeps the volume instead of deleting your snapshot.

</Why>

<Fix>

- Delete the volume’s snapshots, then the volume. See [Delete a volume](/docs/storage/volumes/delete).

</Fix>

## Snapshot can’t be used as a clone source [#snapshot-cant-be-used-as-a-clone-source]

<YouSee>

Creating a volume from a snapshot, creating an image, or launching from an image fails with `snapshot is not available` or `snapshot is not protected`.

</YouSee>

<Why>

A clone source must report `status: COMPLETED` and `protectionStatus: PROTECTED`.

</Why>

<Fix>

- Wait for a `PENDING` snapshot to reach `COMPLETED`.
- Protect the snapshot, or protect it again if `protectionStatus` is `FAILED`. See [Create and protect a snapshot](/docs/storage/snapshots/create-and-protect).

If the error says `the size must be greater or equal than used snapshot size`, ask for at least the snapshot’s `volumeSizeInGib`.

</Fix>

## Snapshot delete is refused [#snapshot-delete-is-refused]

<YouSee>

`delete-snapshot` fails with `snapshot must be unprotected before it can be deleted`.

</YouSee>

<Why>

The snapshot is `PROTECTED`, in a protection change, or its `protectionStatus` is `FAILED`.

</Why>

<Fix>

- Unprotect the snapshot and wait for `UNPROTECTED`. See [Delete a snapshot](/docs/storage/snapshots/delete).
- Delete it again.

</Fix>

## Import fails with ERR_IMPORT or ERR_IMPORT_IMAGE_TOO_LARGE [#import-fails-with-err_import-or-err_import_image_too_large]

<YouSee>

An imported volume reports `ERROR` with `statusReason` `the operation failed (ERR_IMPORT_IMAGE_TOO_LARGE)` or `the operation failed (ERR_IMPORT)`.

</YouSee>

<Why>

`ERR_IMPORT_IMAGE_TOO_LARGE` means the image’s virtual size is larger than `sizeInGib`. `ERR_IMPORT` means the download, conversion, or write failed: the source returned an HTTP error, sent nothing for 60 seconds, or the import took longer than 25 minutes.

</Why>

<Fix>

- Delete the failed volume.
- Import again with `sizeInGib` at least the image’s virtual size, or from a faster or reachable source. See [Import a disk image as a volume](/docs/storage/volumes/import).

</Fix>

## Request refused with PRODUCT_UNAVAILABLE [#request-refused-with-product_unavailable]

<YouSee>

`create-volume` or `import-volume` fails with `PRODUCT_UNAVAILABLE` and a message such as `storage class 'st1' is not available - use one of: gp1`.

</YouSee>

<Why>

The storage class is published but can’t be selected.

</Why>

<Fix>

- Use a class whose `available` is `true`, or omit the class to get `gp1`. See [Storage classes](/docs/storage/volumes/storage-classes).

</Fix>

## Request refused with PAYMENT_METHOD_REQUIRED [#request-refused-with-payment_method_required]

<YouSee>

Creating, importing, or resizing a volume, or creating a snapshot, fails with `PAYMENT_METHOD_REQUIRED`.

</YouSee>

<Why>

The project’s billing account can’t pay. For card-managed billing, no verified payment method is on file. Nothing was created or changed.

</Why>

<Fix>

- Add a payment method. See [Add a payment method](/docs/platform/billing/payment-method).
- Retry the request.

</Fix>

## Request refused because a quota is exceeded [#request-refused-because-a-quota-is-exceeded]

<YouSee>

A create, import, resize, or snapshot request fails with a message such as `organisation quota exceeded: volume storage (GiB) usage is <n>, requesting <m> more would exceed the limit of <limit>`.

</YouSee>

<Why>

The request would take your organization or project over its volume storage or snapshot quota. Volumes in `CREATING`, `DELETING`, and `ERROR` count too.

</Why>

<Fix>

- Delete volumes or snapshots you no longer need, including ones in `ERROR`.
- Retry the request, or ask for a higher limit. See [Limits](/docs/platform/reference/limits).

</Fix>

## Request refused because the organization isn’t active [#request-refused-because-the-organization-isnt-active]

<YouSee>

A create, import, resize, or snapshot request fails with `organisation is <status>, not active`.

</YouSee>

<Why>

Your organization hasn’t been approved yet, or is no longer active.

</Why>

<Fix>

- Check your organization’s status. See [Organization review status](/docs/platform/organizations/review-status).

</Fix>

