DEV Community

Brandon Rozek
Brandon Rozek

Posted on • Originally published at brandonrozek.com on

Mount Object Storage Locally using S3 Fuse

On most cloud providers, object storage is cheaper than paying for the equivalent size in block storage. Using FUSE, we can mount S3 compatible object storage with the command s3fs. Do note, that there are a few downsides with mounting object storage as documented on their README:

  • random writes or appends to files require rewriting the entire object, optimized with multi-part upload copy
  • metadata operations such as listing directories have poor performance due to network latency
  • non-AWS providers may have eventual consistency so reads can temporarily yield stale data (AWS offers read-after-write consistency since Dec 2020)
  • no atomic renames of files or directories
  • no coordination between multiple clients mounting the same bucket
  • no hard links
  • inotify detects only local modifications, not external ones by other clients or tools

Lets get started by installing s3fs:

# For Fedora
sudo dnf install s3fs-fuse
# For Ubuntu/Debian
sudo apt install s3fs

Enter fullscreen mode Exit fullscreen mode

We’ll then need to edit /etc/passwd-s3fs with our object storage access and secret keys:

AccessKeyHere:SecretKeyHere

Enter fullscreen mode Exit fullscreen mode

Then we need to set it so that only root can read /etc/passwd-s3fs

sudo chmod 600 /etc/passwd-s3fs

Enter fullscreen mode Exit fullscreen mode

Now we can test to see if we can access our bucket:

sudo s3fs bucketname \
    /mnt/mountpoint \
    -o url=https://us-east-1.linodeobjects.com \
    -o allow_other

Enter fullscreen mode Exit fullscreen mode

If we’re successful we should be able to access /mnt/mountpoint.

To unmount:

sudo umount /mnt/mountpoint

Enter fullscreen mode Exit fullscreen mode

To mount automatically during reboot, add the following to /etc/fstab:

bucketname /mnt/mountpoint fuse.s3fs _netdev,allow_other,url=https://us-east-1.linodeobjects.com 0 0

Enter fullscreen mode Exit fullscreen mode

After editing /etc/fstab you can run sudo mount -a in order for it to load and mount any new entries.

Top comments (0)