Skip to main content
Pure Technical Services

Customer Driven Capacity Upgrades | Pure CBS on Azure

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 Azure. 

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, approve the JIT request on their managed application. 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. Notice that each capacity upgrade will resize the existing CBS backend disk with larger disks transparently. 

Pure Cloud Block Store customer driven capacity upgrade is Non-Disruptive Upgrade (NDU) procedure. It supports multi-hop capacity point expansion, and the approval for Just-in-Time (JIT) is removed.

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. 

Azure Disk Size: The size of the deployed Azure Managed disks used for persistent storage. You can check this size of those disks from within the CBS Managed Resource Group. 

► Capacity Points for V10 SKU

Pure CBS V10 SKU has two capacity points. It starts with 2.25 TiB usable capacity. 

Capacity Point Raw Capacity (Bytes) Raw Capacity (TiB) Usable Capacity (TiB) Azure Disk Size (GiB)
0 (Base)  3848290697216 3.5 2.25 256
1 76 96581394432 7 4.65 512
2 15393162788864 14 9.45 1024
► Capacity Points for V20 SKU

Pure CBS V20 SKU has 12 capacity points. It starts with 4.65 TiB usable capacity, and scales up to 125.14 TiB.

Capacity Point Raw Capacity (Bytes) Raw Capacity (TiB) Usable Capacity (TiB) Azure Disk Size (GiB)
0 (Base)      76 96581394432          7 4.65 512
1 15393162788864 14 9.45 1024
2 30786325577728 28 19.05 2048
3 46179488366592 42 28.65 3072
4 61572651155456 56 38.74 4096
5       76965813944320 70 49.54 5120
6 92358976733184 84 60.34 6144
7 107752139522048 98 71.14 7168
8 123145302310912 112 81.94 8192
9 138538465099776 126 92.74 9216
10        153931627888640 140 103.54 10240
11 169324790677504 154 114.34 11264
12 184717953466368 168 125.14 12288

Increasing the capacity of your CBS array will result in a higher Azure infrastructure bill, as larger Managed Disk sizes have more cost associated with them.  However, the Purity data reduction technologies native to CBS will typically save cost relative to using comparably sized native Managed Disks 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 Managed Disk. This has to be checked in advance and if additional managed disk space is needed, a quota increase request is required prior to kicking off the capacity expansion.   

Quota 

Pure Cloud Block Store leverages Azure Managed Disks as the backend storage, the managed disk service comes with certain quota by default to every subscription per region. Below are the two types of managed disks used per CBS model SKU: 

  • For CBS R2 Model based on Azure Premium SSD v2, Azure offers up to 32 TiB per region per subscription by default, but supports higher capacity by request. To request an increase in capacity, request a quota increase or contact Azure Support.

  • For CBS R1 Model based on Azure Ultra SSD, Azure offers up to 32 TiB per region per subscription by default, but ultra disks support higher capacity by request. To request an increase in capacity, request a quota increase or contact Azure Support.

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

► Check Azure Managed Disk Quota

To view your current storage account quotas for a subscription in a given region, follow these steps:

  1. From the Azure portal, select Quotas and then select Compute. 
  2. Locate the subscription, region, managed disk type for which you want to check your manged disk quota.
    clipboard_e80c22f59e7327dd33aa3d6e20c21c3e6.png

To check the current quota value and the limit programmatically, you can use Azure CLI or Azure PowerShell queries: 

1. For CBS R2 Model based on Azure Premium SSD v2, query VM usage endpoint with filtering for PremiumV2TotalDiskSizeInGB.

CLI

az vm list-usage --location $location --query "[?localName=='PremiumV2TotalDiskSizeInGB']"

PowerShell

Get-AzVMUsage -Location $location | Where-Object { $_.Name.LocalizedValue -eq "PremiumV2TotalDiskSizeInGB" }

Example using PowerShell

PS /Users/amazouz> Get-AzVMUsage -Location $location | Where-Object { $_.Name.LocalizedValue -eq "PremiumV2TotalDiskSizeInGB" }

Name                       Current Value  Limit  Unit
----                       -------------  -----  ----
PremiumV2TotalDiskSizeInGB         21888 102400 Count

2. For CBS R1 Model based on Azure Ultra SSD, query VM usage endpoint with filtering for UltraSSDTotalSizeInGB.

CLI

az vm list-usage --location $location --query "[?localName=='UltraSSDTotalSizeInGB']"

PowerShell

Get-AzVMUsage -Location $location | Where-Object { $_.Name.LocalizedValue -eq "UltraSSDTotalSizeInGB" }

Example using PowerShell

PS /Users/amazouz> Get-AzVMUsage -Location $location | Where-Object { $_.Name.LocalizedValue -eq "UltraSSDTotalSizeInGB" }

Name                  Current Value Limit  Unit
----                  ------------- -----  ----
UltraSSDTotalSizeInGB             0 32768 Count
► Request Azure Managed Disk Quota

Follow these steps to request manged disk quota increase from Azure Portal: 

  1. From the Azure portal, select Quotas and then select Compute. 

  2. Locate the subscription, region, managed disk type for which you want to increase your manged disk quota. Then select "Create new support request" icon.
    clipboard_e50cdb345f019478e057b73f525b6d9b1.png

  3. In the New support request, select Quota type: "Storage: Managed Disks Limits".
    clipboard_ecf18eeca1528a91713839af03e7cae58.png 

  4. In the Additional details dialog, select the requests details, enter the new limit, then select the region.
    clipboard_efdbaa24d95644b66ce34bc8df3cce593.png

For more information visit Azure Quota Documentation.

Duration

The process takes from 1 to 2 hours to complete. The mechanism of increasing the capacity of a Pure CBS instance works by extending the backend storage (Azure Managed Disk) one by one. 

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: 
    clipboard_eb62ba76646e4faa7e6aa2f9a959eb66b.png
  2. From the left panel, select Health > Hardware for more hardware status details. 
    clipboard_e328eb243a6084c0abf10d5e158434a73.png
► Using CLI

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

purehw list

Output Example: 

purecli@cbsavspv2> purehw list
Name       Status  Identify  Slot  Index  Speed       Temperature  Voltage  Details
CT0        ok      -         -     0      -           -            -        -
CT0.BAY0   ok      -         -     0      -           -            -        -
CT0.ETH0   ok      -         0     0      30.00 Gb/s  -            -        -
CT0.ETH1   ok      -         1     1      30.00 Gb/s  -            -        -
CT0.ETH2   ok      -         2     2      30.00 Gb/s  -            -        -
CT0.ETH3   ok      -         3     3      1.00 Gb/s   -            -        -
CT0.ETH4   ok      -         4     4      30.00 Gb/s  -            -        -
CT0.ETH5   ok      -         5     5      30.00 Gb/s  -            -        -
CT1        ok      -         -     1      -           -            -        -
CT1.BAY0   ok      -         -     0      -           -            -        -
CT1.ETH0   ok      -         0     0      30.00 Gb/s  -            -        -
CT1.ETH1   ok      -         1     1      30.00 Gb/s  -            -        -
CT1.ETH2   ok      -         2     2      30.00 Gb/s  -            -        -
CT1.ETH3   ok      -         3     3      1.00 Gb/s   -            -        -
CT1.ETH4   ok      -         4     4      30.00 Gb/s  -            -        -
CT1.ETH5   ok      -         5     5      30.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      -           -            -        -
SH0.BAY7   ok      -         -     7      -           -            -        -
SH0.BAY8   ok      -         -     8      -           -            -        -
SH0.BAY9   ok      -         -     9      -           -            -        -
SH0.BAY10  ok      -         -     10     -           -            -        -
SH0.BAY11  ok      -         -     11     -           -            -        -
SH0.BAY12  ok      -         -     12     -           -            -        -
SH0.BAY13  ok      -         -     13     -           -            -        -
SH0.BAY14  ok      -         -     14     -           -            -        -
SH0.BAY15  ok      -         -     15     -           -            -        -

2. Using puredrive list to get the health status of the drives (managed disks) only.

puredrive list

Output Example: 

pureuser@am-662-test-cbs> puredrive list
Name       Type           Status   Capacity  Details
CT0.BAY0   cache          healthy  1.17T     -
SH0.BAY0   virtual NVRAM  healthy  2.00G     -
SH0.BAY1   virtual NVRAM  healthy  2.00G     -
SH0.BAY2   virtual SSD    healthy  1.98T     -
SH0.BAY3   virtual SSD    healthy  1.98T     -
SH0.BAY4   virtual SSD    healthy  1.98T     -
SH0.BAY5   virtual SSD    healthy  1.98T     -
SH0.BAY6   virtual SSD    healthy  1.98T     -
SH0.BAY7   virtual SSD    healthy  1.98T     -
SH0.BAY8   virtual SSD    healthy  1.98T     -
SH0.BAY9   virtual SSD    healthy  1.98T     -
SH0.BAY10  virtual SSD    healthy  1.98T     -
SH0.BAY11  virtual SSD    healthy  1.98T     -
SH0.BAY12  virtual SSD    healthy  1.98T     -
SH0.BAY13  virtual SSD    healthy  1.98T     -
SH0.BAY14  virtual SSD    healthy  1.98T     -

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. 

clipboard_e985677369a0bb163de1a17dcb95b76a5.png

 

► Using CLI 
purearray list --space

Output Example:  

pureuser@cbsavspv2> purearray list --space
Name Capacity Parity Provisioned Size Thin Provisioning Data Reduction Total Reduction Unique Snapshots Shared System Replication Total
cbsavspv2 4.65T 100% 31395911M 97% 3.9 to 1 >100 to 1 24.85G 160.30G 84.19G 0.00 0.00 269.34G

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
7146825580544        7146825580544     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 Model):

pureuser@am-662-test-cbs> purearray cloud-capacity list --supported
Supported Capacity
7696581394432
15393162788864
30786325577728
46179488366592
61572651155456
76965813944320
92358976733184
107752139522048
123145302310912
138538465099776
153931627888640
169324790677504
184717953466368

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
30786325577728      7696581394432     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
30786325577728      7146825580544     expanding  Capacity update in progress

 

purecli@am-662-test-cbs> purearray cloud-capacity list
Requested Capacity  Current Capacity  Status     Details
30786325577728      10995116277760    expanding  2 drives out of 14 updated successfully

5. On Azure Managed Resource Group 

► 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.X/arrays/cloud-capacity

Response: 

{
  "items": [
    {
      "id":                 "0f58952a-13e4-4182-b1dd-76914257a1f1",
      "name":               "PAZ-array",
      "requested_capacity": 10995116277760,
      "current_capacity":   10995116277760,
      "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.X/arrays/cloud-capacity/supported-steps"

Response: 

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

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": 10995116277760,
      "current_capacity":   10995116277760,
      "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 managed disks 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 Quota limit exceeded Once the customers increase the quota, capacity upgrade will automatically resume. Check Quota Section.
256 Warning Capacity update takes more time than expected If this alert was not generated after a Quota Limit Exceeded alert, then reach out to Pure Support to investigate. 

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_edb05dbd337e912c47c856ecfc19d5dfc.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
46179488366592      30786325577728    expanding  Quota limit exceeded, alert generated

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.  -              
103  2023-12-04 10:01:00 EST  warning   array     256   CBS Array  am-662-test-cbs/quota-validation  Quota limit exceeded                                        46179488366592  30786325577728
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