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:
-
Create a new pod on either FlashArray
-
Create a new protocol endpoint in the new pod
-
Stretch the new pod between both arrays
-
Connect the protocol endpoint to the host group on both arrays
-
From the FlashArray CLI, set the ACL for the vCenter Server
-
Rescan and Synchronize storage providers from vCenter
-
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 => + |
|
|
|
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.
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 |
|
|
|
Volume Options => Create Protocol Endpoints |
|
|
|
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:
-
Compatible with vSphere version 7.0.1 or higher. Default .
-
Compatible with vSphere version 8.0.0 or higher. (supports nvme-vvols)
-
Compatible with vSphere version 8.0.1 or higher. (supports ACLs)
-
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.
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 => + |
|
|
|
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.
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 |
|
|
|
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-" |
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.
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 |
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 |
|
|
|
New Datastore => Type => vVol => Next |
|
|
|
Backing Storage Container => select the stretched container => Name => Next |
|
|
|
Select all hosts in the Cluster => Next |
|
|
|
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 |
Now there is a stretched vVol Datastore where the PE has paths to both arrays.
|
|
|
Host View => Configure => Storage Devices => Select PE => Paths |