Skip to content

Architecture Overview

FlexFS is a distributed network filesystem that provides POSIX-compatible access to cloud object storage. Its architecture separates metadata (file names, permissions, directory structure) from block data (file contents), routing each through purpose-built paths optimized for their access patterns.

Architecture overview showing data flow from Application through FUSE and mount.flexfs to metadata server, proxy, and object storage Architecture overview showing data flow from Application through FUSE and mount.flexfs to metadata server, proxy, and object storage

Metadata and data are separated. Metadata operations (lookup, create, rename, chmod, lock) flow through the metadata server over a binary RPC protocol. Block data (read, write) flows directly between mount clients and object storage over HTTPS REST — or optionally through proxy servers. This separation means that the metadata server is never a throughput bottleneck for large file I/O.

Blocks are the unit of storage. Every file is divided into fixed-size blocks (2 MiB in Community; in Enterprise, a power of two from 256 KiB to 8 MiB set per volume, defaulting to 4 MiB). Blocks are individually compressed, optionally encrypted, and stored as objects in a cloud bucket. Each block is identified by its inode number, block index, and a key unique to each version of the block.

Caching is multi-tiered. Mount clients maintain an in-memory LRU cache (L1), an optional on-disk cache with writeback support (L2), and can route reads and writes through Enterprise proxy groups that act as a shared caching layer (L3).

Encryption keys never leave the client. When end-to-end encryption is enabled (Enterprise), the mount client encrypts and decrypts block data, file names, symlink targets, and extended attribute names and values locally, so the metadata server, proxy servers, and object storage never see them in plaintext. Other metadata, such as file sizes, modes, owners, and timestamps, is not encrypted. See Encryption Design.

FlexFS ships as 15 standalone binaries. They fall into three categories:

CategoryBinariesRole
Serversadmin.flexfs, aws.flexfs, error.flexfs, free.flexfs, meta.flexfs, proxy.flexfs, stat.flexfsLong-running services, run directly or as systemd services
Clients / Driversmount.flexfs, csi.flexfsMount the filesystem (FUSE mount client, Kubernetes CSI driver)
Utilitiesconfigure.flexfs, manage.flexfs, analyze.flexfs, dedup.flexfs, find.flexfs, license.flexfsAdministration, analysis, and maintenance tools

aws.flexfs, error.flexfs, license.flexfs, and stat.flexfs are internal components operated by Paradigm4. They are not deployed by customers.

FlexFS binaries are statically linked. Servers can be run directly by any user; the installers set them up as systemd services, which run as root and are optional. mount.flexfs needs the FUSE kernel module, plus the fusermount3 (or fusermount) helper from the FUSE userspace package for mounts by non-root users and on hosts where /etc/mtab is a regular file.

See Component Roles for detailed descriptions of each binary.

PathProtocolTransportPurpose
mount.flexfs to meta.flexfsBinary RPC over WebSocketwss (TCP + TLS)All metadata operations (lookup, create, setattr, lock, readdir, etc.)
mount.flexfs to object storageHTTPS RESTTCP + TLSBlock read/write/delete (S3, GCS, Azure, OCI native APIs)
mount.flexfs to proxy.flexfsHTTPS RESTTCP + TLSBlock read/write through proxy cache
Utilities to meta.flexfsHTTPS RESTTCP + TLSAnalysis queries, deduplication, search
admin.flexfs REST APIHTTPS RESTTCP + TLSConfiguration management, deploy endpoints, volume settings
meta.flexfs to admin.flexfs or free.flexfsHTTPS RESTTCP + TLSVolume settings, volume token validation, billing rates, retired volumes, and per-volume usage statistics
admin.flexfs to stat.flexfsHTTPS RESTTCP + TLSUsage metering (Enterprise)

FlexFS is available in two editions sharing the same core architecture:

  • Community Edition uses free.flexfs as its administration server. It supports a single volume with no end-to-end encryption, no proxy groups, and no dynamic Kubernetes provisioning. All other features — including local on-disk writeback caching, POSIX compliance, configurable retention (default 7 days) with point-in-time mounts, and all four storage backends — are fully available.

  • Enterprise Edition uses admin.flexfs and configure.flexfs for multi-volume management. It adds end-to-end encryption, proxy groups, configurable volume quotas, per-volume block size and retention, volume retirement, dynamic CSI provisioning, and usage reporting to the Paradigm4 statistics server for billing and metering.

Both editions use the same mount.flexfs, meta.flexfs, and utility binaries.