ActiveCluster vVols: How to Create a Stretched Storage Container

User Guides for VMware Solutions

Audience
Public
Content Type
User Guides
Source Type
Documentation

Creating a stretched container can be done completely via the CLI or a combination of the CLI and GUI. In the GUI, you can create a new storage container, stretch the container and connect the protocol endpoint to the host groups on both arrays. However, in order to set the ACL for the container, the CLI will need to be used.

The steps to create a new stretched storage container are:

  1. Create a new pod on either FlashArray

  2. Create a new protocol endpoint in the new pod

  3. Stretch the new pod between both arrays

  4. Connect the protocol endpoint to the host group on both arrays

  5. From the FlashArray CLI, set the ACL for the vCenter Server

  6. Rescan and Synchronize storage providers from vCenter

  7. Create a new vVol Datastore

Create a new pod on either FlashArray

A new pod can be created via the CLI or from the GUI.

From the FlashArray CLI:

pureuser@sn1-xl130-c12-17> purepod create activecluster-vvols-ds-01
Name                       Source  Array             Status  Frozen At  Promotion Status  Link Count  Quota Limit
activecluster-vvols-ds-01  -       sn1-xl130-c12-17  online  -          promoted          0           -

From the FlashArray GUI:

From the FlashArray GUI => Storage => Pods => +

From the FlashArray GUI => Storage => Pods => +

Create Pod => Pod Name => Create

Create Pod => Pod Name => Create

Create the pod by giving it a name, and optionally, a capacity quota limit. If no quota is set, the storage container size will be 1 PB.

Create a new protocol endpoint in the new pod

When creating the protocol endpoint from the CLI, make sure to use the container version option to ensure that the correct version is being set before the PE is connected to a host or host group.

From the FlashArray CLI:
pureuser@sn1-xl130-c12-17> purevol create --protocol-endpoint --container-version 4 activecluster-vvols-ds-01::pure-protocol-endpoint
Name                                               Source  Created                  Serial                    Container Version  Protection
activecluster-vvols-ds-01::pure-protocol-endpoint  -       2024-07-10 09:26:13 PDT  36C08E572D344E36001878BB  4                  -

From the FlashArray GUI:

Storage => Pods => Select Pod => Volume Options => Show Protocol Endpoints

Storage => Pods => Select Pod => Volume Options => Show Protocol Endpoints

Volume Options => Create Protocol Endpoints

Volume Options => Create Protocol Endpoints

Create Protocol Endpoint => Name => Create

Create Protocol Endpoint => Name => Create

Note that when creating the protocol endpoint in the GUI, there is no option to set the container version. When PEs are created in the GUI or CLI without the version option, the version will not be set initially; it will wait until specific actions happen with the PE to automatically set the container version. If the PE is not connected to any hosts and the pod is stretched, the container version will automatically be set to version 4. If the PE is connected with a host with an NQN, the container version will be set to 2. If the PE is not stretched and then connected with a host with an IQN or WWN, then the container version will be set to 1.

Container versions are as follows:

  1. Compatible with vSphere version 7.0.1 or higher. Default .

  2. Compatible with vSphere version 8.0.0 or higher. (supports nvme-vvols)

  3. Compatible with vSphere version 8.0.1 or higher. (supports ACLs)

  4. Compatible with vSphere version 8.0.3 or higher. (supports ActiveCluster)

Only vVol containers created with version 4 may be stretched

Stretch the new pod between both arrays

Next, the pod needs to be stretched to create a stretched pod.

From the FlashArray CLI:
pureuser@sn1-xl130-c12-17> purepod add --array sn1-x90r2-c11-18 activecluster-vvols-ds-01
Name                       Source  Array             Status  Frozen At  Promotion Status  Link Count  Quota Limit
activecluster-vvols-ds-01  -       sn1-x90r2-c11-18  offline -          promoted          0           -
                                   sn1-xl130-c12-17  online  -

pureuser@sn1-xl130-c12-17> purepod list activecluster-vvols-ds-01
Name                       Source  Array             Status  Frozen At  Promotion Status  Link Count  Quota Limit
activecluster-vvols-ds-01  -       sn1-x90r2-c11-18  online  -          promoted          0           -
                                   sn1-xl130-c12-17  online  -

From the FlashArray GUI:

Storage => Pods => Select Pod => Arrays => +

Storage => Pods => Select Pod => Arrays => +

Add Array => Select Remote Array => Add

Add Array => Select Remote Array => Add

When the pod is stretched initially, it will report as offline on the peer array, then transition to synchronizing; once that is done, the pod will be online on both arrays.

Connect the protocol endpoint to the host group on both arrays

Once the pod is online on both arrays, the PE should be connected with the host groups.

From the FlashArray CLI:
pureuser@sn1-xl130-c12-17> purevol connect --hgroup AC-vVols-Cluster-scsi-fc activecluster-vvols-ds-01::pure-protocol-endpoint
Name                                               Host Group                Host                  LUN  NSID
activecluster-vvols-ds-01::pure-protocol-endpoint  AC-vVols-Cluster-scsi-fc  cert-esxi-02-scsi-fc  251  -
activecluster-vvols-ds-01::pure-protocol-endpoint  AC-vVols-Cluster-scsi-fc  cert-esxi-01-scsi-fc  251  -
activecluster-vvols-ds-01::pure-protocol-endpoint  AC-vVols-Cluster-scsi-fc  cert-esxi-04-scsi-fc  251  -
activecluster-vvols-ds-01::pure-protocol-endpoint  AC-vVols-Cluster-scsi-fc  cert-esxi-03-scsi-fc  251  -

pureuser@sn1-x90r2-c11-18> purevol connect --hgroup AC-vVols-Cluster-scsi-fc activecluster-vvols-ds-01::pure-protocol-endpoint
Name                                               Host Group                Host                  LUN  NSID
activecluster-vvols-ds-01::pure-protocol-endpoint  AC-vVols-Cluster-scsi-fc  cert-esxi-02-scsi-fc  251  -
activecluster-vvols-ds-01::pure-protocol-endpoint  AC-vVols-Cluster-scsi-fc  cert-esxi-01-scsi-fc  251  -
activecluster-vvols-ds-01::pure-protocol-endpoint  AC-vVols-Cluster-scsi-fc  cert-esxi-04-scsi-fc  251  -
activecluster-vvols-ds-01::pure-protocol-endpoint  AC-vVols-Cluster-scsi-fc  cert-esxi-03-scsi-fc  251  -

From the FlashArray GUI:

Storage => Hosts => Select Host Group => Connected Volumes => Connect

Storage => Hosts => Select Host Group => Connected Volumes => Connect

Select Stretched Protocol Endpoint => Connect

Select Stretched Protocol Endpoint => Connect

This will need to be done from both arrays configured for ActiveCluster and the pod is stretched.

Setting the ACL for the vCenter Server

There are a few ways to get the vCenter Server GUID: PowerShell, Python, the MOB or from the vCenter Server URL. The easiest way is to look at the vCenter URL as it will be the group-d1:GUID.

For Example, from the vCenter Server GUI:

vCenter GUI URL => Look for "Folder:group-"

vCenter GUI URL => Look for "Folder:group-"

We can see that the VC GUID is “b1e260e5-a986-455a-a782-4c943f2bfd13”; this will show up in purevchost list and purecert list on the FlashArray. From this point, we will need to add the ACL for the container by setting access on the pod’s protocol endpoint with the vchost that matches this GUID. This can only be done from the CLI.

From the FlashArray CLI:
pureuser@sn1-xl130-c12-17> purevchost list
Name                                        Vcuuid
vhost-75281e77-3e98-4cad-a0d2-faa1bbd8f864  75281e77-3e98-4cad-a0d2-faa1bbd8f864
vhost-b1e260e5-a986-455a-a782-4c943f2bfd13  b1e260e5-a986-455a-a782-4c943f2bfd13

pureuser@sn1-xl130-c12-17> purevchost connection create --protocol-endpoint activecluster-vvols-ds-01::pure-protocol-endpoint vhost-b1e260e5-a986-455a-a782-4c943f2bfd13
VC Host                                     Protocol Endpoint
vhost-b1e260e5-a986-455a-a782-4c943f2bfd13  activecluster-vvols-ds-01::pure-protocol-endpoint
Now an ACL has been established for this vCenter Server and all of the hosts on this vCenter to have access to this storage container. Until this is set, then the container will not be returned to any vCenter Server. By design, stretched and stretchable storage containers should not be shared between vCenter Servers; they must be private containers for a single vCenter Server.

Rescan and Synchronize storage providers from vCenter

After the PE is connected and the ACL is set for the container, the storage providers need to be synchronized by the vCenter Server. This will force the vCenter server to get an updated list of available storage containers from the storage providers. Without doing this step, it may take some time before vCenter will do this query. This can technically be done with PowerShell or python but is done easiest in the vCenter Server GUI.

From the vCenter Server GUI:

vCenter View => Configure => Storage Providers => Sync Storage Providers & Rescan Storage Providers

vCenter View => Configure => Storage Providers => Sync Storage Providers & Rescan Storage Providers

Create a new vVol Datastore

Now that the Storage Providers have been synced, the new storage container should be available to create a new vVol Datastore. While this process can be done with PowerShell or other automation tools (the Everpure vSphere Remote Plugin will have it at a later date), this guide will show how to create this in the vCenter Server GUI.

From the vCenter Server GUI:

Host View => Right Click on Cluster => Storage => New Datastore

Host View => Right Click on Cluster => Storage => New Datastore

New Datastore => Type => vVol => Next

New Datastore => Type => vVol => Next

Backing Storage Container => select the stretched container => Name => Next

Backing Storage Container => select the stretched container => Name => Next

Select all hosts in the Cluster => Next

Select all hosts in the Cluster => Next

Confirm information => Finish

Confirm information => Finish

And now the vVol Datastore is created. From the datastore view there is now a stretched property of the vVol DS as well.

Datastore View => Summary => Stretched Container

Datastore View => Summary => Stretched Container

Now there is a stretched vVol Datastore where the PE has paths to both arrays.

Host View => Configure => Storage Devices => Select PE => Paths

Host View => Configure => Storage Devices => Select PE => Paths