Tutorial: Setting up s3fs-fuse

S3FS-Fuse is an open-source FUSE plugin and an easy-to-use utility for mounting E2E Object Storage Bucket as a File system on E2E Compute Node or your own on-premise server. The plugin supports all major Linux Distributions (eg. Ubuntu).

In this tutorial, we will walk through configuration of S3FS-FUSE with EOS on a CentOS.

Prerequisites

  1. Bucket in E2E Object Store. If you have not created a bucket yet, please refer Getting Started Guide
  2. Access and Secret keys with permissions for the target bucket
  3. A compute node with Linux OS

Hint

Launch Compute Node through E2E My Account or use your own laptop

Step 1: Installing s3fs-fuse

s3fs is available in default repositories for CentOS, RHEL and Ubuntu systems, You can simply install it by executing following commands on your system.

Debian 9 and Ubuntu 16.04 or newer:

sudo apt install s3fs

RHEL and CentOS 7 or newer through via EPEL:

sudo yum install epel-release
sudo yum install s3fs-fuse

macOS via Homebrew:

brew cask install osxfuse
brew install s3fs

Step 2: Creating Access Credentials

To access EOS from s3fs, we will need to generate a password file and store EOS access credentials. You can generate EOS credentials (access / secret key) through My Account.

touch /etc/eos_creds
echo "<access_key>:<secret_key>" > /etc/eos_creds

Important

Replace <access_key> and <secret_key> with your actual Bucket Access credentials.

Now, set Owner only permission on the password file to limit access.

chmod 600 /etc/eos_creds

Step 3: Creating Directory as mount point

Create a directory as mount point for the bucket. We will use /eos for this article to keep it simple.

mkdir /eos

Step 4: Run s3fs command to mount the bucket

Run the following command to mount the bucket at directory eos.

s3fs <bucket> /eos -o passwd_file=/etc/eos_creds,use_path_request_style,url=https://objectstore.e2enetworks.net

Important

In the above command replace <bucket> with your actual bucket name

Step 5: Test the Mount Point

Verify the bucket is mounted using the below command:

mount | grep s3fs

If all went correctly, then you will see an output like below:

s3fs on /eos type fuse.s3fs (rw,nosuid,nodev,relatime,user_id=0,group_id=0)

To check file operations to the mounted bucket, you may run these commands from /eos:

touch s3fs_file
cp s3fs_file /eos/

To see object list from the bucket:

s3cmd ls s3://e2e-test
# Sample Output
# 2019-11-27 02:48         0   s3://e2e-test/s3fs_file

Conclusion

We have successfully configured s3fs-fuse to work with E2E Object Service. The complete user guide on usage of s3fs-fuse is available here