# Pure Storage Configurations

### the Overview <a href="#overview" id="overview"></a>

Pure Storage FlashArray systems deliver all-flash storage with inline deduplication, compression, and replication. <code class="expression">space.vars.product\_name</code> integrates with these arrays through the Pure Storage driver, supporting both iSCSI and Fibre Channel protocols.

### Prerequisites

Before you configure the Pure Storage iSCSI backend, complete these requirements:

* Pure Storage FlashArray running Purity//FA 4.8 or later.
* Create a Pure Storage user account with admin rights for Platform9. This user must have permissions to create, delete, and manage volumes, snapshots, and host connections.
* Generate an API token for the Platform9 user account on the Pure Storage array.
* Create a Pure Storage host group for all Platform9 hypervisors. Platform9 uses the host group for volume mapping and access control.
* Configure iSCSI connectivity between hosts and the array. Verify hosts can reach the Pure Storage iSCSI network.

{% hint style="info" %}
Required packages (`py-pure-client`, `multipath-tools`, `sysfsutils`, `sg3-utils`) are automatically installed and configured by Platform9 during host configuration.
{% endhint %}

### API token authentication

Pure Storage arrays require API token authentication for Platform9 integration.

**To generate an API token:**

1. Create a Pure Storage user account with admin rights equivalent to the default `pureuser` account.
2. Log in to the Pure Storage array management interface.
3. Navigate to **Settings > Users**.
4. Select the admin user account created for Platform9.
5. Generate an API token for this user.
6. Copy the API token value for use in the volume backend configuration.

{% hint style="info" %}
Required permissions&#x20;

The Pure Storage user account must have full admin rights to create, delete, and manage volumes, snapshots, and host connections. Without these permissions, volume operations will fail.
{% endhint %}

### Volume backend configuration

```ini
[pure_iscsi_backend]
volume_driver = cinder.volume.drivers.pure.PureISCSIDriver
volume_backend_name = pure_iscsi
san_ip = <PURE_MGMT_IP>
pure_api_token = <PURE_API_TOKEN>
pure_iscsi_cidr = <ISCSI_NETWORK_CIDR>
use_multipath_for_image_xfer = true
pure_automatic_max_oversubscription_ratio = true
```

### Configuration parameters

* **volume\_backend\_name**: User-defined name for this storage backend. Choose a descriptive name that identifies this Pure Storage backend in your environment.
* **pure\_api\_token**: Authentication token generated from the Pure Storage array for the Platform9 user account. Token-based authentication is more secure than username/password authentication and is the recommended method.
* **pure\_iscsi\_cidr**: Network CIDR for the iSCSI storage network (for example, `10.0.0.0/24`). This defines which network interfaces the driver uses for iSCSI connectivity.
* **use\_multipath\_for\_image\_xfer**: Enables multipath for image transfers, improving reliability during volume creation from images.
* **pure\_automatic\_max\_oversubscription\_ratio**: Enables automatic calculation of the oversubscription ratio based on available array capacity. When enabled, Pure Storage dynamically manages thin provisioning ratios.

### Compute multipath configuration

For FC and iSCSI multipath support, configure hypervisor role on all hypervisor hosts:

```ini
# /opt/pf9/etc/nova/conf.d/nova_override.conf

[libvirt]
# For iSCSI multipath
iscsi_use_multipath = true

# For Fibre Channel multipath
volume_use_multipath = true
```

This configuration enables the compute service to properly discover and use multipath devices when attaching volumes to instances.

### Optional parameters

**Manual oversubscription ratio:**

If you need to manually control the oversubscription ratio instead of using automatic calculation, add:

```ini
# Manual oversubscription ratio
max_over_subscription_ratio = 20
```

**Replication configuration:**

If using Pure ActiveCluster for replication, add:

```ini
# Replication configuration (if using Pure ActiveCluster)
replication_device = backend_id:<TARGET_ARRAY_NAME>,san_ip:<TARGET_MGMT_IP>,api_token:<TARGET_API_TOKEN>
```

### Configuration notes

* Data-reduction features (deduplication and compression) are automatic and inline. No additional configuration is required.
* Pure Storage supports both synchronous and asynchronous replication when properly configured.
* Snapshots are instant and space-efficient, enabling rapid backup and recovery workflows.
* The driver automatically collects performance metrics from the array. Operations continue normally even if metric collection is temporarily unavailable.
