Storage Volumes
Storage Volumes are specific instantiations of (literally sub-directories created within) a Storage Class. Storage Volumes are the actual storage unit that is ultimately mounted into a job container during a workflows. Storage Volumes can be created by users in an account and reused in multiple workflows, or created on demand by the workflow itself as needed.
You can create, edit, disable, and delete volumes in the UI. Then you can reference these volumes in your workflows. To create a new volume, first click on the Volumes tab on the left and then click the “Add Volume” button in the upper right corner.
You can always create volumes for personal use in your user account, but in order to create volumes that can be used in a shared account you must be an account owner.
Fill in the necessary fields ih the resulting form and press the “Add” button in the lower right corner. Your newly created volume should now be displayed in the dashboard view.
Storage Volumes are backed by Storage Classes which are dependant, in turn, on Storage Drivers. In order for you to successfully create and manage your own volumes, your cluster administrator must have created, installed, and enabled the appropriate Storage Drivers and Classes.
If you need to need to edit your volume after you’ve created it, you can click the vertical ellipses (kebob) menu on the right of your volume name and select the “Edit” option. Make your changes and click “Save” in the lower right of the dialogue box. It is not possible to change the name of your volume once it has been created.
You can also disable and delete your volume using the appropriate buttons in the same menu. If you do want to delete your volume, you must first disable it to ensure that no workflows are currently using it.
Deleting your storage volume may or may not actually delete your data. Your administrator may have configured the underlying Storage Class toretainOnDelete: true
meaning that your data is retained when you delete your volume (not explicitly when you delete your data). If you really need to delete your data, do so explicitly rather than deleting the volume. You should also not depend upon the volume being retained if your data is critical.
Storage Volumes can be manually specified by writing YAML files and using the fuzzball volume create <volume.yaml>
command. You can manage Storage Volumes with the Fuzzball CLI
binary. The root command is fuzzball volume
with the
following sub commands:
Usage:
fuzzball volume [command]
Aliases:
volume, vol
Available Commands:
create Create a volume
delete Delete a volume
disable Disable a volume
enable Enable a volume
info Get volume information
list List volumes
update Update a volume
Flags:
-h, --help help for volume
Global Flags:
-c, --color string Set the color output for fuzzball ($FUZZBALL_COLOR) (default "auto")
--disable-auth Disables auth ($FUZZBALL_DISABLE_AUTH)
--disable-tls Disables tls ($FUZZBALL_DISABLE_TLS)
--insecure Enable insecure connections ($FUZZBALL_INSECURE)
-j, --json Output in json ($FUZZBALL_JSON)
The --help
option will give detailed up-to-date information about the usage of each of these
commands. For instance, fuzzball volume create --help
will give you information on creating a
Storage Volume via the CLI.
For convenience, information about managing Storage Volumes in the CLI with the available subcommands is summarized below.
The CLI--help
docs have the most up-to-date information regarding sub-commands.
You can always create volumes for personal use in your user account, but in order to create volumes that can be used in a shared account you must be an account owner.
Storage Volumes are backed by Storage Classes which are dependant, in turn, on Storage Drivers. In order for you to successfully create and manage your own volumes, your cluster administrator must have created, installed, and enabled the appropriate Storage Drivers and Classes.
In order to create a Storage Volume you first need a volume definition YAML file. Here is an example file:
version: v1
name: myhome
displayName: myhome
description: My home directory
storageClassName: homedir
With the exception of the description
field, all fields are mandatory. The most important field is
storageClassName
which is the storage class name that this volume will use. Here we are using
homedir
as storage class to create/use our home directory for the user account.
Once you have a definition, you can create a Storage Volume with the following syntax:
$ fuzzball volume create <volume.yaml>
Volume f8828728-da77-46fe-af4d-12a731d793b6 created
It’s easy to update a Storage Volume if you need to change something about the definition.
$ fuzzball volume update -i f8828728-da77-46fe-af4d-12a731d793b6 <updated_definition.yaml>
Volume f8828728-da77-46fe-af4d-12a731d793b6 updated
You can disable a Storage Volume to prevent it to be used within a workflow. This is a necessary prerequisite to deleting a storage volume.
$ fuzzball volume disable f8828728-da77-46fe-af4d-12a731d793b6
Volume f8828728-da77-46fe-af4d-12a731d793b6 marked as disabled
To re-enable it:
$ fuzzball volume enable f8828728-da77-46fe-af4d-12a731d793b6
Volume f8828728-da77-46fe-af4d-12a731d793b6 marked as enabled
Deleting your storage volume may also delete your data. Your administrator may have configured the underlying Storage Class toretainOnDelete: true
meaning that your data is retained when you delete your volume (not explicitly when you delete your data), but you should not depend upon that if your data is critical.
To delete a Storage Volume, it must be disabled first to prevent its use within a workflow as it’s being deleted.
$ fuzzball volume delete f8828728-da77-46fe-af4d-12a731d793b6
Volume f8828728-da77-46fe-af4d-12a731d793b6 marked for deletion
If the Storage Volume is not disabled prior to its deletion, the command returns the error:
volume must be disabled before deletion
Or if any workflow are using the volume, the command returns the error:
one or more workflows are using this volume
To get a list of the Storage Volumes that currently exist, use the following syntax.
$ fuzzball volume list
ID | REFERENCE | DISPLAYNAME | DESCRIPTION | CREATETIME | ACCESSTIME | STATUS
f8828728-da77-46fe-af4d-12a731d793b6 | volume://user/homedir | homedir | Home Directory | 2024-01-19 05:18:16PM | 2024-01-19 05:18:16PM | Enabled