使用限制
ossfs使用有以下限制:
- 不支持挂载归档型Bucket。
- 编辑已上传文件会导致文件被重新上传。
- 元数据操作,例如**list directory**,因为需要远程访问OSS服务器,所以性能较差。
- 重命名文件/文件夹可能会出错。若操作失败,可能会导致数据不一致。
- 不适合高并发读/写的场景。
- 不支持hard link。
注意事项
- 在服务器上执行读写操作时,web端可执行删除操作,服务器保存则存在,不保存则删除
- 在web端开始下载后,web和服务器执行的删除转移修改内容操作不影响下载,及数据内容
1、快速安装
1.下载安装包
以下载CentOS 7.0 (x64)版本为例:
wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_centos7.0_x86_64.rpm
2.CentOS系统安装命令:
sudo yum localinstall your_ossfs_package #你下载的包的名字
3.配置账号访问信息。
将Bucket名称以及具有此Bucket访问权限的AccessKeyId/AccessKeySecret信息存放在/etc/passwd-ossfs文件中。注意这个文件的权限必须正确设置,建议设为640。
- echo bucket-test:LTAI4GJdAsK6ky****:xuoOmluoxif4R**** > /etc/passwd-ossfs
- chmod 640 /etc/passwd-ossfs
4.将Bucket挂载到指定目录。
- ossfs my-bucket my-mount-point -ourl=my-oss-endpoint
- # my-bucket 根据你的bucket更改名字
- # my-mount-point 根据您的挂载目录更改
- # my-oss-endpoint 根据你的ossfs所在的区域选择不同的Endpoint 对照ecs服务器与ossfs的区域选择外网Endpoint或者内网Endpoint
- # 例如香港ossfs与杭州ECS服务器挂载就需要使用香港的外网Endpoint:oss-cn-hongkong.aliyuncs.com 同为香港的ossfs和ECS则可以使用内网Endpoint:oss-cn-hongkong-internal.aliyuncs.com
可以通过此链接访问阿里云域名与数据中心根据自己的oss和ECS去选择url地址
例
- echo bucket-test:LTAIbZcdVCmQ****:MOk8x0y9hxQ31coh7A5e2MZEUz**** > /etc/passwd-ossfs
- chmod 640 /etc/passwd-ossfs
- mkdir /tmp/ossfs
- ossfs bucket-test /tmp/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com
5.如果你不要继续挂载此Bucket,则可以将其卸载
fusermount -u /opt/ossfs
2、高级操作
配置账号信息
账号配置文件的默认路径为/etc/passwd-ossfs,您也可以通过**-opasswd_file=passwd-path**选项指定配置文件。两者的区别在于:默认路径的权限可以是640,其他路径下的配置文件权限必须是600。
同一个账号配置文件里可以保存多条账号信息,一条记录一行。ossfs会根据挂载的存储空间名称匹配到正确的账号上。
配置文件内格式$bucket_name:$access_key_id:$access_key_secret
- echo bucket-test-1:AAAIbZcdVCmQ****:AAA8x0y9hxQ31coh7A5e2MZEUz**** > /etc/passwd-ossfs
- echo bucket-test-2:BBBIbZcdVCmQ****:BBB8x0y9hxQ31coh7A5e2MZEUz**** >> /etc/passwd-ossfs
- chmod 640 /etc/passwd-ossfs
- mkdir /opt/ossfs-1
- mkdir /opt/ossfs-2
- ossfs bucket-test-1 /opt/ossfs-1 -ourl=http://oss-cn-hangzhou.aliyuncs.com
- ossfs bucket-test-2 /opt/ossfs-2 -ourl=http://oss-cn-hangzhou.aliyuncs.com
当需要同时挂载多个存储空间时,您可以将所有的配置信息写到同一个账号配置文件里,也可以将不同的账号信息写到不同的账号配置文件中,通过**-opasswd_file=xxx**
- echo bucket-test-3:CCCIbZcdVCmQ****:CCC8x0y9hxQ31coh7A5e2MZEUz**** > /etc/passwd-ossfs-3
- chmod 600 /etc/passwd-ossfs-3
- mkdir /opt/ossfs-3
- ossfs bucket-test-3 /opt/ossfs-3 -ourl=http://oss-cn-hangzhou.aliyuncs.com -opasswd_file=/etc/passwd-ossfs-3
- echo bucket-test-3:DDDIbZcdVCmQ****:DDD8x0y9hxQ31coh7A5e2MZEUz**** > /etc/passwd-ossfs-4
- chmod 600 /etc/passwd-ossfs-4
- mkdir /opt/ossfs-4
- ossfs bucket-test-4 /opt/ossfs-4 -ourl=http://oss-cn-hangzhou.aliyuncs.com -opasswd_file=/etc/passwd-ossfs-4
3、配置访问权限
ossfs挂载的目录访问权限默认为挂载点的所有者,即执行挂载命令的用户,其他用户无法访问。如果要修改默认的权限设置,例如允许其他用户或用户组访问挂载点,可以在运行ossfs的时候使用如下参数,做到期望的权限设置。
配置示例:
允许所有用户访问,即权限为777。
- ossfs bucket_name mount_point -ourl=endpoint -oallow_other
只允许同组用户访问,即权限为770。
- ossfs bucket_name mount_point -ourl=endpoint -oallow_other -omp_umask=007
挂载时指定为其他用户和组,同时只允许同组的用户访问,即权限为770。
以www用户为例说明,先通过id命令获取用户的uid和gid信息,之后在挂载时指定uid和gid参数。
- id www
- uid=1000(www) gid=1000(web) groups=1000(web)
- ossfs bucket_name mount_point -ourl=endpoint -oallow_other -ouid=1000 -ogid=1000 -omp_umask=007
4、挂载指定文件目录
ossfs除了可以把整个存储空间挂载到本地文件系统外,还可以通过设置前缀,把存储空间下的某个文件目录挂载到本地文件系统。命令格式如下:
- ossfs bucket:/prefix mount_point -ourl=endpoint
- 例:将位于杭州地域的存储空间bucket-ossfs-test下的folder目录挂载到/tmp/ossfs-folder下
- ossfs bucket-ossfs-test:/folder /tmp/ossfs-folder -ourl=http://oss-cn-hangzhou.aliyuncs.com
5、开机自动挂载目录
在/etc/init.d/目录下建立文件ossfs,将以下内容拷贝到这个新文件中。并将其中的your_xxx内容改成您自己的信息。
- #! /bin/bash
- #
- # ossfs Automount Aliyun OSS Bucket in the specified direcotry.
- #
- # chkconfig: 2345 90 10
- # description: Activates/Deactivates ossfs configured to start at boot time.
- ossfs your_bucket your_mountpoint -ourl=your_url -oallow_other
为新建立的ossfs脚本赋予可执行权限:
- chmod a+x /etc/init.d/ossfs
命令执行完成后,您可以尝试执行该脚本,如果脚本文件内容无误,那么此时OSS中的Bucket已经挂载到您指定的目录下了。
把ossfs启动脚本作为其他服务,开机自动启动:
- chkconfig ossfs on
执行上述步骤后,ossfs就可以开机自动挂载了。
6、使用Supervisor启动ossfs
1、安装supervisor。
- yum -y install supervisor
2、创建ossfs的启动脚本。
创建start_ossfs.sh文件。
- mkdir /root/ossfs_scripts
- vim /root/ossfs_scripts/start_ossfs.sh
以下内容写入启动脚本。
- # 卸载
- fusermount -u mount_point ### mount_point 挂载地址
- # 重新挂载,必须要增加-f参数运行ossfs,让ossfs在前台运行。
- exec ossfs bucket_name mount_point -ourl=endpoint -f
3、编辑/etc/supervisor/supervisord.conf文件,在最后加入如下内容:
- [program:ossfs]
- command=bash /root/ossfs_scripts/start_ossfs.sh ## 脚本地址
- logfile=/var/log/ossfs.log
- log_stdout=true
- log_stderr=true
- logfile_maxbytes=1MB
- logfile_backups=10
4、运行Supervisor。
- systemctl start supervisord
5、确认运行正常。
- ps aux | grep supervisor # 应该能看到Supervisor进程。
- ps aux | grep ossfs # 应该能看到ossfs进程。
- kill -9 ossfs # 关闭ossfs进程,Supervisor应该会重启它。不要使用killall,因为killall发送SIGTERM,进程正常退出,Supervisor不再去重新运行ossfs。
- ps aux | grep ossfs # 应该能看到ossfs进程。
7、开启调试日志
在使用ossfs的过程中,可能会遇到一些问题。这个时候需要开启调试日志,通过日志信息分析和定位问题。您可以通过如下方式开启调试日志:
- 在挂载目录时添加-d -odbglevel=debug -ocurldbg 日志保存在/var/log/messages中
- ossfs wangchentest:/test/ /opt/oss -ourl=oss-cn-hangzhou-internal.aliyuncs.com -oallow_other -d -odbglevel=debug -ocurldbg
- 在挂载目录时使用-d -odbglevel=debug -ocurldbg -f选项,ossfs会把日志输出到屏幕上。
- ossfs wangchentest:/test/ /opt/oss -ourl=oss-cn-hangzhou-internal.aliyuncs.com -oallow_other -d -odbglevel=debug -ocurldbg -f
本文为原创文章,版权归123ppp资源网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ mysql备份命令06/21
- ♥ SCP命令来实现两台LINUX主机之间的文件传输06/21
- ♥ HTML:表单[S621_01_03]12/31
- ♥ HTML:基础元素[S621_01_01]12/29
- ♥ Linux 系统下使用 systemd 控制 frps 及配置开机自启12/07
- ♥ php语言教程学习笔记08/01