FUSE SDK Advanced Tuning

Slack Docker Pulls GitHub edit source

Select Libfuse Version

Alluxio now supports both libfuse2 and libfuse3. Alluxio FUSE on libfuse2 is more stable and has been tested in production. Alluxio FUSE on libfuse3 is currently experimental but under active development. Alluxio will focus more on libfuse3 and utilize new features provided.

libfuse3 is used by default.

Set to use libfuse2 via:

$ sudo yum install fuse
$ alluxio-fuse mount under_storage_dataset mount_point -o fuse=2

See logs/fuse.out for which version is used.

INFO  NativeLibraryLoader - Loaded libjnifuse with libfuse version 2(or 3).

FUSE Mount Options

You can use alluxio-fuse mount -o mount_option_a -o mount_option_b=value to set mount options when launching the standalone Fuse process.

Different versions of libfuse and osxfuse may support different mount options. The available Linux mount options are listed here. The mount options of MacOS with osxfuse are listed here . Some mount options (e.g. allow_other and allow_root) need additional set-up and the set-up process may be different depending on the platform.

$ alluxio-fuse mount <under_storage_dataset> <mount_point> -o mount_option

Example: allow_other and allow_root

By default, Alluxio-FUSE mount point can only be accessed by the user mounting the Alluxio namespace to the local filesystem.

For Linux, add the following line to file /etc/fuse.conf to allow other users or allow root to access the mounted directory:

user_allow_other

Only after this step that non-root users have the permission to specify the allow_other or allow_root mount options.

For MacOS, follow the osxfuse allow_other instructions to allow other users to use the allow_other and allow_root mount options.

After setting up, pass the allow_other or allow_root mount options when mounting Alluxio-FUSE:

# All users (including root) can access the files.
$ alluxio-fuse mount <under_storage_dataset> <mount_point> -o allow_other
# The user mounting the filesystem and root can access the files.
$ alluxio-fuse mount <under_storage_dataset> <mount_point> -o allow_root

Note that only one of the allow_other or allow_root could be set.

Troubleshooting

This section talks about how to troubleshoot issues related to Alluxio POSIX API.

Out of Direct Memory

When encountering the out of direct memory issue, add the following JVM opts to ${ALLUXIO_HOME}/conf/alluxio-env.sh to increase the max amount of direct memory.

ALLUXIO_FUSE_JAVA_OPTS+=" -XX:MaxDirectMemorySize=8G"