搜索

搜索

阿里云将OSS挂载到ECS

[复制链接]
毕礼彪 发表于 2020-11-20 18:51:05 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 毕礼彪 于 2020-11-20 19:10 编辑

ossfs能让您在Linux系统中,将对象存储OSS的存储空间(Bucket)挂载到本地文件系统中,您能够像操作本地文件一样操作OSS的对象(Object),实现数据的共享。

建议您将ossfs运行在以下Linux环境中
CentOS 7.0及以上,8.0以下
Ubuntu 14.04及以上
fuse 2.8.4以上版本


由于低版本的Linux系统内核版本比较低,ossfs进程在运行过程中容易出现掉线或者其他问题。OSS虽然提供了低版本Linux系统的安装包,但为了保证ossfs的稳定运行,请将您的操作系统升级到上述版本。

Linux发行版
下载
Ubuntu 18.04 (x64)
Ubuntu 16.04 (x64)
Ubuntu 14.04 (x64)
CentOS 7.0 (x64)
CentOS 6.5 (x64)
以上列表中提供了常用系统的安装包,若你的系统版本不在列表中,请通过源码编译

https://github.com/aliyun/ossfs?spm=a2c4g.11186623.2.20.e0c2753fDzwAwP#ossfs


快速安装ossfs:
下载安装包。
以下载CentOS 7.0 (x64)版本为例:


安装ossfs
Ubuntu系统的安装命令:
sudo apt-get updatesudo apt-get install gdebi-coresudo gdebi your_ossfs_package
CentOS 6.5及以上系统版本的安装命令:
sudo yum localinstall your_ossfs_package
311z611047c04bdd892dbc3e16b2b2dddc5b?Signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBcHBJRCI6IjU5Mzc3MGZmODM5NjMyMDAyZTAzNThmMSIsIl9hcHBJZCI6IjU5Mzc3MGZmODM5NjMyMDAyZTAzNThmMSIsIl9vcmdhbml6YXRpb25JZCI6IjVlNThiOGZhYWVhOTIyMDAwMTcwNWNlMiIsImV4cCI6MTYwNjQ
sudo yum install --downloadonly --downloaddir=./ fuse

CentOS 5系统版本的安装命令:
sudo yum localinstall your_ossfs_package --nogpgcheck

运行ossfs

将Bucket名称以及具有此Bucket访问权限的AccessKeyId/AccessKeySecret信息存放在/etc/passwd-ossfs文件中。注意这个文件的权限必须正确设置,建议设为640。
echo my-bucket:my-access-key-id:my-access-key-secret > /etc/passwd-ossfschmod 640 /etc/passwd-ossfs


挂载ossfs
ossfs my-bucket my-mount-point -ourl=my-oss-endpoint 将Bucket挂载到指定目录
挂载示例:将杭州地域名称为bucket-test的Bucket挂载到/tmp/ossfs目录下。

echo bucket-testTAIbZcdVCmQ****:MOk8x0y9hxQ31coh7A5e2MZEUz**** > /etc/passwd-ossfschmod 640 /etc/passwd-ossfsmkdir /tmp/ossfsossfs bucket-test /tmp/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com
311z2c442fef91521804de85d385e54889e4?Signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBcHBJRCI6IjU5Mzc3MGZmODM5NjMyMDAyZTAzNThmMSIsIl9hcHBJZCI6IjU5Mzc3MGZmODM5NjMyMDAyZTAzNThmMSIsIl9vcmdhbml6YXRpb25JZCI6IjVlNThiOGZhYWVhOTIyMDAwMTcwNWNlMiIsImV4cCI6MTYwNjQ


卸载ossfs
如果您不希望继续挂载此Bucket,您可以将其卸载。
fusermount -u /tmp/ossfs

安装依赖库
Ubuntu 14.04:
sudo apt-get install automake autotools-dev g++ git libcurl4-gnutls-dev libfuse-dev libssl-dev libxml2-dev make pkg-config
CentOS 7.0:
sudo yum install automake gcc-c++ git libcurl-devel libxml2-devel fuse-devel make openssl-devel


安装ossfs
接下来创建一个 Linux 的 ECS 实例和一个 OSS Bucke,创建的 Bucket 是张家口的,所以必须保证 ECS 的地域和 Bucke 地域一致,本次是测试源码安装,所以没有选择可以直接安装 ossfs 的系统版本,而是选择了 centos 8.2 X64 系统演示


首先从 GitHub 下载源码和代码安装工具:
[root@libiao ~]# git clone https://github.com/aliyun/ossfs.git
[root@libiao ~]# cd ossfs/ 进入 GitHub 下载的目录
[root@libiao ossfs]# ./autogen.sh 执行脚本
311z18feb3592312f3734b011d6c23650066?Signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBcHBJRCI6IjU5Mzc3MGZmODM5NjMyMDAyZTAzNThmMSIsIl9hcHBJZCI6IjU5Mzc3MGZmODM5NjMyMDAyZTAzNThmMSIsIl9vcmdhbml6YXRpb25JZCI6IjVlNThiOGZhYWVhOTIyMDAwMTcwNWNlMiIsImV4cCI6MTYwNjQ
[root@libiao ossfs]# ./configure 开始安装
[root@libiao ossfs]# make && make install 编译并将编译好的内容拷贝到指定的目录中去


运行ossfs
配置账号访问信息:
将Bucket名称以及具有此Bucket访问权限的AccessKeyId/AccessKeySecret信息存放在/etc/passwd-ossfs文件中。注意这个文件的权限必须正确设置,建议设为640。

[root@libiao ossfs]# echo libiaoaTAI4G2PtT5Ej59U********:4q9uGbw9uoYxChY2cGnq7z******** > /etc/passwd-ossfs

[root@libiao ossfs]# chmod 640 /etc/passwd-ossfs 给 /etc/passwd-ossfs 文件 640 权限
[root@libiao ossfs]# mkdir /libiao 创建一个挂载目录

现在,我们需要去 Bucket 上调取一些信息,进入 OSS 控制台,找到需要挂载的 Bucket 点击进入
311z8e3a44cd10dd13194a9217eeb03c2ef9?Signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBcHBJRCI6IjU5Mzc3MGZmODM5NjMyMDAyZTAzNThmMSIsIl9hcHBJZCI6IjU5Mzc3MGZmODM5NjMyMDAyZTAzNThmMSIsIl9vcmdhbml6YXRpb25JZCI6IjVlNThiOGZhYWVhOTIyMDAwMTcwNWNlMiIsImV4cCI6MTYwNjQ

在概括中,找到 ECS 内网的 Endpoint 并且复制下来,当然也可以走外网访问,但是这样一来可能会因为网络的延迟而造成卡顿。
311za88ed071f9222bb14ab7c0a9e21d44b9?Signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBcHBJRCI6IjU5Mzc3MGZmODM5NjMyMDAyZTAzNThmMSIsIl9hcHBJZCI6IjU5Mzc3MGZmODM5NjMyMDAyZTAzNThmMSIsIl9vcmdhbml6YXRpb25JZCI6IjVlNThiOGZhYWVhOTIyMDAwMTcwNWNlMiIsImV4cCI6MTYwNjQ

挂载ossfs
将名为 libiaoa 的 Bucket 挂载到本地 /libiao 目录下, -ourl= 后边写上刚刚复制的 Bucket Endpoint:
[root@libiao ossfs]# ossfs libiaoa /libiao/ -ourl=http://oss-cn-zhangjiakou-internal.aliyuncs.com
[root@libiao ossfs]# cd /libiao/ 进入挂载的目录
[root@libiao libiao]# ls 查看一下目录下的内容发现,已经和 Bucket 一致了
311zaf5fa646fea42a8c012521049a42cb34?Signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBcHBJRCI6IjU5Mzc3MGZmODM5NjMyMDAyZTAzNThmMSIsIl9hcHBJZCI6IjU5Mzc3MGZmODM5NjMyMDAyZTAzNThmMSIsIl9vcmdhbml6YXRpb25JZCI6IjVlNThiOGZhYWVhOTIyMDAwMTcwNWNlMiIsImV4cCI6MTYwNjQ

进入阿里云 OSS Bucket 里名为 libiaoa 的 Bucket 中,点击文件管理,发现内容一致。
311zc9e07794850e721f491d9e06ac665d19?Signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBcHBJRCI6IjU5Mzc3MGZmODM5NjMyMDAyZTAzNThmMSIsIl9hcHBJZCI6IjU5Mzc3MGZmODM5NjMyMDAyZTAzNThmMSIsIl9vcmdhbml6YXRpb25JZCI6IjVlNThiOGZhYWVhOTIyMDAwMTcwNWNlMiIsImV4cCI6MTYwNjQ

但是就目前的情况而言,只能说是在 Linux 中可以看到 Bucket 中的内容,而回想一下我们的目的是将 Bucket 挂载到 ECS 实例中实现读写,那么废这么大劲却只能做到看似乎不太满足我们的需求,所以我们还应该检测一下写的能力。

[root@libiao libiao]# touch 2.txt 创建一个检验的文件
[root@libiao libiao]# cat /etc/passwd > 2.txt 随便找个有内容的文件将其内容导到新文件

现在我们刷新 Bucket,发现已经多出来刚创建的文件,并且它是有大小的。
311z94f844dfb3c64b9e1d4cabefa0c14555?Signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBcHBJRCI6IjU5Mzc3MGZmODM5NjMyMDAyZTAzNThmMSIsIl9hcHBJZCI6IjU5Mzc3MGZmODM5NjMyMDAyZTAzNThmMSIsIl9vcmdhbml6YXRpb25JZCI6IjVlNThiOGZhYWVhOTIyMDAwMTcwNWNlMiIsImV4cCI6MTYwNjQ

卸载ossfs
umount /tmp/ossfs # root
userfusermount -u /tmp/ossfs # non-root user

目前还有一个问题,那就是关机了怎么办?有没有办法开机就挂载?

设置开机自动挂载。
针对不同的系统版本,设置开机自动挂载ossfs的方式有所不同。

Ubuntu 14.04和CentOS 6.5系统版本通过fstab的方式自动挂载
在/etc/fstab中加入如下命令:
ossfs#bucket_name mount_point fuse _netdev,url=url,allow_other 0 0
保存/etc/fstab文件。执行mount -a命令,如果没有报错,则说明设置正常。

上一步执行完成后,Ubuntu 14.04就能自动挂载了。

CentOS 6.5还需要执行如下命令:
chkconfig netfs on


CentOS 7.0及以上的系统通过开机自动启动脚本进行挂载:


设置开机启动
[root@libiao libiao]# vim /etc/init.d/ossfs 开机自动启动脚本挂载,创建脚本
将之前挂载到本地的命令,直接抄过来,记得千万要指明要使用的解释器


#! /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 libiaoa /libiao/ -ourl=http://oss-cn-zhangjiakou-internal.aliyuncs.com


[root@libiao libiao]# chmod a+x /etc/init.d/ossfs 给予 /etc/init.d/ossfs 目录合适的权限

命令执行完成后,您可以尝试执行该脚本,如果脚本文件内容无误,那么此时OSS中的Bucket已经挂载到您指定的目录下了。
把ossfs启动脚本作为其他服务,开机自动启动:
[root@libiao libiao]# chkconfig ossfs on

重启服务器,进入挂载的目录,尝试查看目录下内容和写入一个新的文件用来测试。
 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

排行榜
作者专栏

教程灵感就看DEAN

优质教程每日更新

Dean17.com旗下教程网站

  • 官网微信

    每天官微五分钟一年萌新变大神

    扫码关注
  • 新浪微博

    每天50篇设计干货30万设计师关注!

    访问新浪微博
  • 官方客服
765W

Design新媒体等你来关注

Copyright   ©2015-2016  云萌主论坛Powered by©Discuz!技术支持:迪恩网络     ( 京ICP备18052714号 )