Skip to main content
Pure Technical Services

Customer Driven Capacity Upgrades | Pure CBS on AWS

Currently viewing public documentation. Please login to access the full scope of documentation.

This document provides steps on how customers can expand the capacity of Pure Cloud Block Store underlying infrastructure in AWS. 

Introduction

Prior to Purity version 6.6.2, adding capacity to a Pure Cloud Block Store (CBS) instance was a support-driven task. It requires the customer to open a case, then Pure Storage support engineer reaches out to schedule the upgrade and ask the customer to enable the remote assist. Only with those steps in place could the capacity upgrade be performed. 

With Purity version 6.6.2 and above, a new feature has been released that allows this to be a customer-driven action. Customers can request additional usable capacity to the CBS instance themselves, by simply using the Pure CLI or alternatively using the CBS REST API Endpoint. It starts by showing the supported capacity points, then selecting the desired capacity.  

Pure Cloud Block Store customer driven capacity upgrade is Non-Disruptive Upgrade (NDU) procedure. 

Capacity Point 

This section lists the capacity point information table for each CBS SKU model. Each column heading shows the following: 

Raw Capacity: The sum of the physical capacity provisioned. During the upgrade process, all the capacity points are denoted as raw, hence the importance of this table to map the raw to the desired usable capacity. 

Usable Capacity: The amount of capacity that can be actually used to store data once Purity overhead has been taken into account.  This value does not include the data reduction ratio for your workloads. Usable capacity can be found on the CBS GUI or CLI. 

# of Virtual Drives: In AWS CBS, capacity upgrade means adding an additional virtual shelf of virtual drives. A virtual shelf contains 7 virtual drives. A virtual drive is an EC2 instance either i3 or i3en instance type.   

► Capacity Points for V10A-R1 SKU

Pure CBS V10 SKU has two capacity points. It starts with 6.9 TiB usable capacity with an initial "7" Virtual Drives. 

Capacity Point Raw Capacity (Bytes) Raw Capacity (TiB) Usable Capacity (TiB) # of Virtual Drives 
0 (Base)  13124681859072 12 6.9  7
1 26249363718144 24 13.8  14
► Capacity Points for V20 SKU with i3 Virtual Drives

Pure CBS V20 SKU based has 3 capacity points. It starts with 13.8 TiB usable capacity, and scales up to 55.2 TiB.

V20 is only supported with i3 EC2 instance type in few regions where i3en is not available. 

Capacity Point Raw Capacity (Bytes) Raw Capacity (TiB) Usable Capacity (TiB) # of Virtual Drives 
0 (Base)  26249833480192 24 13.8  7
1 52499666960384 49 27.6  14
2 104999333920768 99 55.2  21
► Capacity Points for V20 SKU with i3en Virtual Drives

Pure CBS V20 SKU based on i3en VD has 2 capacity points. It starts with 27.2 TiB usable capacity, and scales up to 57.5 TiB.

Capacity Point Raw Capacity (Bytes) Raw Capacity (TiB) Usable Capacity (TiB) # of Virtual Drives 
0 (Base)  52499666960384 48 27.2  7
1 104999333920768 97 57.5  14

Increasing the capacity of your CBS array will result in a higher AWS infrastructure bill, as increasing the number of Virtual Drive have an additional cost associated with them.  However, the Purity data reduction technologies native to CBS will typically save cost relative to using comparably sized native Elastic Block Service on their own.

Limitations

The following are some points to be aware of before starting the process: 

  • No shrinking or reverting to the original capacity point after a request for a capacity upgrade is executed.
  • No purity upgrades during the capacity upgrade process. 

  • A single capacity upgrade process can be run per CBS instance at a time

  • The upgrade process can not check the remaining regional quota of the vCPU of the "I" instance type family. This has to be checked in advance and if additional vCPUs are needed, a quota increase request is required prior to kicking off the capacity expansion.   

Quota 

Pure Cloud Block Store leverages EC2 instance ("i" family) as the backend storage, the EC2 service comes with certain vCPU quota by default to every AWS account per region. And it is importance to check, and request a quota increase if needed. Below are the types of EC2 instance used per CBS model SKU and how many vCPU required for each: 

  • For CBS V10 Model based on i3.2xlarge instance type. Each i3.2xlarge instance requires 8 vCPU. The total vCPU required to upgrade are is  8 * 7 (Virtual Drives) = 56 vCPU. 

  • For CBS V20 Model based on i3.4xlarge and i3.8xlarge instance type. 

    • The first capacity point works by adding 7 virtual drives of the instances type i3.4xlarge. Each i3.4xlarge instance requires 16 vCPU. The total vCPU required to upgrade are 16 * 7 (Virtual Drives) = 112 vCPU. 

    • The second capacity point works by adding 7 virtual drives of the instances type i3.8xlarge. Each i3.8xlarge instance requires 32 vCPU. The total vCPU required to upgrade are 32 * 7 (Virtual Drives) = 224 vCPU.  

  • For CBS V20 Model based on i3en.3xlarge instance type. Each i3en.3xlarge instance requires 12 vCPU. The total vCPU required to upgrade are is  12 * 7 (Virtual Drives) = 84 vCPU. 

For more information check Architecture and Underlying Resources.

It is IMPORTANT to check the available vCPU quota applied in your region before carrying on with the array capacity upgrade.  

► Check EC2 vCPU Quota

You should ensure that your total vCPU maximum limits are sufficient to add an additional shelf of Pure Cloud Block Store Virtual Drives. To view your current limits, go to your AWSconsole.

  1. Open the Service Quotas console. (Make sure you have the right region selected from the top-right of the console)
  2. Choose Amazon Elastic Cloud Computing (EC2).
  3. Choose Running On-Demand Standard (A, C, D, H, I, M, R, T, Z) instances.
  4. Check Applied quota value shows how many vCPU are applied to the region. Utilization value shows how much is used from the applied value.
    clipboard_e942945784826be4fc4e35ae34f231e73.png
► Request EC2 vCPU Quota

Complete the following steps to request vCPU quota increase from AWS Portal: 

  1. Open the Service Quotas console. (Make sure you have the right region selected from the top-right of the console)
  2. Choose Amazon Elastic Cloud Computing (EC2).
  3. Choose Running On-Demand Standard (A, C, D, H, I, M, R, T, Z) instances.
  4. Choose Request quota increase.
    clipboard_e008b28ae176d2ef5e15995e5dc830dfd.png

Duration

The process takes from 20 - 40 minute to complete. The mechanism of increasing the capacity of a Pure CBS instance on AWS works by adding (an) additional shelf of virtual drives to the stack.

Check Health Status

Before starting the process and performing the upgrade, the array hardware has to be healthy, with no active critical alerts triggered. You can view the health status of the array by either using the GUI or CLI.

► Using GUI
  1. An overview of the array health can be viewed when you login from the dashboard.
  2. From the left panel, select Health > Hardware for more hardware status details. 
► Using CLI

1. Using purehw list to get the health status of all the underlying infrastructure: Controller VMs,Virtual Drives, and Network interfaces.  

purehw list

Output Example: 

purecli@cbsavspv2> purehw list
Name      Status  Identify  Slot  Index  Speed        Temperature  Voltage  Details
CT0       ok      -         -     0      -            -            -        -
CT0.ETH0  ok      -         0     0      100.00 Gb/s  -            -        -
CT0.ETH1  ok      -         1     1      100.00 Gb/s  -            -        -
CT0.ETH2  ok      -         2     2      100.00 Gb/s  -            -        -
CT0.ETH3  ok      -         3     3      1.00 Gb/s    -            -        -
CT1       ok      -         -     1      -            -            -        -
CT1.ETH0  ok      -         0     0      100.00 Gb/s  -            -        -
CT1.ETH1  ok      -         1     1      100.00 Gb/s  -            -        -
CT1.ETH2  ok      -         2     2      100.00 Gb/s  -            -        -
CT1.ETH3  ok      -         3     3      1.00 Gb/s    -            -        -
SH0       ok      -         -     0      -            -            -        -
SH0.BAY0  ok      -         -     0      -            -            -        -
SH0.BAY1  ok      -         -     1      -            -            -        -
SH0.BAY2  ok      -         -     2      -            -            -        -
SH0.BAY3  ok      -         -     3      -            -            -        -
SH0.BAY4  ok      -         -     4      -            -            -        -
SH0.BAY5  ok      -         -     5      -            -            -        -
SH0.BAY6  ok      -         -     6      -            -            -        -

2. Using puredrive list to get the health status of the virtual drives only.

puredrive list

Output Example: 

pureuser@am-662-test-cbs> puredrive list
Name       Type           Status   Capacity  Details
SH0.BAY0  virtual  healthy  3.38T     -
SH0.BAY1  virtual  healthy  3.38T     -
SH0.BAY2  virtual  healthy  3.38T     -
SH0.BAY3  virtual  healthy  3.38T     -
SH0.BAY4  virtual  healthy  3.38T     -
SH0.BAY5  virtual  healthy  3.38T     -
SH0.BAY6  virtual  healthy  3.38T     -

Check CBS Array Usable Space

The reason for adding capacity to your array is generally that the array is getting utilized and usable capacity is getting full. You can view the used capacity of the array by either using the GUI or CLI. 

The array will also send warning alerts by default when the used capacity gets to 80%, 90%,95% threshold. For more information check Alert #25 

► Using GUI

Capacity can be checked on the main Dashboard when you log in to the array. 

► Using CLI 
purearray list --space

Output Example:  

pureuser@cbsavspv2> purearray list --space
Name                 Capacity  Parity  Provisioned Size  Virtual  Thin Provisioning  Data Reduction  Total Reduction  Unique  Snapshots  Shared  System  Replication  Total
tsimacek-1702475986  13.52T    100%    0                 0.00     0%                 -               -                0.00    0.00       0.00    0.00    0.00         0.00 

Perform Capacity Upgrade

To modify the capacity of the CBS array, you can use the array cloud-capacity endpoint in CLI or REST. This will trigger a backend process that will update the CBS array capacity. The array capacity can be updated only to values defined by the capacity steps endpoint. When an existing capacity update request is in progress, any new request to update of the capacity will receive an error response.

For non-CBS arrays, this feature is not supported and requests will receive an error response.

► Using CLI 

The capacity upgrade can be achieved using the cloud-capacity endpoint. 

purearray cloud-capacity --help
usage: purearray cloud-capacity [-h] {list,setattr}

{list,setattr}
    list             get current capacity or list supported capacities
    setattr          update the capacity

options:
  -h, --help         show this help message and exit

1. Check the status of the capacity update. It can be on of the following values: 

  •   idle - default state, no update is in progress, updates are allowed
  •   expanding - update is in progress,  further updates are not allowed
purearray cloud-capacity list

Output Example:

purecli@am-662-test-cbs> purearray cloud-capacity list
Requested Capacity  Current Capacity  Status     Details
52499666960384      52499666960384   idle  

2. List the available capacity point, the values are in raw capacity in Bytes. You can map raw to usable capacity in the Capacity Points Section.

purearray cloud-capacity list --supported

Output Example (V20 i3en based Model):

pureuser@am-662-test-cbs> purearray cloud-capacity list --supported
Supported Capacity
52499666960384
104999333920768

3. Request a capacity upgrade, use the setattr --requested-capacity flag. 

purearray cloud-capacity setattr --requested-capacity <raw-capacity-in-bytes>

Output Example:

pureuser@am-662-test-cbs> purearray cloud-capacity setattr --requested-capacity 30786325577728
Requested Capacity  Current Capacity  Status     Details
104999333920768      52499666960384     expanding

4. If you check the status of the capacity upgrade after requesting the capacity. You will be getting updates under Details.

purecli@am-662-test-cbs> purearray cloud-capacity list
Requested Capacity  Current Capacity  Status     Details
104999333920768      52499666960384     expanding  Capacity update in progress
► Using REST API

The capacity upgrade can also be achieved using the cloud-capacity endpoint via REST.

1. GET arrays/cloud-capacity List CBS array capacity status, including the progress of the capacity update.

Example using cURL: 

curl -X GET -H "Authorization: Bearer $TOKEN" https://my-array/api/2.29/arrays/cloud-capacity

Response: 

{
  "items": [
    {
      "id":                 "0f58952a-13e4-4182-b1dd-76914257a1f1",
      "name":               "PAWS-array",
      "requested_capacity": 52499666960384,
      "current_capacity":   52499666960384,
      "status":             "idle",
      "detail":             null
    }
  ],
}

2. GET /arrays/cloud-capacity/supported-steps List the available CBS capacity points 

Example using cURL: 

curl -X GET -H "Authorization: Bearer $TOKEN" https://my-array/api/2.29/arrays/cloud-capacity/supported-steps"

Response: 

{
  "items": [
    {
      "supported_capacity": 52499666960384,
    },
    {
      "supported_capacity": 10995116277760,
    },
    ...
  ],
}

3. PATCH /arrays/cloud-capacity Update the (raw) requested capacity. 

Example using cURL: 

curl -X PATCH -H "Authorization: Bearer $TOKEN" "https://my-array/api/2.29/arrays/cloud-capacity" -d "{ \"requested_capacity\": 10995116277760}"

Response: 

{
  "items": [
    {
      "id":                 "0f58952a-13e4-4182-b1dd-76914257a1f1",
      "name":               "my-array",
      "requested_capacity": 52499666960384,
      "current_capacity":   52499666960384,
      "status":             "idle",
      "detail":             null
    }
  ],
}

GET Request (after triggering the capacity expansion)

{
  "items": [
    {
      "requested_capacity": 21990232555520,
      "current_capacity":   10995116277760,
      "status":             "expanding",
      "detail":             null
    }
  ],
}

Troubleshooting

During the procedure of adding capacity, the array might hit the quota limit of the vCPU in the region required to finish the capacity update. Further, the capacity update will fail when cloud resources are removed or misconfigured or its provisioning status continually fails. The alert is also triggered when capacity update takes more time than expected. Those issues will generate an alert (Alert #256) sent to the configured email alert watchers and to the designated Pure1 account.

Alert code Severity Description Resolution
256 Warning Capacity update takes more time than expected - Check Quota Section.
- If Quota is not the issue, reach out to Pure Support.

Furthermore, the error can also be checked with array GUI or CLI. 

► Using GUI

1. From the Dashboard, you can see list of the recent alert on the right-top side: 

2. For more details, select Health from the left panel, then select Alerts:
clipboard_e1b3a416372bdfd251e3e95098fcc8ef3.png

► Using CLI

1. From within the CLI, check the status of the capacity update, the details value will list the issue:  

purecli@am-662-test-cbs> purearray cloud-capacity list
Requested Capacity  Current Capacity  Status     Details
52499666960384      52499666960384    expanding  Capacity update is taking more time than expected

2. You can use puremessage list to list the alert. 

purecli@am-662-test-cbs> puremessage list
ID   Time                     Severity  Category  Code  Component  Name                              Event                                                       Expected     
18   2023-12-03 05:49:26 EST  warning   array     194   security   pureuser                          The user pureuser is configured with the default password.  -              
106  2023-12-04 12:03:57 EST  warning   array     256   CBS Array  am-662-test-cbs/timer             Capacity update is taking more time than expected           46179488366592  30786325577728