Ubuntu 如何使用Minio作为BindFS挂载的前端 介绍
我正在使用Ubuntu16.04,并试图运行一个Minio实例,其中的bucket内容通过BindFS挂载公开。我的后端目录结构如下所示:Ubuntu 如何使用Minio作为BindFS挂载的前端 介绍,ubuntu,amazon-s3,ubuntu-16.04,fuse,minio,Ubuntu,Amazon S3,Ubuntu 16.04,Fuse,Minio,我正在使用Ubuntu16.04,并试图运行一个Minio实例,其中的bucket内容通过BindFS挂载公开。我的后端目录结构如下所示: 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
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
我现在可以很高兴地访问Minio浏览器,使用提供的凭据登录,创建bucket,并上载文件:
ubuntu@ubuntu:~/minio_test_dir$ tree minio-test-storage/
minio-test-storage/
└── test.bucket
├── aaa.txt
└── bbb.txt
1 directory, 2 files
如果我使用BindFS将Minio bucket连接到后端存储,那么:
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\u allow\u 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.
我真的不知道如何诊断这个。如果我尝试手动创建文件,例如通过触摸
或回音>
创建文件,则此操作将按预期工作。我已经四处寻找,试图找出如何从Minio中查看日志,但结果却是空的。我注意到我的.minio test
目录包含一个config.json
文件,其中包含以下看起来很有希望的代码片段:
"logger": {
"console": {
"enable": true,
"level": "fatal"
},
"file": {
"enable": false,
"fileName": "",
"level": ""
},
"syslog": {
"enable": false,
"address": "",
"level": ""
}
}
但据我所知,我无法获得任何这些选项来实际输出任何日志。我确实找到了哪些声明已经修复,但问题似乎仍然存在
任何帮助都将不胜感激。
minio test storage
和test。bucket
应位于同一FS设备上,当您使用bindfs时,test.bucket
的FS的设备号会发生变化,这是因为minio test storage
FS到test.bucket
FS的文件的rename
等操作失败
您可以做的是:
ln-s后端minio测试存储/测试.bucket
这将创建
test.bucket
作为指向后端
目录的符号链接,从而为您创建所需的效果。谢谢您的回答!星期一早上我可以试试这个,到时我再报告。谢谢你的回答。不幸的是,出于我的目的,我需要能够使用BindFS。我尝试了一个设置,通过BindFS将后端
链接到一个新的后端虚拟
目录,然后按照您的建议将后端虚拟
连接到minio test storage/test.bucket
,通过ln-s backend minio test storage/test.bucket
。不幸的是,我收到了与以前相同的错误消息。我已经用S3Server而不是Minio运行了一个快速测试,我的用例看起来运行得很好,不需要使用符号链接。好的,导出目录和bucket目录应该在同一个设备上,Minio才能工作。发生的是有一个名为.minio.sys
的目录,在将上载的对象重命名到实际位置之前,会将其临时放置在目录中。如果.minio.sys
位于与bucket
目录不同的设备上,则此重命名将失败。是的,我对此进行了多次尝试,并意识到情况就是这样。有办法解决这个问题吗?我知道在Linux中,如果重命名失败,mv
命令会返回到执行复制/删除操作,这解释了为什么我能够在.minio.sys/tmp
和test.bucket
之间手动移动东西。我在这里运气不好吗?@RobGwynn Jones你可以在提供这个所谓的链接作为参考时提出一个问题,但基本上对此无能为力。但是如果你能在这个问题上解释你想要达到的目标,也许我们可以找到解决办法。