ActiveCluster vVols: How to Create a Stretchable Storage Container

User Guides for VMware Solutions

Audience
Public
Content Type
User Guides
Source Type
Documentation

Creating a stretchable storage container is different then creating a stretched container. A stretchable container is just that: a local container (local unstretched pod) that has the ability to be stretched at a future point in time. This is very useful to leverage when migrating existing VMs to the new stretchable container before stretching the container.

XCOPY is supported for copy operations between local pods but it is not supported from local pods to a stretched pod. If a storage vMotion occurs between an existing container and a stretched container, then it will be a standard copy. There are no volume copies, overwrites or XCOPY that will be supported for that operation. Doing this between local pods can leverage XCOPY between them. Once the VMs have been cloned or migrated to the stretchable container the container can be stretched.

This section will cover the process of creating a stretchable container. At this time, this can only be done via the CLI. In the future, this will be able to be done via Everpure’s vSphere Remote Plugin. The steps are as follows:

  1. Create a new pod on the FlashArray where the source VMs are located

  2. Create a new protocol endpoint in the new pod with the container version set to 4

  3. Connect the protocol endpoint to the host group

  4. Set the ACL for the vCenter Server

  5. Rescan and Synchronize storage providers from vCenter

  6. Create a new vVol Datastore

Create a new pod

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

From the CLI:

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

Create a new protocol endpoint in the new pod

From the FA CLI, create the new protocol endpoint in the new pod with the container version set to 4.

From the CLI:
pureuser@sn1-xl130-c12-17> purevol create --protocol-endpoint --container-version 4 activecluster-vvols-ds-02::pure-protocol-endpoint
Name                                               Source  Created                  Serial                    Container Version  Protection
activecluster-vvols-ds-02::pure-protocol-endpoint  -       2024-07-10 20:24:51 PDT  36C08E572D344E360018B535  4                  -
It is very important to set the container version here. If the container version is not set to 4 and then the PE is connected to a host group, then the container will be unstretchable from that point moving forward.

Connect the protocol endpoint to the host group

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

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

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-02::pure-protocol-endpoint vhost-b1e260e5-a986-455a-a782-4c943f2bfd13
VC Host                                     Protocol Endpoint
vhost-b1e260e5-a986-455a-a782-4c943f2bfd13  activecluster-vvols-ds-02::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.

Create a new vVol Datastore

Create the new stretchable vVol Datastore from 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 stretchable container => Name => Next

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

Notice here that there are just the on array and two storage providers listed. This is because the storage container is not stretched yet.

Select all hosts in the Cluster => Next

Select all hosts in the Cluster => Next

Confirm information => Finish

Confirm information => Finish

From here the vVol Datastore will be created and mounted.

From the datastore view, vSphere will say it’s in a stretched state, but it’s actually in a stretchable state.

Datastore View => Summary => Stretched Container

Datastore View => Summary => Stretched Container