如何在阿里云ecs主机上挂载oss存储,在服务器上通过本地文件系统操作OSS 上的对象?阿里云提供一个ossfs的程序,不用我们再次使用api开发,直接就能使用。步骤比较简单,按照官方文档基本可以完成。
一、准备条件
您需要有一个ecs云主机,创建Access Key和对应的OSS对象。
二、安装依赖
yum install automake gcc-c++ git libcurl-devel libxml2-devel make openssl-devel
官方文档还提供安装fuse-devel包。不过因为博主centos 6系统在安装fuse后版本是2.8.3,而ossfs必须要2.8.4以上,所以fuse需要手动安装。
下载fuse 2.8版本,地址:https://github.com/libfuse/libfuse/tree/fuse_2_8_bugfix ,不要使用最新的fuse 3的版本。
# wget https://codeload.github.com/libfuse/libfuse/zip/fuse_2_8_bugfix -O fuse_2_8_bugfix.zip # unzip fuse_2_8_bugfix.zip # cd libfuse-fuse_2_8_bugfix # ./makeconf.sh # ./configure --prefix=/usr/local/fuse # make # make install
安装后确认是否正确,命令类似如下:
# export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/local/fuse/lib/pkgconfig # ldconfig # modprobe fuse # pkg-config --modversion fuse
fuse安装成功:
三、安装ossfs
安装和文档差不多,依赖正确后一般不会出现问题。这里我手动安装在/usr/local/ossfs目录,如果需要全局使用ossfs命令在PATH加下目录即可。
# git clone https://github.com/aliyun/ossfs.git # cd ossfs # ./autogen.sh # ./configure --prefix=/usr/local/ossfs # make # make install
四、挂载卸载
将my-bucket这个bucket挂载到/tmp/ossfs目录下,AccessKeyId是faint, AccessKeySecret是123,oss endpoint是http://oss-cn-hangzhou.aliyuncs.com。
如果你是阿里云的ecs,endpoint可以使用内网地址,例如http://oss-cn-hangzhou-internal.aliyuncs.com,减少流量费用。
# echo my-bucket:faint:123 > /etc/passwd-ossfs # chmod 640 /etc/passwd-ossfs # mkdir /tmp/ossfs # ossfs my-bucket /tmp/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com
卸载
# umount /tmp/ossfs
五、优化
挂载成功后,可以和操作本地文件一样操作OSS对象了。在正式用之前最好做下优化,比如开机自动挂载、取消程序扫描这个目录。
自动挂载、修改/etc/fstab 文件,添加如下代码,保存后mount -a挂载。
/usr/local/ossfs/bin/ossfs#my-bucket /tmp/ossfs fuse _netdev,url=http://oss-cn-hangzhou.aliyuncs.com,allow_other 0 0
使用ECS挂载ossfs,如何避免因后台程序扫描文件而产生费用。修改/etc/updatedb.conf 文件,在PRUNEFS =后面加上fuse.ossfs,在PRUNEPATHS =后面加上挂载的目录。
参考连接:
https://github.com/aliyun/ossfs