minfs

by minio

minio / minfs

A network filesystem client to connect to Minio and Amazon S3 compatible cloud storage servers

208 Stars 39 Forks Last release: over 3 years ago (RELEASE.2017-02-26T20-20-56Z) Apache License 2.0 95 Commits 4 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

DEPRECATED - This project is deprecated and not maintained anymore. It is recommended for all users to use one of the following options intead.

MinFS Quickstart Guide Slack Go Report Card Docker Pulls

MinFS is a fuse driver for Amazon S3 compatible object storage server. MinFS lets you mount a remote bucket (from a S3 compatible object store), as if it were a local directory. This allows you to read and write from the remote bucket just by operating on the local mount directory.

MinFS helps legacy applications use modern object stores with minimal config changes. MinFS uses BoltDB for caching and saving metadata, list of files, permissions, owners etc.

Be careful, it is always possible to remove boltdb cache. Cache will be recreated by MinFS synchronizing metadata from the server.

POSIX Compatibility

MinFS is not a POSIX conformant filesystem and it does not intend to be one. MinFS is built for legacy applications that needs to access an object store but does not expect strict POSIX compatibility. Please use MinFS if this fits your needs.

Use cases not suitable for MinFS use are: - Running a database on MinFS such as postgres, mysql etc. - Running virtual machines on MinFS such as qemu/kvm. - Running rich POSIX applications which rely on POSIX locks, Extended attribute operations etc.

Some use cases suitable for MinFS are: - Serving a static web-content with NGINX, Apache2 web servers. - Serving as backup destination for legacy tools unable to speak S3 protocol.

MinFS RPMs

Minimum Requirements

Install

Download the pre-built RPMs from here

sh
yum install minfs-0.0.20170226202056-1.x86_64.rpm

Update
config.json

Create a new

config.json
in /etc/minfs directory with your S3 server access and secret keys.

This example uses play.minio.io:9000

{"version":"1","accessKey":"Q3AM3UQ867SPQQA43P2F","secretKey":"zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"}

Mount
mybucket

Create an

/etc/fstab
entry
https://play.minio.io:9000/mybucket /mnt/mounted/mybucket minfs defaults,cache=/tmp/mybucket 0 0

Now proceed to mount

fstab
entry.
sh
mount /mnt/mounted/mybucket

Verify if

mybucket
is mounted and is accessible.
ls -F /mnt/mounted/mybucket
etc/  issue

MinFS Docker Volume plugin

MinFS can also be used via the MinFS Docker volume plugin. You can mount a local folder onto a Docker container, without having to go through the dependency installation or the mount and unmount operations of MinFS.

Minimum Requirements

Using Docker Compose

Use

docker-compose
to create a volume using the plugin and share the volume with other containers. In the example below the volume is created using the minfs plugin and and used by
nginx
container to serve the static content from the bucket.
version: '2'
services:
  my-test-server:
    image: nginx
    ports:
      - "80:80"
    volumes:
      - my-test-store:/usr/share/nginx/html:ro

volumes: my-test-store: driver: minio/minfs driver_opts: endpoint: https://play.minio.io:9000 access-key: Q3AM3UQ867SPQQA43P2F secret-key: zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG bucket: testbucket opts: cache=/tmp/my-test-store

Please change the

endpoint
,
access-key
,
secret-key
and
bucket
for your local Minio setup.

Once you have successfully created

docker-compose.yml
configuration in your current working directory.
sh
docker-compose up

Using Docker

One can even manually install the plugin, create and the volume using docker.

Install the plugin

sh
docker plugin install minio/minfs

Create a docker volume

my-test-store
using
minio/minfs
driver.
sh
docker volume create -d minio/minfs \
  --name my-test-store \
  -o endpoint=https://play.minio.io:9000 \
  -o access-key=Q3AM3UQ867SPQQA43P2F \
  -o secret-key=zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG \
  -o bucket=testbucket
  -o opts=cache=/tmp/my-test-store

Please change the

endpoint
,
access-key
,
secret-key
,
bucket
and
opts
for your local Minio setup.

Once you have successfully created the volume, start a new container with

my-test-store
attached. In the example below
nginx
container is run to serve pages from the new volume.
sh
docker run -d --name my-test-server -p 80:80 -v my-test-store:/usr/share/nginx/html:ro nginx

Test
nginx
Service

Either of the above steps create a MinFS based volume for a Nginx container. Verify if your nginx container is running properly and serving content.

sh
curl localhost
Welcome to nginx!



Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.