Skip to main content

FUSE Mode Access

In addition to the SDK, S3 gateway, and CLI, Curvine provides FUSE (Filesystem in Userspace) so that applications can access the Curvine filesystem as a local directory without code changes. Operations under the mount point are translated into Curvine RPC and data access.

In cloud-native environments, FUSE can be used via volume mounts; Curvine also provides a CSI driver for Kubernetes.

info

FUSE is an optional access method. The Curvine cluster (Master + Worker) must be running first. FUSE is only needed when applications require a POSIX mount point. See Deployment Architecture for the role of each component.

Architecture​

Prerequisites​

  • Curvine cluster is running (Master and Worker started). See Bare Metal Deployment or Quick Start.
  • Configuration: The node where FUSE runs must have access to the cluster config (e.g. conf/curvine-cluster.toml) and correct Master address.
  • Supported systems: FUSE 2 and FUSE 3 are supported; behavior may vary by distribution. See Supported Linux Distributions.

Usage​

Start FUSE​

Run from the installation directory (e.g. build/dist or the extracted release package):

# Default: mount at /curvine-fuse, use conf/curvine-cluster.toml
bin/curvine-fuse.sh start

# Custom mount path
bin/curvine-fuse.sh start --mnt-path /mnt/curvine

# Custom config file
bin/curvine-fuse.sh start -c /path/to/curvine-cluster.toml
  • Default mount path: /curvine-fuse
  • Default config: conf/curvine-cluster.toml (relative to current working directory when the process starts)
  • Use bin/curvine-fuse.sh stop to stop, or bin/curvine-fuse.sh restart to restart.

Use the mount point​

Under the FUSE mount path you can use standard Linux file commands: ls, cat, rm, mv, mkdir, du, cp, etc.

Example:

# Assume default mount /curvine-fuse
cd /curvine-fuse

echo "hello curvine" > a.txt
cat a.txt
du -h a.txt

mkdir -p b/c
ls -l
tree
# .
# ├── a.txt
# └── b
# └── c

Data written here is stored in the Curvine cluster; you can also access paths that correspond to mounted UFS (unified file system view).

Optional parameters​

When starting FUSE, you can pass through options to the underlying curvine-fuse binary, for example:

OptionDescriptionDefault
--mnt-pathMount point path/curvine-fuse
-c / --confCluster config file pathconf/curvine-cluster.toml
--fs-pathRoot path inside Curvine to expose at mount/
--io-threadsI/O thread countconfig value
--worker-threadsWorker thread countconfig value

Run bin/curvine-fuse.sh --help (or lib/curvine-fuse --help under the installation directory) to list all options.

FUSE support level​

Curvine FUSE supports:

  • Standard file read/write and directory operations
  • User/group and permission semantics
  • Extended attributes (xattr), symbolic links (symlink), hard links (link)
tip

FUSE driver behavior can vary by distribution and FUSE version (FUSE2 vs FUSE3). For tested versions and dependencies, see Supported Linux Distributions.

On the ltp-full-20210524 test suite, a large majority of tests pass; remaining failures are mainly in areas such as random write and file locking, which are under continuous improvement.

Test suiteTotalSkip (SKIP)Fail (FAIL)Pass (PASS)
fs_perms_simple180018
fsx1001
fs_bind1001
smoketest130112
io2011
fs2901316
syscall120632300874
Total127032315923

We welcome community contributions to improve FUSE compatibility and test coverage.