ECS服务器挂载oss存储

使用限制

ossfs使用有以下限制:

不支持挂载归档型Bucket。
编辑已上传文件会导致文件被重新上传。
元数据操作,例如**list directory**,因为需要远程访问OSS服务器,所以性能较差。
重命名文件/文件夹可能会出错。若操作失败,可能会导致数据不一致。
不适合高并发读/写的场景。
不支持hard link。

注意事项

1、在服务器上执行读写操作时,web端可执行删除操作,服务器保存则存在,不保存则删除
2、在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、开机自动挂载目录

  1. 在/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
    
  2. 为新建立的ossfs脚本赋予可执行权限:

    chmod a+x /etc/init.d/ossfs
    

    命令执行完成后,您可以尝试执行该脚本,如果脚本文件内容无误,那么此时OSS中的Bucket已经挂载到您指定的目录下了。

  3. 把ossfs启动脚本作为其他服务,开机自动启动:

    chkconfig ossfs on
    
  4. 执行上述步骤后,ossfs就可以开机自动挂载了。

6、使用Supervisor启动ossfs

1、安装supervisor。
yum -y install supervisor
2、创建ossfs的启动脚本。
  1. 创建start_ossfs.sh文件。

    mkdir /root/ossfs_scripts
    vim /root/ossfs_scripts/start_ossfs.sh
    
  2. 以下内容写入启动脚本。

    # 卸载
    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

l.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

猜你喜欢

转载自blog.csdn.net/weixin_44033360/article/details/107251776