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

V4 Storage Breaking Changes

This page summarizes the storage-related breaking changes between Fuzzball V3 and V4. For step-by-step upgrade instructions, see the V3 to V4 Storage Migration Guide.

Architecture change

V3 used a three-tier model. V4 collapses this to two tiers:

V3 EntityV4 EquivalentNotes
Storage DriverRemovedDriver config is embedded in provisioner
Storage ClassStorage ProvisionerProvisioner includes driver config, access policies, annotations
Storage VolumeStorage VolumeNow linked to a provisioner instead of a storage class
V3:  StorageDriver → StorageClass → StorageVolume  (3 entities)
V4:  StorageProvisioner → StorageVolume            (2 entities)

V4 storage drivers are built into the platform. There is no need to install, update, or manage external container-based drivers.

CLI command changes

Removed commands

V3 CommandV4 Replacement
fuzzball admin storage driver installNot needed — drivers are built-in
fuzzball admin storage driver uninstallNot needed
fuzzball admin storage driver listNot needed
fuzzball admin storage driver updateNot needed
fuzzball admin storage class createfuzzball volume provisioner add
fuzzball admin storage class deletefuzzball volume provisioner remove
fuzzball admin storage class listfuzzball volume provisioner list
fuzzball admin storage class updatefuzzball volume provisioner edit
fuzzball storage (user-level)fuzzball volume provisioner list

New commands

CommandPurpose
fuzzball volume provisioner addCreate a provisioner from YAML definition
fuzzball volume provisioner listList provisioners
fuzzball volume provisioner infoGet provisioner details
fuzzball volume provisioner editModify a provisioner
fuzzball volume provisioner removeDelete a provisioner
fuzzball volume provisioner scanDiscover volumes on the storage backend
fuzzball volume provisioner list-driversList available driver types
fuzzball workflow upgradeConvert a V1 workflow to V4 format
fuzzball workflow validateValidate a workflow definition

Workflow DSL changes

Volume syntax

V3 workflows used the reference: field to specify volumes:

# V3 syntax (deprecated, still accepted via auto-upgrade)
version: v1
volumes:
  data:
    reference: volume://user/persistent
  scratch:
    reference: volume://user/ephemeral

V4 workflows use use:, name:, size:, and annotations::

# V4 syntax (recommended)
version: v4
volumes:
  data:
    use: shared-nfs
    name: my-dataset
  scratch:
    use: shared-nfs
    size: 10GB
V1 workflows are auto-upgraded to V4 at execution time. Fuzzball converts reference: fields to the equivalent use:/name: syntax automatically. You can also convert workflows manually with fuzzball workflow upgrade.

Version field

New workflows should use version: v4. The version: v1 format is still accepted and auto-upgraded at execution time.

Mount syntax

V4 uses path-keyed mounts (the mount point is the key) instead of volume-keyed mounts:

# V3 mount syntax (auto-upgraded)
jobs:
  myjob:
    mounts:
      data:
        location: /data

# V4 mount syntax
jobs:
  myjob:
    mounts:
      /data:
        volume: data

Permission model changes

V3 used organization-level access for storage — all members of an organization could use all storage classes. V4 introduces group-based access policies on each provisioner:

PolicyPurpose
accessControls which groups can mount existing persistent volumes
createControls which groups can create new persistent volumes
ephemeralControls which groups can use ephemeral volumes

See Access Policies for details.

Built-in driver types

V4 includes three built-in storage drivers:

DriverV3 EquivalentBackend
NFSNFS CSI driver containerNFS export with volume subdirectories
HostpathHostPath CSI driver containerLocal filesystem directories
EFSEFS CSI driver containerAWS EFS access points

See Driver Types for configuration details.

Automatic migration

When upgrading from V3 to V4, the storage-migrate process runs automatically during the upgrade and:

  • Creates a V4 provisioner for each V3 storage class (one per org per class)
  • Links existing volumes to their new provisioner
  • Backfills volume ownership (UID/GID)

The migration handles database records only. Depending on your V3 storage layout, filesystem paths may need manual adjustment. See the V3 to V4 Storage Migration Guide for complete post-upgrade steps.

Default provisioner bootstrap

On fresh V4 installations, Fuzzball automatically creates a default provisioner:

Deployment TypeDefault DriverDefault Path
Single-binary (compose)Hostpath/mnt/fuzzball-sharedfs
AWS KubernetesEFSConfigured EFS filesystem

The default provisioner grants access: all and ephemeral: all to all groups.