# Storage Classes

Storage Classes provide seamless block-storage operations for end-users,
by abstracting the underlying block storage implementation details,
while providing cloud-operators with a performance-predictable, linear
capacity growth.

* **SSD** (Solid State Drive) Class:

  This class uses one or more all-flash (SSD media) VPSAs as its building
  blocks.
  It is designed for high-speed performance, offering significantly lower
  latency and higher IOPS (Input/Output Operations Per Second) than HDDs.

  Suited to high, predictable performance, for example, transactional
  databases and real-time apps.
* **HDD** (Hard Disk Drive) Class:

  This class uses one or more HDD-based VPSAs as its building blocks.
  It is optimized for high-capacity and throughput rather than rapid
  random access, making it slower than SSDs due to the time needed for
  physical parts to move.

  A more cost-effective option, suited to scenarios for large datasets
  where occasional latency is acceptable, for example, backups or log
  processing.

The Storage Classes page shows each storage class and its current resource
capacity, health, limits, and related resources.

From this page, you can:

* Review the available storage classes.
* Open a storage class to see its details.
* View the volumes, snapshots, and VPSAs linked to a storage class.
* Attach a VPSA to a storage class.

## Storage Classes management

### Viewing storage classes

To view the storage classes that are available in the system:

1. Select **Storage Management > Storage Classes**.

   The table of **Storage Classes** appears, showing the following fields:
   * **Name**

     The storage class name.

     This identifies the storage class in the list.
   * **Capacities**
     * **Physical Capacity - Usable**

       The amount of physical storage capacity that can be used.
     * **Physical Capacity - Used**

       The amount of physical storage capacity that is currently in use.
     * **Physical Capacity - Free**

       The amount of physical storage capacity that is still available.
     * **Virtual Capacity - Total**

       The total virtual capacity presented by the storage class.
     * **Virtual Capacity - Provisioned**

       The amount of virtual capacity that is already provisioned.
     * **Virtual Capacity - Free**

       The amount of virtual capacity that is still available for new use.
   * **Max New Volume**

     The largest size allowed for a newly created volume in this storage
     class.
   * **Available Volumes**

     The number of additional volumes that can still be created.
   * **VPSAs**

     The number of VPSAs attached to the storage class.
   * **Volume Types**

     The number of volume types associated with the storage class.
   * **Default**

     Indicates whether this storage class is the default choice.
   * **Built In**

     Indicates whether this storage class is built in, and not a custom
     storage class.
   * **State**

     The current operational state of the storage class.

     Possible values:
     * **Ready**: Usable
     * **Deleting**: In the process of being removed
     * **Failed**: Not usable:Failed or unhealthy
   * **Capacity Mode**

     The current capacity handling mode for the storage class, indicating
     whether the storage class is operating normally or approaching a
     capacity-related risk.

     Possible values:
     * **Normal**

       Indicates that the storage class is in its normal operating
       condition, regarded as **Healthy**.
     * **Degraded**

       Indicates that the storage class is in a reduced-capacity condition.
     * **Emergency**

       Indicates that the storage class is in a serious capacity
       condition, regarded as **Unhealthy**.
   * **Health State**

     The current health condition of the storage class.

     Possible values:
     * **Healthy**
     * **PartiallyFailed**
     * **Failed**
   * **Limit State**

     The current limit condition of the storage class, how close
     the storage class is to its configured limits, and whether the VPSAs
     in that storage class are still within normal operating bounds.

     Possible values, in increasing levels of severity:
     * **Normal**
     * **Alert**
     * **Degraded**
     * **Emergency**
2. Select a storage class to view further details.

### Viewing a storage class details

To view a storage class details:

1. Select **Storage Management > Storage Classes**.

   The table of **Storage Classes** appears.
2. Select the storage class that you want to inspect.

   The storage class detail screen appears, with the following sections:
   * [Storage class details pane](#storage-class-details) in the upper part of the screen.
   * The **Tabs** section in the lower part of the screen:
     * [Storage class Volumes tab](#storage-class-volumes-tab)
     * [Storage class Snaphots tab](#storage-class-snapshots-tab)
     * [Storage class VPSAs tab](#storage-class-vpsas-tab)

<a id="storage-class-details"></a>

#### Storage class details pane

The main details section in the upper part of the screen displays the
following panes:

* **Info** details displaying:
  * The storage class operational **State** and **Health State**.
  * **Limit State** - the current limit condition for the storage class.
  * **Name**: The storage class name.
  * **ID**: The storage class unique identifier.
  * **Encryption**: Indicates whether encryption is enabled for the
    storage class.
  * **Deduplication**: Indicates whether deduplication is enabled for
    the storage class.
  * **Compression**: Indicates whether compression is enabled for the
    storage class.
  * **Max. Volumes per VPSA**: The maximum number of volumes allowed on
    each VPSA of the storage class.
  * **Max New Volume**: The largest size allowed for a new volume in this
    storage class.
* **Capacity** guages:

  Guages dashboard displaying **Used** and **Free** capacity for:
  * **Provisioning Capacity**
  * **Physical Capacity**
* **Resources** summary, providing the totals of:
  * **User Volumes**
  * **Snapshots**
  * **VPSAs**

  A detail tab for each type of resource is available in the lower
  part of the screen.

<a id="storage-class-volumes-tab"></a>

#### Storage class Volumes tab

The **Volumes** tab displays the list of volumes of this storage class,
with the following columns:

* **Name**: The volume name.
* **VPSA**: The VPSA that hosts the volume.
* **Owner**: The ownership type indicates whether the volume is
  **User**-defined (regular volume) or **System**-assigned
  (such as a volume marked for deletion).
* **Size**: The provisioned size of the volume.
* **Volume Type**: The volume type assigned to the volume.
* **Account**: The name of the account that owns the volume.
* **User**: The username of the user associated with the volume.
* **Status**:  The current operational status of the volume.
* **Health**:  The current health status of the volume.
* **Attached VM**: The name of the VM to which the volume is attached,
  if any.
* **Creation Date**: The date and time when the volume was
  created.

<a id="storage-class-snapshots-tab"></a>

#### Storage class Snaphots tab

The **Snaphots** tab displays a table of the storage class snaphots,
and quick filters for rapid location and listing of snapshots matching
selected criteria.

The list of snapshots of this storage class, are displayed with the
following columns:

* **Name**: The snapshot name.
* **Source name**: The name of the source object from which the
  snapshot was taken.
* **Source ID**:  The source object unique identifier.
* **Created At**: The date and time when the snapshot was created.
* **Project**: The project in which the snapshot’s source object
  resides.
* **Account**: The name of the account that owns the snapshot’s project.
* **User**: The username of the user that triggered the snapshot.
* **Status**: The current operational status of the snapshot’s storage
  class.
* **Health**: The current health status of the snapshot’s storage class.
* **Protection Group**: The protection group in which the snapshot’s
  source object is a member.
* **Storage Classes**: The storage classes of the snapshot’s source
  objects.
* **VPSAs**: The VPSA hosting the snapshot.
* **Creation Date**: The date and time when the snaphot was created.

<a id="storage-class-vpsas-tab"></a>

#### Storage class VPSAs tab

The **VPSAs** tab displays the list of VPSAs of this storage class,
with the following columns:

* **Name**

  The VPSA name.
* **Nova ID**

  The VPSA’s Nova identifier, which might differ from the display name.
* **State**: The current operational state of the VPSA.
* **Physical Capacity - Usable**: The amount of usable physical capacity
  on the VPSA.
* **Physical Capacity - Used**: The amount of physical capacity already in
  use on the VPSA.
* **Physical Capacity - Free**: The amount of unused physical capacity
  still available on the VPSA.
* **Virtual Capacity - Total**: The total virtual capacity available on
  the VPSA.
* **Virtual Capacity - Provisioned**: The virtual capacity already
  provisioned on the VPSA.
* **Virtual Capacity - Free**: The virtual capacity still available on the
  VPSA.
* **Volume Count**: The number of volumes currently on the VPSA.
* **Version**: The VPSA’s zStorage version.
* **Pool Type**: The VPSA’s storage pool type.
* **Engine**: The VPSA’s IO engine type.
* **Snapshot Count**: The number of snapshots on the VPSA.
* **Capacity Mode**: The VPSA’s current current capacity handling mode for
  its storage class.

### Attaching a VPSA to a storage class

There may be a number of reasons for attaching a VPSA to a storage class,
such as extending the storage capacity or for providing for more than the
current maximum number of volumes.

To attach a VPSA to a storage class:

1. Select **Storage Management > Storage Classes**.

   The table of **Storage Classes** appears.
2. Select the storage class to which you want to attach a VPSA.

   The storage class detail screen appears.
3. In the top toolbar, select **Attach VPSA**.

   The **Attach VPSA** dialog opens.
4. In the **Attach VPSA** dialog, enter the required fields:
   * **IP Address**: The IP address of the VPSA that you want to attach.
   * **Token / Temporary password**: The token or temporary password used
     to authenticate the attach action.

     One of:
     * **Token**: The **Access Key**, available in the VPSA’s admin
       **User Information**:
       1. In the VPSA UI, select the username at the top right.

          The **User Information** screen opens.
       2. In the **Authentication** section, copy the **Access Key**
          value.
     * **Temporary password** emailed to the admin on creation of the
       VPSA.
   * **VPSA Nova ID**: The Nova ID of the VPSA that you want to attach.
5. To apply attaching the VPSA to the storage class, select **Finish**.

## Recommended best practices

* Storage class limits are preset to provisioned capacity too, which are
  most likely reached first, before physical capacity is reached.
  Monitor your storage class total provisioned capacity and add capacity as
  additional VPSAs in advance, to avoid volume creation failures.
  The same applies to volume-count per VPSA limits.
  Make sure that you add capacity in the form of additional VPSAs to the
  storage class before you hit the limit.
* When VPSAs are added to a storage class, VSC doesn’t re-distribute the
  volumes across VPSAs.
  In case there’s a need to do that, for example, in case of a single VPSA
  performance/overload issue, administrators can live-redistribute volumes
  across VPSAs within the same storage class.
* Check the health, state, and limit indicators before you make
  changes.
* Use the available filters when lists become large.
* Before attaching a VPSA to a storage class, verify the IP address,
  token or temporary password, and VPSA Nova ID carefully.

## Troubleshooting

### You cannot find the storage class you need

* Use the **Filter** field on the main page to narrow the list.
* Check whether the page is shown in the view that you expect.

### The storage class details you need are not visible

* Make sure the correct storage class row is selected.
* Open the correct tab: **Volumes**, **Snapshots**, or **VPSAs**.

### A linked resource is difficult to locate

* Use the filter fields available on the tab.
* Review the status and health columns to identify the correct row.

### A VPSA attach action does not complete as expected

* Recheck the values entered in **IP Address**.
* Recheck the values entered in **Token / Temporary password**.
* Recheck the values entered in **VPSA Nova ID**.
* Confirm that you selected the intended storage class before starting
  the attach action.
