1.S3FS介绍
S3FS是google开发的一款支持将对象存储中的bucket以文件形式导出的文件系统接口,兼容POSIX语义。S3fs是基于FUSE开发文件系统,允许Linux和Mac Os X挂载S3的存储桶在本地文件系统,S3fs能够保持对象原来的格式
2、安装必要的软件依赖
- sudo yum install automake fuse fuse-devel gcc-c++ git libcurl-devel libxml2-devel make openssl-devel mailcap
3、使用git命令下载及安装s3fs
- git clone https://github.com/s3fs-fuse/s3fs-fuse.git
- cd s3fs-fuse
- ./autogen.sh
- ./configure
- make && make install
4、检测s3fs是否生效,如出现以下结果表示生效
- # s3fs
- s3fs: missing BUCKET argument.
- Usage: s3fs BUCKET:[PATH] MOUNTPOINT [OPTION]...
5、生成密钥文件并授权,其中的密钥为IAM用户生成
- echo AKIAIOEO4xxxxxxxxxx:2LXBboddEpRLmWl48i3+b4zixxxxxvxxxxxxxx > /etc/.passwd-s3fs
- chmod 600 /usr/xj/.passwd-s3fs
6、非AWS EC2手动挂载非域名为桶名的存储桶,url根据存储桶所在的区域不同更换网址,挂载目录需要提前建立,url地址可以随便打开一个存储桶的文件获得
格式 s3fs 桶名 本地目录 指定秘钥文件 桶对应的URL
- s3fs bucket-name Local directory -o passwd_file=/etc/.passwd-s3fs -o url=https://s3.xxxxxxxx.amazonaws.com
加写权限 -o default_acl="public-read-write -o use_path_request_style -o allow_other
https://docs.aws.amazon.com/z...
s3fs "www.tclub.in" /s3/tclub_in -o passwd_file=/etc/.passwd-s3fs -o url=https://s3.ap-south-1.amazonaws.com -o default_acl="public-read-write -o use_path_request_style -o allow_other
7、非AWS EC2手动挂载以域名为桶名的存储桶
- s3fs "s3.xxxxxxxx.amazonaws.com" /s3/xxx -o passwd_file=/etc/.passwd-s3fs -o url=https://s3.xxxxxxxx.amazonaws.com -o use_path_request_style
8、EC2挂载非域名为桶名的存储桶
- s3fs s3fs-mount-bucket /home/ec2-user/s3mnt -o passwd_file=/etc/.passwd-s3fs -o endpoint=apxx-northxxx-1
9、EC2挂载以域名为桶名的存储桶
- s3fs s3fs-mount-bucket /home/ec2-user/s3mnt -o passwd_file=/etc/.passwd-s3fs -o endpoint=apxx-northxxx-1 -o use_path_request_style
最后取消挂载 直接umunot 会报设备忙
- ps aux|grep s3f
kill -9 进程号
umount -l /XXX
常见错误
挂载失败
日志错误:
[root@r7003 ~]# s3fs youxibak /tmp/s3/ -o passwd_file=/root/.aws/passwd-s3fs -o url=https://testbucket.s3.ap-south-1.amazonaws.com -o endpoint=ap-south-1 -o use_path_request_style -o allow_other
Aug 27 07:28:28 r7003 dbus[646]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service'
错误原因:https地址不对
https://testbucket.s3.ap-sout...
应该使用
https://s3.ap-south-1.amazona...