Skip to content

Upgrades

FlexFS provides several upgrade paths depending on which components you are upgrading and your tolerance for downtime.

ComponentUpgrade methodDowntime
Servers (meta, proxy, admin)manage.flexfs upgradeBrief restart per service
Mount clientsAuto-update (automatic) or update.flexfs (manual)Live FUSE session handoff
CSI driverHelm upgrade or manifest reapplyController pod restarts; node pods use OnDelete (manual restart)

The manage.flexfs upgrade command performs a complete upgrade cycle: clean state, download new binaries, install them, and restart the services those binaries belong to.

Terminal window
sudo manage.flexfs upgrade

This will:

  1. Clean runtime state (flexFS temporary files)
  2. Download the latest binaries for all installed flexFS components from get.flexfs.io
  3. Install them to /sbin/
  4. Stop the services whose binaries were upgraded
  5. Start those same services again

Only the services belonging to an upgraded binary are cycled, and only where a systemd unit for them exists. With no binary names given, every flexFS binary in /sbin is upgraded, so a bare upgrade restarts every installed service.

Terminal window
sudo manage.flexfs upgrade --version v1.9.x
Terminal window
sudo manage.flexfs upgrade meta proxy

This downloads and upgrades only the specified binaries, and restarts only the services among them — here meta and proxy. Services whose binaries were not upgraded keep running untouched.

Terminal window
sudo manage.flexfs upgrade --arch aarch64

By default, the host architecture is detected automatically.

Add --vacuum to rotate and vacuum the systemd journal as part of the upgrade. This runs journalctl --rotate followed by journalctl --vacuum-time=1s, which deletes essentially all archived journal data on the whole host, not just flexFS entries — including the logs from the upgrade’s own pre-restart phase. Use it only when journal disk pressure is the reason for the upgrade:

Terminal window
sudo manage.flexfs upgrade --vacuum

Add --deploy to deploy mount.flexfs to the admin server’s channels immediately after the upgrade completes — equivalent to running manage.flexfs upgrade followed by manage.flexfs deploy:

Terminal window
sudo manage.flexfs upgrade --deploy

The deploy step reuses the upgrade’s --version, so the deployed mount client matches the version you just upgraded to. Use --channel and --adminPath to control the deploy step:

Terminal window
sudo manage.flexfs upgrade --deploy --channel staging

If you prefer more control, use manage.flexfs download to download binaries without installing or restarting:

Terminal window
# Download to /tmp
sudo manage.flexfs download meta proxy mount
# Download and install to /sbin
sudo manage.flexfs download meta proxy mount --install
FlagDescription
--archArchitecture: amd64 or aarch64.
--installInstall binaries to /sbin/ after downloading.
--versionVersion branch to download (e.g., v1.9.x).

See the manage.flexfs CLI reference for types and defaults.

The manage.flexfs deploy command downloads the latest mount.flexfs binary and places it in the admin server’s deploy directory, making it available for auto-update by mount clients.

Terminal window
sudo manage.flexfs deploy
FlagDescription
--adminPathPath to the admin folder.
--channelDeployment channel: staging, production, or all.
--versionVersion branch to deploy.

See the manage.flexfs CLI reference for types and defaults.

The deploy directory has two channels:

ChannelDescription
stagingMount clients with --staging flag pull from this channel. Use for testing updates before wide rollout.
productionDefault channel for all mount clients.

Deploy flow:

Terminal window
# Deploy to staging first
sudo manage.flexfs deploy --channel staging
# Test with staging mounts, then promote to production
sudo manage.flexfs deploy --channel production

Or deploy to both at once:

Terminal window
sudo manage.flexfs deploy --channel all

Mount clients automatically check the admin server for new versions and update themselves. When an update is available:

  1. The mount client downloads the new mount.flexfs binary from the admin server’s deploy endpoint.
  2. It performs a FUSE session handoff — the new binary takes over the existing FUSE mount without interrupting running applications.
  3. The old process exits cleanly.
FlagEffect
--noRemountDownload the update but do not perform the FUSE session handoff. The update takes effect on next manual mount.
--noUpdateDisable auto-update entirely.
--stagingPull updates from the staging channel instead of production.

See the mount.flexfs CLI reference for the authoritative entries, including types and defaults.

Use update.flexfs to manually update the mount client binary:

Terminal window
sudo update.flexfs

This downloads the latest version and replaces the binary at /sbin/mount.flexfs, then cleanly unmounts any active mounts. Add --mount to remount fstab entries afterward, or --force to force the update on mounts that are still in use.

FlexFS maintains backward compatibility within a major version series. A v1.9.x mount client can connect to v1.9.x servers without issues. When upgrading, update servers first, then mount clients.

Optional protocol capabilities — such as coordinated concurrent I/O (exact byte-range locks and cross-mount-safe appends) and serialized append grants — are negotiated at connection time: the feature is used only when both the mount client and the metadata server support it, and otherwise both sides transparently fall back to the previous behavior. Because of this, upgrade the metadata server before the mount clients so the capability is available as soon as clients advertise it. Mixed-version fleets remain fully interoperable during the rollout.

When manage.flexfs starts services, it follows the correct dependency order:

  1. Error server (error.flexfs, if installed) — an internal service that starts first so it is listening before the others report to it
  2. Statistics server (stat.flexfs, if installed)
  3. Admin server (admin.flexfs, if installed)
  4. Free server (free.flexfs, if installed)
  5. Proxy server (proxy.flexfs, if installed)
  6. Metadata server (meta.flexfs)

When stopping, the order is reversed.