如何使用Minio作为BindFS挂载的前端

时间:2016-10-07 03:24:41

标签: ubuntu amazon-s3 ubuntu-16.04 fuse minio

简介

我正在使用Ubuntu 16.04,并试图运行一个带有存储桶的内容通过BindFS挂载公开的存储桶的Minio实例。我的后端目录结构如下所示:

ubuntu@ubuntu:~$ ll minio_test_dir/
total 20
drwxrwxr-x  5 ubuntu ubuntu 4096 Oct  7 14:02 ./
drwxr-xr-x 33 ubuntu ubuntu 4096 Oct  7 14:01 ../
drwxrwxr-x  2 ubuntu ubuntu 4096 Oct  7 14:02 backend/
drwx------  3 ubuntu ubuntu 4096 Oct  7 14:02 .minio-test/
drwxrwxr-x  2 ubuntu ubuntu 4096 Oct  7 14:02 minio-test-storage/

其中backend代表我的远程存储,只是一个普通的目录:

ubuntu@ubuntu:~$ ll minio_test_dir/backend/
total 8
drwxrwxr-x 2 ubuntu ubuntu 4096 Oct  7 14:02 ./
drwxrwxr-x 5 ubuntu ubuntu 4096 Oct  7 14:02 ../

我使用以下命令启动Minio:

ubuntu@ubuntu:~/minio_test_dir$ ~/minio -C ./.minio-test server --address ":9002" minio-test-storage

Endpoint:  http://192.168.0.107:9002  http://127.0.0.1:9002  http://10.0.3.1:9002
AccessKey: 9DSOXCX63U3CGOJ3LWO3 
SecretKey: pEGNthXl5sQLz2L10dX63bBNBMB2SXSpd4CDj44A 
Region:    us-east-1
SqsARNs: 

Browser Access:
   http://192.168.0.107:9002  http://127.0.0.1:9002  http://10.0.3.1:9002

Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide
   $ mc config host add myminio http://192.168.0.107:9002 9DSOXCX63U3CGOJ3LWO3 pEGNthXl5sQLz2L10dX63bBNBMB2SXSpd4CDj44A

Object API (Amazon S3 compatible):
   Go:         https://docs.minio.io/docs/golang-client-quickstart-guide
   Java:       https://docs.minio.io/docs/java-client-quickstart-guide
   Python:     https://docs.minio.io/docs/python-client-quickstart-guide
   JavaScript: https://docs.minio.io/docs/javascript-client-quickstart-guide

我现在可以很高兴访问http://192.168.0.107:9002的Minio浏览器,使用提供的凭据登录,创建存储桶并上传文件:

ubuntu@ubuntu:~/minio_test_dir$ tree minio-test-storage/
minio-test-storage/
└── test.bucket
    ├── aaa.txt
    └── bbb.txt

1 directory, 2 files

如果我使用BindFS将我的Minio存储桶加入我的后端存储,那么:

ubuntu@ubuntu:~/minio_test_dir$ bindfs backend/ minio-test-storage/test.bucket/

命令成功,我可以在/proc/mounts中看到:

bindfs /home/ubuntu/minio_test_dir/minio-test-storage/test.bucket fuse.bindfs rw,nosuid,nodev,relatime,user_id=1000,group_id=1000,default_permissions,allow_other 0 0

请注意,在/etc/fuse.conf中,我已user_allow_other取消注释。

问题

安装BindFS后,我无法再通过Minio浏览器上传文件。打开Javascript控制台,我看到以下错误:

PUT http://192.168.0.107:9002/minio/upload/test.bucket/test-upload.txt 500 (Internal Server Error)

在“网络”标签中收到以下响应:

We encountered an internal error, please try again.

我真的不知道如何诊断这个。如果我尝试手动创建文件,例如通过touchecho >然后按预期工作。我已经看了很多,试图弄清楚如何从Minio看到日志并且空出来了。我注意到我的.minio-test目录包含一个config.json文件,其中包含以下有希望的代码片段:

"logger": {
            "console": {
                    "enable": true,
                    "level": "fatal"
            },
            "file": {
                    "enable": false,
                    "fileName": "",
                    "level": ""
            },
            "syslog": {
                    "enable": false,
                    "address": "",
                    "level": ""
            }
    }

但据我所知,我无法获得任何这些选项来实际输出任何日志。我确实找到了声称已修复的this bug report,但问题似乎仍然存在。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

minio-test-storagetest.bucket应该属于同一个FS设备,当您使用bindfs时,test.bucket的FS的设备号会因rename之类的操作而发生变化从minio-test-storage FS到test.bucket FS的文件失败。

你能做的是: ln -s backend minio-test-storage/test.bucket

这会创建test.bucket作为backend目录的符号链接,为您创建所需的效果。