Skip to content

x5u/goofys

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Goofys is a Filey-System interface to Amazon S3

Build Status

Overview

Goofys allows you to mount an S3 bucket as a filey system.

It's a Filey System instead of a File System because goofys strives for performance first and POSIX second. Particularly things that are difficult to support on S3 or would translate into more than one round-trip would either fail (random writes) or faked (no per-file permission). Goofys does not have a on disk data cache, and consistency model is close-to-open.

Usage

Pre-built binaries are available here. You may also need to install fuse-utils first.

$ go get github.com/kahing/goofys
$ go install github.com/kahing/goofys
$ cat > ~/.aws/credentials
[default]
aws_access_key_id = AKID1234567890
aws_secret_access_key = MY-SECRET-KEY
$ $GOPATH/bin/goofys <bucket> <mountpoint>

Users can also configure credentials via the AWS CLI or the AWS_ACCESS_KEY and AWS_SECRET_KEY environment variables.

To mount an S3 bucket on startup, make sure the credential is configured for root, and can add this to /etc/fstab:

goofys#bucket   /mnt/mountpoint        fuse    allow_other,--file-mode=0666    0       0

Benchmark

Using --stat-cache-ttl 0 --type-cache-ttl 0 for goofys -ostat_cache_expire=1 for s3fs to simulate cold runs. Detail for the benchmark can be found in bench.sh. Raw data is available as well. Test was run on an EC2 c4.xlarge in us-west-2a connecting to a bucket in us-west-2. Units are seconds.

Benchmark result

(†) riofs does not wait for HTTP response before returning from release()

License

Copyright (C) 2015 Ka-Hing Cheung

Licensed under the Apache License, Version 2.0

Current Status

List of non-POSIX behaviors/limitations:

  • only sequential writes supported
  • does not store file mode/owner/group
    • use --(dir|file)-mode or --(uid|gid) options
  • does not support symlink or hardlink
  • ctime, atime is always the same as mtime
  • cannot rename non-empty directories
  • unlink returns success even if file is not present

In addition to the items above, the following supportable but not yet implemented:

  • appending to a file
  • creating files larger than 50GB

References

About

a Filey System for Amazon S3 written in Go

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 83.1%
  • Shell 13.1%
  • Python 2.2%
  • Gnuplot 1.4%
  • Makefile 0.2%