Tutorial · Mount
Mount on Linux.
On Linux, clio_cte_fuse uses libfuse3. It is included in the pip wheel, so you only install the system FUSE package and mount.
- Time
- 10 minutes
- Driver
- libfuse3
- In the pip wheel
- Yes
1. Install FUSE 3
Debian, Ubuntu
$ sudo apt install fuse3 libfuse3-3Fedora, RHEL
$ sudo dnf install fuse3 fuse3-libsSource build
$ sudo apt install libfuse3-dev fuse3 # or: sudo dnf install fuse3-devel fuse3
$ cmake --preset release-fuse
$ cmake --build build -j"$(nproc)" && sudo cmake --install build2. Start the runtime and mount
$ clio_run start &
$ mkdir -p ~/clio-mnt
$ CLIO_WITH_RUNTIME=0 clio_cte_fuse ~/clio-mnt -fThe daemon creates or binds the filesystem pool on its own; no extra compose step is needed. CLIO_WITH_RUNTIME=0 attaches it to your runtime, so Python clients and other mounts see the same files.
Every argument after the mountpoint goes to libfuse:
| Option | Effect |
|---|---|
-f | Stay in the foreground. Leave it off to daemonize. |
-d | Print every FUSE request. Useful for debugging. |
-s | Single-threaded mode. |
-o allow_other | Let other users open the mount. Needs user_allow_other in /etc/fuse.conf. |
3. Try it
$ cp -r ~/datasets/era5-sample ~/clio-mnt/
$ du -sh ~/clio-mnt/era5-sample
$ python -c "import numpy as np; print(np.fromfile('$HOME/clio-mnt/era5-sample/t2m.bin', 'f4')[:5])"
$ git clone https://github.com/iowarp/clio-core.git ~/clio-mnt/src # git works too4. Unmount
$ fusermount3 -u ~/clio-mntFiles stay in CLIO Core; mount again to see them. Unmount with fusermount3 -u rather than Ctrl+C: the daemon does not exit on Ctrl+C.
Coherence and caching
Writes always go straight through to the runtime, so sizes are exact after write(). Two settings trade coherence for speed:
| Variable | Default | When to change it |
|---|---|---|
CLIO_FUSE_ATTR_CACHE_S | 1.0 on one node, 0 on several | Set to 0 when several processes on one node modify the same files and must see each other's metadata at once. |
CLIO_FUSE_WRITEBACK | off | Set to 1 for a single writer doing many small writes. Unsafe with several writers. |
Containers and Apptainer
In Docker, the container needs the FUSE device and the capability to mount:
$ docker run --device /dev/fuse --cap-add SYS_ADMIN ...If something goes wrong
fuse: device not found: the kernel module is not loaded. Runsudo modprobe fuse.Transport endpoint is not connected: the daemon exited and left a stale mount. Runfusermount3 -u ~/clio-mntand mount again.- Python does not see the files: the daemon started its own runtime. Mount again with
CLIO_WITH_RUNTIME=0.