Fuzzball Documentation
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

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.

Please select either the UI or CLI tab to see the appropriate instructions for your environment.

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.

UI for user to create a volume

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.

UI for user to create a volume

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.

UI for user to edit a volume

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 to retainOnDelete: 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.

Create a Storage Volume

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

Update a Storage Volume

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

Disable and Enable a Storage Volume

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

Delete a Storage Volume

Deleting your storage volume may also delete your data. Your administrator may have configured the underlying Storage Class to retainOnDelete: 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

List Existing Storage Volumes

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