Skip to main content

Mount Tigris as a Filesystem

For AI workloads, most runtimes assume data is accessible via a filesystem. By mounting a Tigris bucket as a filesystem, data is no longer limited by local storage nor memory capacity.

After testing filesystems for performance and reliability, we support GeeseFS. GeeseFS lets you mount S3 buckets to your local Linux system. Since Tigris is S3-compatible, you can use GeeseFS to mount any Tigris bucket as if it was a normal Linux filesystem.

  • Install geesefs
  • Configure credentials
  • systemd service to start geesefs on boot
  • Reboot test

Prerequisites:

  • A Tigris account
  • A bucket you want to mount into your system (mybucket)
  • A target location you want to mount your bucket to (~/data)
note

geesefs uses FUSE to mount buckets into the filesystem. FUSE has limitations involving multiple users accessing the same mountpoint. If you need multiple users (human or service) to access the same bucket, consider creating multiple systemd services mounting the bucket in each user's home directory.

Installing geesefs

Download the latest release for your machine from the list of geesefs releases to /usr/local/bin and mark it as executable:

amd64 Linux
sudo wget -O /usr/local/bin/geesefs https://github.com/yandex-cloud/geesefs/releases/download/v0.42.0/geesefs-linux-amd64
sudo chmod +x /usr/local/bin/geesefs

Configure credentials

Create a new access key with edit permissions on your target bucket in the Tigris Dashboard. Configure the aws-cli to utilize the credentials as described in the guide here.

Mount bucket on login with systemd

Make a folder for the geesefs service:

mkdir -p ~/.local/share/systemd/user

Then copy this unit into ~/.local/share/systemd/user/mount-data.service:

[Unit]
Description=Mount Tigris bucket mybucket to ~/data
After=network.target

[Service]
Type=forking
WorkingDirectory=%h
ExecStart=/usr/local/bin/geesefs --endpoint https://fly.storage.tigris.dev mybucket %h/data

[Install]
WantedBy=default.target

Make sure to adjust mybucket and %h/data as needed. In systemd units, %h refers to your home directory, so this mounts bucket mybucket to ~/data.

Enable the unit with systemctl daemon-reload and systemctl enable:

systemctl --user daemon-reload
systemctl --user enable --now mount-data.service

Reboot test

Reboot your system and log back in. Run the mount command and you should see information about geesefs mounting your bucket:

$ mount | grep geesefs
mybucket on /home/opc/data type fuse.geesefs (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000,default_permissions)

You did it! You now have a performant filesystem backed by bottomless object storage.