Connecting Proxmox to FlashArray using iSCSI

Proxmox

Audience
Public
Source Type
Documentation

This guide provides instructions on how to connect your Proxmox instance to your FlashArray as a central iSCSI LVM device that provides shared storage for a datacenter cluster.

Note:
  • For instructions on how to connect Proxmox to the FlashArray using FC, follow this guide.

  • For instructions on how to connect Proxmox to the FlashArray using NFS, follow this guide.

  • For instructions on how to connect Proxmox to the FlashArray using NVMe-TCP, follow this guide.

Pre-requisites

This guide assumes that you have already completed the following:

  • Deployed at least 3 Proxmox nodes and joined them into a cluster. For instructions on how to do that, please see the previous section.

  • Configured your Everpure FlashArray with an iSCSI network.
Note:
  • Almost all configuration will be done in a shell on the Proxmox hosts, this can be done in the shell on the webui or over a typical ssh session.

  • This guide describes how to perform the commands on one host, however, the commands will need to be run on each iSCSI host in the Proxmox cluster.

  1. Configure Proxmox hosts into Purity and create a LUN:
    1. Retrieve the iSCSI initiator name (IQN) from each Proxmox host:
      cat /etc/iscsi/initiatorname.iscsi
    2. Use this IQN to create host objects in the Pure Storage Purity management interface:
      1. Go to Storage > Hosts.

      2. Click the + icon.

      3. In the pop-up window, give your host a name and under personality select none.

      4. Add the Proxmox host IQN under the Host Ports section.

    3. Create a Host Group for the Proxmox "cluster" and add the hosts to the host group.
      1. Go to Storage > Hosts.

      2. Click the + icon.

      3. Click Create Host Group. In the pop-up window, give your host group a name.

      4. Add the Proxmox hosts to the Host Group.

    4. Create a volume/LUN for your host:
      1. Go to Storage > Volumes.

      2. Click the + icon.

      3. In the pop-up window, give your volume a name, volume size and add your newly created host group to this volume/LUN.

    Volume view of the Purity configuration:

    Host group view of the Purity configuration:

  2. Log in to the iSCSI targets from each Proxmox host:
    iscsiadm -m discovery -t sendtargets -p 10.21.245.15

    If successful, you will see an output like the below:

    10.21.245.14:3260,1 iqn.2010-06.com.purestorage:flasharray.2aff15d0743e6525
    10.21.245.15:3260,1 iqn.2010-06.com.purestorage:flasharray.2aff15d0743e6525
    10.21.245.16:3260,1 iqn.2010-06.com.purestorage:flasharray.2aff15d0743e6525
    10.21.245.17:3260,1 iqn.2010-06.com.purestorage:flasharray.2aff15d0743e6525
    Important:

    You need to make the sessions persistent through reboots, otherwise you will need to login iscsiadm -m node -L all every time a host reboots.

    In order to make the sessions persistent, use the following command on every host:

    iscsiadm -m node --op update -n node.startup -v automatic

    Then login to the targets:

    iscsiadm -m node --loginall=automatic
  3. Install Multipath tools:

    To ensure high availability and load balancing for your iSCSI storage, install the multipath tools on each Proxmox host:

    apt update
    apt install multipath-tools
  4. Configure Multipath:
    1. Create the multipath.conf file in /etc/multipath.conf with the following content (If it doesn't already exist). This configuration blacklists all devices and sets the correct exceptions for Pure Storage:
      Important:
      • Blacklists will vary based on your setup. In this example, there is one local drive for the "boot" device. If you boot from SAN, your blacklist configuration will be different.

      • If you are using other storage vendors, you will need to change your blacklist exceptions to accommodate them as needed.

      defaults {
              find_multipaths off
      }
      
      blacklist {
              device {
                  vendor ".*"
                  product ".*"
              }
      }
      
      blacklist_exceptions {
          device {
              vendor "PURE"
              product ".*"
          }
      }
      
    2. Start the multipath service:
      systemctl start multipathd
      systemctl restart multipathd
      multipath -r
    3. Verify that the multipath device is correctly configured and active:
      multipath -ll

    The output should show the Everpure device with its paths active and ready:

    3624a9370730d187406c14775008ef137 dm-5 PURE,FlashArray
    size=100G features='0' hwhandler='1 alua' wp=rw
    -+- policy='service-time 0' prio=50 status=active
     |- 33:0:0:1 sdb 8:16 active ready running
     |- 34:0:0:1 sdc 8:32 active ready running
     |- 35:0:0:1 sde 8:64 active ready running
     - 36:0:0:1 sdd 8:48 active ready running
    Important: This step will need to be performed on all hosts in the cluster.
  5. Create shared storage (LVM):

    To use the storage as a shared resource for all Proxmox nodes, create an LVM pool. Perform these steps on only one Proxmox host:

    1. First, identify the multipath device name using lsblk. The device will be listed under /dev/mapper/.
      lsblk
    2. Use the device name (in this case, /dev/mapper/3624a9370730d187406c14775008ef137) to create the physical volume and volume group:
      pvcreate /dev/mapper/3624a9370730d187406c14775008ef137
      vgcreate pure-storage-vg /dev/mapper/3624a9370730d187406c14775008ef137
  6. Activate storage on other Proxmox nodes:

    The newly created LVM pool will be visible in the Proxmox GUI on all nodes and you can skip down to the step to add storage into Proxmox. If it does show as "unknown" on other nodes follow the steps below:

    1. Scan and activate the volumes:
      vgscan
      vgchange -ay
    2. If the storage is still not showing correctly, ensure that the iSCSI service is running and that the host is logged into the iSCSI targets. This issue can happen after a reboot:
      1. Check the status of the iSCSI service:

        systemctl status iscsid
      2. If it's inactive, restart it:

        systemctl restart iscsid

        You should see the volumes connected:

        iscsiadm -m node -L all

After these steps, the shared LVM storage will be available to add in the ProxMox GUI. Head to Datacenter > Storage and then click add > LVM. Give your volume a name and choose the new volume group you created. Below is a screenshot of what the setup should look like:

Give your volume a name and choose the new volume group you created. Ensure that the "Shared" box is ticked. This should look similar to below.

Below is a screenshot of how it looks in the WebUI:

Test high availability by creating virtual machines on this volume and turning off a host. If your setup is correct, you should see it reboot on another host after a couple of minutes.