对于原来需要直接读写本地文件的应用程序,为了让应用程序能在不作修改的情况下直接访问对象存储OSS的数据,您可以使用ossfs将OSS的Bucket挂载到Linux系统中,并将其映射到本地目录,从而能够像处理本地文件那样直接操作OSS中的数据,实现文件共享。
前提条件
快速安装
安装ossfs。
Ubuntu系统
以Ubuntu 16.04 (x64)版本为例,依次执行以下命令安装ossfs。
sudo wget https://gosspublic.alicdn.com/ossfs/ossfs_1.91.3_ubuntu16.04_amd64.deb sudo apt-get update sudo apt-get install gdebi-core sudo gdebi ossfs_1.91.3_ubuntu16.04_amd64.deb
CentOS系统/Anolis系统
CentOS系统/Anolis系统
以CentOS 7.0(x64)版本为例,安装命令如下:
sudo wget https://gosspublic.alicdn.com/ossfs/ossfs_1.91.3_centos7.0_x86_64.rpm sudo yum install ossfs_1.91.3_centos7.0_x86_64.rpm
对于使用yum安装rpm包的客户端,如果客户端节点网络环境特殊,无法直接使用yum下载依赖包。您可以在网络正常的、相同版本操作系统的节点上,使用yum下载依赖包并拷贝到网络特殊的节点。例如,ossfs需要依赖fuse 2.8.4以上版本,可使用如下命令,下载yum源中最新的fuse到本地:
sudo yum install --downloadonly --downloaddir=./ fuse
重要如果需要下载其他依赖包,请将fuse换成对应包的名称。
ossfs通过查询/etc/mime.types中的内容来设置文件的Content-Type,如果您希望上传文件的Content-Type和文件扩展名匹配,您需要添加mime.types文件。
如果您不添加mime.types文件,ossfs默认将上传文件的Content-Type设置为application/octet-stream。
您可以通过以下命令添加 mime.types 文件。
Ubuntu系统
您可以通过以下命令添加mime.types文件。
sudo apt-get install mime-support
CentOS系统/Anolis系统
您可以通过以下命令添加mime.types文件。
sudo yum install mailcap
挂载访问
选择需要进行本地挂载的Bucket。
说明避免将低频访问或已启用归档直读功能的Bucket作为挂载目标。这两种类型Bucket在接收上传文件时,可能出现两次上传请求。初次上传生成一个大小为0的占位文件,随后再次上传实际数据作为文件存储在Bucket。由于涉及的文件存储类型为低频访问或归档,即使是0字节的占位文件也会根据相应的存储类别(低频或归档)计费规则,即最少按64 KB数据量计算30天的存储费用。这可能导致用户在不知情的情况下额外承担存储费用。
配置账号访问信息。
将Bucket名称以及具有该Bucket访问权限的RAM用户的AccessKey ID和AccessKey Secret信息存放在/etc/passwd-ossfs文件中,并设置文件的权限为640。
sudo sh -c 'echo <BucketName>:<yourAccessKeyId>:<yourAccessKeySecret> > /etc/passwd-ossfs' ### root 用户可使用以下命令:### # echo <BucketName>:<yourAccessKeyId>:<yourAccessKeySecret> > /etc/passwd-ossfs sudo chmod 640 /etc/passwd-ossfs
BucketName、yourAccessKeyId、yourAccessKeySecret请按需替换为您实际的Bucket名称、AccessKey ID和AccessKey Secret,例如:
sudo sh -c 'echo bucket-test:LTAI************:MOk8x0y9hx******************** > /etc/passwd-ossfs' sudo chmod 640 /etc/passwd-ossfs
将Bucket挂载到指定目录。
说明为保障ossfs挂载后的读写性能,建议参考ossfs 1.91.2和1.91.3版本新功能介绍中的建议,选择合适的挂载参数。
为保障ossfs挂载后的数据访问安全,建议参考ossfs配置与挂载,正确配置账号信息和访问权限。
sudo ossfs <BucketName> <mountfolder> -o url=<Endpoint>
将杭州地域名称为
bucket-test
的Bucket挂载到/tmp/ossfs
目录下的示例如下:sudo mkdir /tmp/ossfs sudo ossfs bucket-test /tmp/ossfs -o url=http://oss-cn-hangzhou-internal.aliyuncs.com
重要为降低读取数据产生的流量费用,建议您通过阿里云ECS部署ossfs,并通过-o url指定内网Endpoint的形式访问目标Bucket(内网Endpoint示例值为http://oss-cn-hangzhou-internal.aliyuncs.com)。使用内网Endpoint的前提是ECS必须和目标Bucket处于相同地域。有关OSS内网域名的更多信息,请参见OSS访问域名、数据中心、开放端口。
您可以像访问本地文件系统一样读取Bucket中的对象。
查看文件列表。
sudo ls -lh /tmp/ossfs
说明元数据操作(例如list directory)需要远程访问OSS服务器,存在网络延迟。
拷贝文件。
sudo cp /tmp/ossfs/bird.jpeg /root
将OSS中的
bird.jpeg
拷贝到/root
目录中。新增文件。
sudo cp /root/forest.jpeg /tmp/ossfs
即可将本机的
forest.jpeg
添加到挂载目录,并同步到OSS远程。说明如果您因意外中断了文件上传的过程且未继续完成该文件的上传,则已上传的部分会以碎片(Part)的形式存储在Bucket中。如果您不再需要这些Part,建议您通过以下方式删除,以免产生额外的存储费用。
手动删除Part,请参见删除碎片。
通过生命周期规则自动删除Part,请参见基于最后一次修改时间的生命周期规则。
如果您不希望继续挂载此Bucket,您可以将其卸载。
sudo fusermount -u /tmp/ossfs
相关文档
更多关于ossfs挂载配置的内容请参见ossfs配置与挂载。
更多关于ossfs命令的参数选项请参见ossfs挂载选项说明。
ossfs使用过程中的常见问题请参见ossfs常见问题。