Disk provisioning on Pure Storage FlashArray


You can use Portworx with Pure Storage FlashArray as a cloud storage provider. This allows you to store your data on-premises with FlashArray while benefiting from Portworx cloud drive features, such as:

  • Automatically provisioning block volumes
  • Expanding a cluster by adding new drives or expanding existing ones
  • Support for PX-Backup and Autopilot

Just like with other cloud providers, FlashArray interacts with the underlying drives and distributes volumes between registered arrays, while Portworx runs on top of the volumes that FlashArray presents.

NOTE:

  • FlashArray volumes are not the same as Portworx volumes; multiple Portworx volumes can reside on a single FlashArray volume. This makes it theoretically possible for Portworx to place multiple replicas on the same FlashArray volume.
  • To prevent any interference from multipathd service on Portworx volume operations, set the following pxd device denylist rule in the /etc/multipath.conf file:

    blacklist {
          devnode "^pxd[0-9]*"
          devnode "^pxd*"
          device {
            vendor "VMware"
            product "Virtual disk"
          }
    }

Architecture

  • Portworx runs on each node and forms a storage pool based on configuration information provided in the storageCluster spec.
  • When a user creates a PVC, Portworx provisions the volume from the storage pool.
  • The PVCs consume space on the storage pool, and if space begins to run low, Portworx can add or expand drive space from FlashArray.
  • If a node goes down for less than 2 minutes, Portworx will reattach FlashArray volumes when it recovers. If a node goes down for more than two minutes, a storageless node in the same zone will take up the volumes and assume the identity of the downed storage node.

Install Portworx and configure FlashArray

Before you install Portworx, ensure that your physical network is configured appropriately and that you meet the prerequisites. You must provide Portworx with your FlashArray configuration details during installation.

Configure your physical network

Before you can use Portworx with FlashArray, you must ensure your physical network is appropriately configured. The instructions in this document assume the following configuration details:

  • Each FlashArray management IP address can be accessed by each node.
  • Your cluster contains an up-and-running FlashArray with an existing dataplane connectivity layout (iSCSI, Fibre Channel).
  • If you’re using iSCSI, the storage node iSCSI initiators are on the same VLAN as the FlashArray iSCSI target ports.
  • If you are using multiple network interface cards (NICs) to connect to an iSCSI host, then all of them must be accessible from the FlashArray management IP address.
  • If you’re using Fibre Channel, the storage node Fibre Channel WWNs have been correctly zoned to the FlashArray Fibre Channel WWN ports.
  • You have an API token for a user on your FlashArray with at least storage_admin permissions. Check the documentation on your device for information on generating an API token.

Prerequisites

  • Have an on-prem kubernetes cluster with FlashArray.
  • FlashArray must be running a minimum Purity//FA version of at least 4.8. Refer to the Supported models and versions topic for more information.
  • Install the latest Linux multipath software package for your operating system. Refer to the Linux recommended settings article of the Pure Storage documentation for recommendations.
  • The find_multipaths value must be set to yes or on.
  • If using iSCSI, have the latest iSCSI initiator software for your operating system.
  • If using multiple NICs to connect to an iSCSI host, configure these interfaces using the steps in the Create Additional Interfaces (Optional) section on the Configuring Linux Host for iSCSI with FlashArray page.
  • Both multipath and iSCSI, if being used, should have their services enabled in systemd so that they start after reboots.
  • If using Fibre Channel, install the latest Fibre Channel initiator software for your operating system.
  • The FlashArray should be time-synced with the same time service as the Kubernetes cluster.
WARNING: Portworx with FlashArray does not support user friendly names in the multipath.conf file.

Deploy Portworx

Once you’ve configured your physical network and ensured that you meet the prerequisites, you’re ready to deploy Portworx:

  1. Create a JSON file named pure.json that contains your FlashArray information:

    {
      "FlashArrays": [
        {
          "MgmtEndPoint": "<first-fa-management-endpoint>",
          "APIToken": "<first-fa-api-token>"
        }
      ]
    }
    NOTE: You can add FlashBlade configuration information to this file if you’re configuring both FlashArray and FlashBlade together. Refer to the JSON file reference for more information.
  2. Enter the following kubectl create command to create a Kubernetes secret called px-pure-secret:

    kubectl create secret generic px-pure-secret --namespace kube-system --from-file=pure.json=<file path>
    secret/px-pure-secret created
    NOTE: You must name the secret px-pure-secret.
  3. Generate an install spec for your on-prem cluster. Make the following selections when you create your spec using the spec generator:

    • On the Storage tab, select the Cloud storage environment.
    • Ensure that CSI is enabled
    • Select a protocol from the available options; NVMe/RoCE is available only in Portworx version 2.13.0 or newer
  4. Edit the install spec file that you generated and add a value for spec.cloudStorage.provider.

    NOTE: If you are using multiple NICs for iSCIS host, then add the following environment variable to your StorageCluster spec. Replace <nic-interface-names> with comma-separated names of NICs such as "eth1,eth2":

      env:
      - name: flasharray-iscsi-allowed-ifaces
        value: "<nic-interface-names>"
  5. Apply the spec:

    kubectl apply -f <spec-file>

Once deployed, Portworx detects that the FlashArray secret is present when it starts up and uses the described FlashArray(s) as the storage provider. It then picks a backend for each drive to use, creates volumes, and attaches the volumes using iSCSI or Fibre Channel.

NOTE: If you have multiple NICs on your virtual machine, then FlashArray does not distinguish the NICs that include iSCSI and the others without iSCSI.

Last edited: Friday, Jul 7, 2023