ossfs使用有以下限制:
不支持挂载归档型Bucket。
编辑已上传文件会导致文件被重新上传。
元数据操作,例如**list directory**,因为需要远程访问OSS服务器,所以性能较差。
重命名文件/文件夹可能会出错。若操作失败,可能会导致数据不一致。
不适合高并发读/写的场景。
不支持hard link。
一个ossBucket可以接受多少个ECS服务器同时挂载? 通过与阿里云工作人员确认是无限制的
1、在服务器上执行读写操作时,web端可执行删除操作,服务器保存则存在,不保存则删除
2、在web端开始下载后,web和服务器执行的删除转移修改内容操作不影响下载,及数据内容
以下载CentOS 7.0 (x64)版本为例:
wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_centos7.0_x86_64.rpm
sudo yum localinstall your_ossfs_package #你下载的包的名字
将Bucket名称以及具有此Bucket访问权限的AccessKeyId/AccessKeySecret信息存放在/etc/passwd-ossfs文件中。注意这个文件的权限必须正确设置,建议设为640。
echo bucket-name:LTAI4GJdAsK6ky****:xuoOmluoxif4R**** > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
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-name:LTAIbZcdVCmQ****:MOk8x0y9hxQ31coh7A5e2MZEUz**** > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
mkdir /tmp/ossfs
ossfs bucket-name /tmp/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com
fusermount -u /opt/ossfs
账号配置文件的默认路径为/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
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
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
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
在/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就可以开机自动挂载了。
yum -y install supervisor
创建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
[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
systemctl start supervisord
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进程。
在使用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