> For the complete documentation index, see [llms.txt](https://docs.platform9.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.platform9.com/private-cloud-director/images-and-image-library/troubleshooting-and-log-files/copy-image-fails-between-nfs-and-tintri-backends.md).

# Copy Image Fails Between NFS and Tintri Backends

## Problem

> In a multi-store Image Library, copying an image to a store backed by a Tintri (NFS) Block Storage backend fails, and the image is not written to that store. This is often seen when an image is copied from an existing NFS-backed store to a newly added Tintri store.

The Image Library log (`/var/log/pf9/glance-api.log`) on the image library host shows an error similar to:

```
ERROR glance_store._drivers.cinder.store ... BackendException: qcow2 volume
creation for cinder nfs is not supported from glance_store. Failed to create
volume <volume-id>
```

The import task then transitions to `FAILURE` and reverts.

## Environment

* Private Cloud Director v2026.8 and higher.
* An Image Library configured with more than one storage backend, where a Tintri VMstore (NFS) Block Storage backend is used as a store.

## Cause

The Image Library Service can write image data only to **raw** volumes on an NFS-backed Block Storage backend. Tintri VMstore is NFS-backed. When the Tintri backend is configured to provision **qcow2** volumes, the Image Library Service cannot write the image into the volume, so the copy fails.

{% hint style="info" %}
**Info**

This limitation applies only to NFS-backed Block Storage backends. Backends attached over Fibre Channel or iSCSI are not affected, because image data is written to a raw block device.
{% endhint %}

## Workaround

Configure the Tintri backend used by the Image Library store to provision raw volumes.

{% stepper %}
{% step %}

#### Disable qcow2 provisioning on the Tintri backend

In the Tintri Block Storage backend configuration, set:

```
vmstore_qcow2_volumes = false
```

Optionally, to keep thin (sparse) allocation while still using the raw format the Image Library requires, also set:

```
vmstore_sparsed_volumes = true
```

{% endstep %}

{% step %}

#### Restart the Block Storage service on the backend

The change applies to newly created volumes. Restart the Block Storage service on the Tintri backend host so the new setting takes effect:

```
sudo systemctl restart pf9-cindervolume-base
```

{% endstep %}

{% step %}

#### Retry the image copy

Copy the image to the Tintri store again. The Image Library Service creates the new volume in raw format, and the image is written successfully.
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
**Important**

The provisioning format is set per Block Storage backend and applies to every volume it creates, both image volumes and user volumes. If user volumes on the same Tintri backend must remain qcow2 (for example, for snapshot efficiency), use a dedicated volume type and backend for the Image Library store with raw provisioning, and keep the qcow2 volume type for user volumes. The raw setting cannot be limited to image volumes within a single backend.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.platform9.com/private-cloud-director/images-and-image-library/troubleshooting-and-log-files/copy-image-fails-between-nfs-and-tintri-backends.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
