Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Volume type standard #351

Merged
merged 39 commits into from
Apr 10, 2024
Merged
Changes from 21 commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
6f03aac
Create scs-0112-v1-volume-type-standard.md
josephineSei Jul 25, 2023
7cccebd
Update scs-0112-v1-volume-type-standard.md
josephineSei Sep 28, 2023
7380a31
Update scs-0112-v1-volume-type-standard.md
josephineSei Sep 29, 2023
28acb9e
Update scs-0112-v1-volume-type-standard.md
josephineSei Sep 29, 2023
fa964a9
Apply suggestions from code review
josephineSei Oct 6, 2023
4f00047
Update scs-0112-v1-volume-type-standard.md
josephineSei Oct 6, 2023
8c8dc01
Update scs-0112-v1-volume-type-standard.md
josephineSei Nov 6, 2023
7a1d2ca
Update Standards/scs-0112-v1-volume-type-standard.md
josephineSei Nov 6, 2023
59b66c6
Update Standards/scs-0112-v1-volume-type-standard.md
josephineSei Nov 9, 2023
b5e5ed7
Apply suggestions from code review
josephineSei Nov 9, 2023
0792426
Update Standards/scs-0112-v1-volume-type-standard.md
josephineSei Nov 10, 2023
021a3c2
Update scs-0112-v1-volume-type-standard.md
josephineSei Nov 28, 2023
f410211
Update scs-0112-v1-volume-type-standard.md
josephineSei Nov 28, 2023
2ac3269
Update scs-0112-v1-volume-type-standard.md
josephineSei Nov 28, 2023
c4c4d6b
Apply suggestions from code review
josephineSei Dec 1, 2023
4e2f0fd
Update scs-0112-v1-volume-type-standard.md
josephineSei Dec 1, 2023
ee2678d
Update scs-0112-v1-volume-type-standard.md
josephineSei Dec 1, 2023
bc77c1c
Apply suggestions from code review
josephineSei Jan 12, 2024
374e8c5
Update scs-0112-v1-volume-type-standard.md
josephineSei Jan 12, 2024
6a59573
Update scs-0112-v1-volume-type-standard.md
josephineSei Feb 12, 2024
f616d54
Rename scs-0112-v1-volume-type-standard.md to scs-XXXX-v1-volume-type…
josephineSei Feb 14, 2024
8a2b0d1
Update scs-XXXX-v1-volume-type-standard.md
josephineSei Mar 6, 2024
8620598
Update scs-XXXX-v1-volume-type-standard.md
josephineSei Mar 6, 2024
ff5d6f9
Merge branch 'main' into volume-type-standard
josephineSei Mar 7, 2024
3ac8ed5
Create volume-types-check.py
josephineSei Mar 12, 2024
03cc149
Update volume-types-check.py
josephineSei Mar 12, 2024
427a286
Apply suggestions from code review
josephineSei Mar 14, 2024
504c48c
Update scs-XXXX-v1-volume-type-standard.md
josephineSei Mar 14, 2024
4b479d5
Update scs-XXXX-v1-volume-type-standard.md
josephineSei Mar 18, 2024
aa68c77
Apply suggestions from code review
josephineSei Mar 18, 2024
80940e5
Update volume-types-check.py
josephineSei Mar 19, 2024
fd1eed8
Update volume-types-check.py
josephineSei Mar 19, 2024
9f6fa4c
Apply suggestions from code review
josephineSei Mar 19, 2024
311eac3
Update scs-XXXX-v1-volume-type-standard.md
josephineSei Mar 19, 2024
bd3a0e5
Merge branch 'main' into volume-type-standard
josephineSei Mar 19, 2024
50cf788
shortened paragraph of default volume type
josephineSei Mar 21, 2024
d0b05bd
Merge branch 'main' into volume-type-standard
josephineSei Mar 21, 2024
2f8b68c
Merge branch 'main' into volume-type-standard
josephineSei Apr 10, 2024
3b3f3f0
add correct standard number before merge
josephineSei Apr 10, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 128 additions & 0 deletions Standards/scs-XXXX-v1-volume-type-standard.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
---
title: Volume Type Standard
type: Standard
status: Draft
track: IaaS
---

## Introduction

Volume Types are used to classify volumes and provide a basic decision for what kind of volume should be created. These volume types can sometimes be very backend-specific and it might be hard for a user to choose the most suitable volume type, if there is more than one type.
josephineSei marked this conversation as resolved.
Show resolved Hide resolved

### Glossary

The following special terms are used throughout this standard document:
| Term | Meaning |
|---|---|
| volume | OpenStack ressource, virtual drive which usually resides in a network storage backend |
josephineSei marked this conversation as resolved.
Show resolved Hide resolved
| AZ | Availability Zone |
| Volume QoS | Quality of Service object for Volumes |

## Motivation
josephineSei marked this conversation as resolved.
Show resolved Hide resolved

We want to standardize a few varieties of volume types. While a user can choose simple things like size when creating a volume, Volume Types define a few broader aspects of a volume. Encryption of volumes for example is solely decided by the volume type. While the option with which the volume will be replicated is a mix between definition in the volume type and backend specific configuration, but it's visibility can only be reached in the volume type. In the following part, we want to state, which varieties of volume types are REQUIRED, RECOMMENDED or only OPTIONAL within a SCS-compatible deployment.

## Design Considerations

All Considerations can be looked up in detail in the [Decision Record for the Volume Type Standard.](https://github.com/SovereignCloudStack/standards/blob/main/Standards/scs-0111-v1-volume-type-decisions.md)
josephineSei marked this conversation as resolved.
Show resolved Hide resolved

### Systematic Description of Volume Types

To test whether a deployment has volume types with certain aspects, the discoverability of the parameters in the volume type has to be given. As for the time this standard is created, there is no way for users to discover all aspects through OpenStack commands. Therefore the aspects, that are fulfilled within a volume type, should be stated in the beginning of the **description** of a volume type in the following manner:
josephineSei marked this conversation as resolved.
Show resolved Hide resolved

`[scs:aspect1][scs:aspect2]...`
josephineSei marked this conversation as resolved.
Show resolved Hide resolved

There is no sorting of aspects required. Every aspect should only be mentioned to the maximal amount of one.
mbuechse marked this conversation as resolved.
Show resolved Hide resolved

### Standardized Aspects

The following table shows, which aspects are considered in this standard. The last column shows how the description of the volume type has to be adjusted, if the aspect is fulfilled:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see the value of the additional column. The introductory paragraph is not very good though: the comma is wrong, and it's quite verbose. Why not use my proposal, which simply said

The following features are recognized.

Or if you must

The following features are recognized by this standard.

(But to my taste this is already a bit redundant; it's the point of the standard to state what's in the standard, so we need not repeat "in this standard" or "by this standard" all the time.)

josephineSei marked this conversation as resolved.
Show resolved Hide resolved

| Aspect | Part of Standard | standardized description |
| ---- | ---- | ------ |
| Encryption | **Recommended** | **"[scs:encrypted]"** |
| Replication | **Recommended** | **"[scs:replicated]"** |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would still like to see the meaning column here.
The "Part of Standard" heading sounds quirky and needs to be renamed (or at the very least, make "standard" lower case)


It is possible to use multiple of those aspects within one volume type. SCS will only ever look, if there is a volume type that has an aspect, but there don't have to be different volume types.
Example: one volume type that uses LUKS-encryption with a ceph storage with inherent replication would fulfill all recommendations of this standard.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
It is possible to use multiple of those aspects within one volume type. SCS will only ever look, if there is a volume type that has an aspect, but there don't have to be different volume types.
Example: one volume type that uses LUKS-encryption with a ceph storage with inherent replication would fulfill all recommendations of this standard.
It is possible that a single volume type combines multiple features.
For instance, one volume type that uses LUKS-encryption with a ceph storage with inherent replication would fulfill all recommendations of this standard.


## DEFAULT volume type

There is always a default volume type defined in an OpenStack deployment. This volume type is created in the setup of cinder and will always be present in any OpenStack deployments under the name `__default__`. The SCS does not have any requirements about this volume type at this moment, instead deployers are free to choose what fits best in their environment. Conversely, a cloud user can not expect any specific behavior or properties from volume types named `__default__`.
josephineSei marked this conversation as resolved.
Show resolved Hide resolved

The parameters of volume types described in this standard do not have to be applied to the chosen default volume type. And the SCS will not make any assumptions about parameters being present in the default volume type.
josephineSei marked this conversation as resolved.
Show resolved Hide resolved

## REQUIRED volume types

Currently the SCS will not require volume types with certain specification. This will change in the future.
josephineSei marked this conversation as resolved.
Show resolved Hide resolved

## RECOMMENDED volume types

The SCS recommends to have one or more volume types, that satisfy the need for encrpytion and replication.
josephineSei marked this conversation as resolved.
Show resolved Hide resolved

### Encryption

There SHOULD at least be one volume type with the encryption aspect.
Copy link
Contributor

@mbuechse mbuechse Mar 13, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This sentence is redundant. The rest of the section belongs under a new section "Implementation notes" (which should be a Supplement).


Encryption for volumes is an option which has to be configured within the volume type. As an admin it is possible to set encryption-provider, key size, cipher and control location. Additionally to be discoverable by users an admin has to edit the description and add `[scs:encrypted]` at the beginning or after another scs aspect. It should look like this example:
josephineSei marked this conversation as resolved.
Show resolved Hide resolved

```text
openstack volume type show LUKS
+--------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+--------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
| access_project_ids | None |
| description | [scs:encrypted] This volume uses LUKS-encryption |
| id | d63307fb-167a-4aa0-9066-66595ea9fb21 |
| is_public | True |
| name | LUKS |
| qos_specs_id | None |
+--------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
```

### Replication

There SHOULD at least be one volume type with the replication aspect.
Copy link
Contributor

@mbuechse mbuechse Mar 13, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This sentence is redundant. The rest of the section belongs under a new section "Implementation notes" (which should be a Supplement).


Replication states, whether or not there are multiple replicas of a volume. Thus answers the question, whether the data could survive a node outage. Unfortunately there are two ways replication can be achieved:
josephineSei marked this conversation as resolved.
Show resolved Hide resolved

1. In the configuration of a volume type. It then is visible as extra_spec in the properties of a volume type.
2. Via the used backend. Ceph for example provides automatic replication, that does not need to be specified in the volume type. This is currently not visible for users.

To fulfill this recommentation for now, the admin needs to add `[scs:replicated]` at the beginning or after any other scs aspect into the descriotion of the volume type.
Copy link
Contributor

@mbuechse mbuechse Mar 13, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This sentence is redundant: it states something that has been stated before quite clearly, and I do fear that we risk inconsistencies and make people uncertain as to where to find authoritative information at all.

edit I realize that the way I phrased this comment before was inappropriate, and therefore I rephrased it.

josephineSei marked this conversation as resolved.
Show resolved Hide resolved

### Example
mbuechse marked this conversation as resolved.
Show resolved Hide resolved

One volume type that is configured as an encrypted volume type in a ceph backend, with automated replication would fit both recommendations and will be enough to comply to this part of the volume type standard.

It should look like the following part:

```text
+--------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+--------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
| access_project_ids | None |
| description | [scs:encrypted][scs:replicated] Content will be replicated three times to ensure consistency and availability for your data. LUKS encryption is used. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| description | [scs:encrypted][scs:replicated] Content will be replicated three times to ensure consistency and availability for your data. LUKS encryption is used. |
| description | [scs:encrypted, replicated] Content will be replicated three times to ensure consistency and availability for your data. LUKS encryption is used. |

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i changed it.

| id | d63307fb-167a-4aa0-9066-66595ea9fb21 |
| is_public | True |
| name | hdd-three-replicas-LUKS |
| properties | |
| qos_specs_id | None |
+--------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
```

## OPTIONAL volume types

Any other aspects of volume types, that can be found in the decision record are OPTIONAL. They SHOULD NOT be referenced in the way this standard describes. Some of them already are natively discoverable by users, while others could be described in the name or description of a volume type. Users should look into the provided volume types of the CSPs, if they want to use some of these other aspects.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Drop this paragraph. If it's unclear by now that other features are not recognized by this standard, and that arbitrary volume types may still exist, then we must improve the relevant places.


## Related Documents

[Here is the decision record document.](https://github.com/SovereignCloudStack/standards/blob/main/Standards/scs-0111-v1-volume-type-decisions.md)
josephineSei marked this conversation as resolved.
Show resolved Hide resolved

## Conformance Tests

As there are currently no REQUIRED volume types, we can only look for the RECOMMENDED aspects and thus executing a conformance test is not a must.
Furthermore the recommended aspects currently have to be described in the description by the deployer. In future versions we aim to integrate some extra_specs for them in upstream OpenStack
And it is also possible that a single volume type can currently fulfill all RECOMMENDED aspects.

The current test will check for the presence of `[encrypted]` and `[replicated]` in the description of at least one volume type.
Loading